@@ -176,6 +176,7 @@ function annotate(fn, strictDi, name) {
176
176
* Return an instance of the service.
177
177
*
178
178
* @param {string } name The name of the instance to retrieve.
179
+ * @param {string } caller An optional string to provide the origin of the function call for error messages.
179
180
* @return {* } The instance.
180
181
*/
181
182
@@ -622,14 +623,17 @@ function createInjector(modulesToLoad, strictDi) {
622
623
}
623
624
} ,
624
625
providerInjector = ( providerCache . $injector =
625
- createInternalInjector ( providerCache , function ( ) {
626
+ createInternalInjector ( providerCache , function ( serviceName , caller ) {
627
+ if ( angular . isString ( caller ) ) {
628
+ path . push ( caller ) ;
629
+ }
626
630
throw $injectorMinErr ( 'unpr' , "Unknown provider: {0}" , path . join ( ' <- ' ) ) ;
627
631
} ) ) ,
628
632
instanceCache = { } ,
629
633
instanceInjector = ( instanceCache . $injector =
630
- createInternalInjector ( instanceCache , function ( servicename ) {
631
- var provider = providerInjector . get ( servicename + providerSuffix ) ;
632
- return instanceInjector . invoke ( provider . $get , provider , undefined , servicename ) ;
634
+ createInternalInjector ( instanceCache , function ( serviceName , caller ) {
635
+ var provider = providerInjector . get ( serviceName + providerSuffix , caller ) ;
636
+ return instanceInjector . invoke ( provider . $get , provider , undefined , serviceName ) ;
633
637
} ) ) ;
634
638
635
639
@@ -759,7 +763,7 @@ function createInjector(modulesToLoad, strictDi) {
759
763
760
764
function createInternalInjector ( cache , factory ) {
761
765
762
- function getService ( serviceName ) {
766
+ function getService ( serviceName , caller ) {
763
767
if ( cache . hasOwnProperty ( serviceName ) ) {
764
768
if ( cache [ serviceName ] === INSTANTIATING ) {
765
769
throw $injectorMinErr ( 'cdep' , 'Circular dependency found: {0}' ,
@@ -770,7 +774,7 @@ function createInjector(modulesToLoad, strictDi) {
770
774
try {
771
775
path . unshift ( serviceName ) ;
772
776
cache [ serviceName ] = INSTANTIATING ;
773
- return cache [ serviceName ] = factory ( serviceName ) ;
777
+ return cache [ serviceName ] = factory ( serviceName , caller ) ;
774
778
} catch ( err ) {
775
779
if ( cache [ serviceName ] === INSTANTIATING ) {
776
780
delete cache [ serviceName ] ;
@@ -802,7 +806,7 @@ function createInjector(modulesToLoad, strictDi) {
802
806
args . push (
803
807
locals && locals . hasOwnProperty ( key )
804
808
? locals [ key ]
805
- : getService ( key )
809
+ : getService ( key , serviceName )
806
810
) ;
807
811
}
808
812
if ( isArray ( fn ) ) {
0 commit comments