Skip to content

Commit e68f3c7

Browse files
author
Matthew Hill
committed
fix(src/resolve): use injector's strictDi value in calls to .annotate
1 parent 58eef1f commit e68f3c7

File tree

3 files changed

+31
-3
lines changed

3 files changed

+31
-3
lines changed

src/resolve/resolvable.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,12 @@ import {ResolveContext} from "./resolveContext";
2323
*/
2424
export class Resolvable {
2525
constructor(name: string, resolveFn: Function, preResolvedData?: any) {
26-
extend(this, { name, resolveFn, deps: services.$injector.annotate(resolveFn), data: preResolvedData });
26+
extend(this, {
27+
name,
28+
resolveFn,
29+
deps: services.$injector.annotate(resolveFn, services.$injector.strictDi),
30+
data: preResolvedData
31+
});
2732
}
2833

2934
name: string;

src/resolve/resolveContext.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ export class ResolveContext {
7373

7474
/** Inspects a function `fn` for its dependencies. Returns an object containing any matching Resolvables */
7575
getResolvablesForFn(fn: IInjectable): { [key: string]: Resolvable } {
76-
let deps = services.$injector.annotate(<Function> fn);
76+
let deps = services.$injector.annotate(<Function> fn, services.$injector.strictDi);
7777
return <any> pick(this.getResolvables(), deps);
7878
}
7979

test/resolveSpec.ts

+24-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ beforeEach(function () {
5454
O: { resolve: { _O: function(_O2) { return _O2 + "O"; }, _O2: function(_O) { return _O + "O2"; } } },
5555
P: { resolve: { $state: function($state) { return $state } },
5656
Q: { resolve: { _Q: function($state) { counts._Q++; vals._Q = $state; return "foo"; }}}
57-
}
57+
},
58+
PAnnotated: { resolve: { $state: ['$state', function($state) { return $state }] } }
5859
};
5960

6061
var stateProps = ["resolve", "resolvePolicy"];
@@ -95,6 +96,28 @@ describe('Resolvables system:', function () {
9596
asyncCount = 0;
9697
}));
9798

99+
it('should throw when creating a resolvable with an unannotated fn and strictDi mode on', inject(function ($injector) {
100+
let originalStrictDi = $injector.strictDi;
101+
$injector.strictDi = true;
102+
103+
expect(() => {
104+
makePath([ "P" ]);
105+
}).toThrowError(/strictdi/);
106+
107+
$injector.strictDi = originalStrictDi;
108+
});
109+
110+
it('should not throw when creating a resolvable with an annotated fn and strictDi mode on', inject(function ($injector) {
111+
let originalStrictDi = $injector.strictDi;
112+
$injector.strictDi = true;
113+
114+
expect(() => {
115+
makePath([ "PAnnotated" ]);
116+
}).not.toThrowError(/strictdi/);
117+
118+
$injector.strictDi = originalStrictDi;
119+
});
120+
98121
describe('ResolveContext.resolvePathElement()', function () {
99122
it('should resolve all resolves in a PathElement', inject(function ($q) {
100123
let path = makePath([ "A" ]);

0 commit comments

Comments
 (0)