@@ -179,6 +179,7 @@ function annotate(fn, strictDi, name) {
179
179
* Return an instance of the service.
180
180
*
181
181
* @param {string } name The name of the instance to retrieve.
182
+ * @param {string } caller An optional string to provide the origin of the function call for error messages.
182
183
* @return {* } The instance.
183
184
*/
184
185
@@ -629,14 +630,17 @@ function createInjector(modulesToLoad, strictDi) {
629
630
}
630
631
} ,
631
632
providerInjector = ( providerCache . $injector =
632
- createInternalInjector ( providerCache , function ( ) {
633
+ createInternalInjector ( providerCache , function ( serviceName , caller ) {
634
+ if ( angular . isString ( caller ) ) {
635
+ path . push ( caller ) ;
636
+ }
633
637
throw $injectorMinErr ( 'unpr' , "Unknown provider: {0}" , path . join ( ' <- ' ) ) ;
634
638
} ) ) ,
635
639
instanceCache = { } ,
636
640
instanceInjector = ( instanceCache . $injector =
637
- createInternalInjector ( instanceCache , function ( servicename ) {
638
- var provider = providerInjector . get ( servicename + providerSuffix ) ;
639
- return instanceInjector . invoke ( provider . $get , provider , undefined , servicename ) ;
641
+ createInternalInjector ( instanceCache , function ( serviceName , caller ) {
642
+ var provider = providerInjector . get ( serviceName + providerSuffix , caller ) ;
643
+ return instanceInjector . invoke ( provider . $get , provider , undefined , serviceName ) ;
640
644
} ) ) ;
641
645
642
646
@@ -671,7 +675,7 @@ function createInjector(modulesToLoad, strictDi) {
671
675
672
676
function enforceReturnValue ( name , factory ) {
673
677
return function enforcedReturnValue ( ) {
674
- var result = instanceInjector . invoke ( factory , this , undefined , name ) ;
678
+ var result = instanceInjector . invoke ( factory , this ) ;
675
679
if ( isUndefined ( result ) ) {
676
680
throw $injectorMinErr ( 'undef' , "Provider '{0}' must return a value from $get factory method." , name ) ;
677
681
}
@@ -766,7 +770,7 @@ function createInjector(modulesToLoad, strictDi) {
766
770
767
771
function createInternalInjector ( cache , factory ) {
768
772
769
- function getService ( serviceName ) {
773
+ function getService ( serviceName , caller ) {
770
774
if ( cache . hasOwnProperty ( serviceName ) ) {
771
775
if ( cache [ serviceName ] === INSTANTIATING ) {
772
776
throw $injectorMinErr ( 'cdep' , 'Circular dependency found: {0}' ,
@@ -777,7 +781,7 @@ function createInjector(modulesToLoad, strictDi) {
777
781
try {
778
782
path . unshift ( serviceName ) ;
779
783
cache [ serviceName ] = INSTANTIATING ;
780
- return cache [ serviceName ] = factory ( serviceName ) ;
784
+ return cache [ serviceName ] = factory ( serviceName , caller ) ;
781
785
} catch ( err ) {
782
786
if ( cache [ serviceName ] === INSTANTIATING ) {
783
787
delete cache [ serviceName ] ;
@@ -809,7 +813,7 @@ function createInjector(modulesToLoad, strictDi) {
809
813
args . push (
810
814
locals && locals . hasOwnProperty ( key )
811
815
? locals [ key ]
812
- : getService ( key )
816
+ : getService ( key , serviceName )
813
817
) ;
814
818
}
815
819
if ( isArray ( fn ) ) {
0 commit comments