Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Commit e3e8813

Browse files
taralxIgorMinar
authored andcommitted
refactor($injector): move $injector into the providerCache
Better than special-casing '$injector' in createInjector.
1 parent 6e2d971 commit e3e8813

File tree

2 files changed

+20
-14
lines changed

2 files changed

+20
-14
lines changed

src/auto/injector.js

+5-6
Original file line numberDiff line numberDiff line change
@@ -410,9 +410,10 @@ function createInjector(modulesToLoad) {
410410
decorator: decorator
411411
}
412412
},
413-
providerInjector = createInternalInjector(providerCache, function() {
414-
throw Error("Unknown provider: " + path.join(' <- '));
415-
}),
413+
providerInjector = (providerCache.$injector =
414+
createInternalInjector(providerCache, function() {
415+
throw Error("Unknown provider: " + path.join(' <- '));
416+
})),
416417
instanceCache = {},
417418
instanceInjector = (instanceCache.$injector =
418419
createInternalInjector(instanceCache, function(servicename) {
@@ -489,9 +490,7 @@ function createInjector(modulesToLoad) {
489490
try {
490491
for(var invokeQueue = moduleFn._invokeQueue, i = 0, ii = invokeQueue.length; i < ii; i++) {
491492
var invokeArgs = invokeQueue[i],
492-
provider = invokeArgs[0] == '$injector'
493-
? providerInjector
494-
: providerInjector.get(invokeArgs[0]);
493+
provider = providerInjector.get(invokeArgs[0]);
495494

496495
provider[invokeArgs[1]].apply(provider, invokeArgs[2]);
497496
}

test/auto/injectorSpec.js

+15-8
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@
33
describe('injector', function() {
44
var providers;
55
var injector;
6+
var providerInjector;
67

7-
beforeEach(module(function($provide) {
8+
beforeEach(module(function($provide, $injector) {
89
providers = function(name, factory, annotations) {
910
$provide.factory(name, extend(factory, annotations||{}));
1011
};
12+
providerInjector = $injector;
1113
}));
1214
beforeEach(inject(function($injector){
1315
injector = $injector;
@@ -72,6 +74,11 @@ describe('injector', function() {
7274
});
7375

7476

77+
it('should create a new $injector for the run phase', inject(function($injector) {
78+
expect($injector).not.toBe(providerInjector);
79+
}));
80+
81+
7582
describe('invoke', function() {
7683
var args;
7784

@@ -535,26 +542,26 @@ describe('injector', function() {
535542

536543

537544
it('should decorate the missing service error with module name', function() {
538-
angular.module('TestModule', [], function($injector) {});
545+
angular.module('TestModule', [], function(xyzzy) {});
539546
expect(function() {
540547
createInjector(['TestModule']);
541-
}).toThrow('Unknown provider: $injector from TestModule');
548+
}).toThrow('Unknown provider: xyzzy from TestModule');
542549
});
543550

544551

545552
it('should decorate the missing service error with module function', function() {
546-
function myModule($injector){}
553+
function myModule(xyzzy){}
547554
expect(function() {
548555
createInjector([myModule]);
549-
}).toThrow('Unknown provider: $injector from ' + myModule);
556+
}).toThrow('Unknown provider: xyzzy from ' + myModule);
550557
});
551558

552559

553560
it('should decorate the missing service error with module array function', function() {
554-
function myModule($injector){}
561+
function myModule(xyzzy){}
555562
expect(function() {
556-
createInjector([['$injector', myModule]]);
557-
}).toThrow('Unknown provider: $injector from ' + myModule);
563+
createInjector([['xyzzy', myModule]]);
564+
}).toThrow('Unknown provider: xyzzy from ' + myModule);
558565
});
559566

560567

0 commit comments

Comments
 (0)