File tree Expand file tree Collapse file tree 7 files changed +50
-20
lines changed
lib/src/transform/directive_metadata_linker
directive_metadata_linker Expand file tree Collapse file tree 7 files changed +50
-20
lines changed Original file line number Diff line number Diff line change @@ -65,7 +65,9 @@ bool _isNotDartDirective(dynamic model) => !isDartCoreUri(model.uri);
6565/// associated `.ng_deps.json` file, if one exists.
6666Future <Map <String , String >> _processNgImports (NgDepsModel model,
6767 AssetReader reader, AssetId assetId, UrlResolver resolver) async {
68- final importsAndExports = new List .from (model.imports)..addAll (model.exports);
68+ final importsAndExports =
69+ new List .from (model.imports.where ((i) => ! i.isDeferred))
70+ ..addAll (model.exports);
6971 final retVal = < String , String > {};
7072 final assetUri = toAssetUri (assetId);
7173 return Future
Original file line number Diff line number Diff line change @@ -164,6 +164,24 @@ void allTests() {
164164 expect (linkedImport.isNgDeps).toBeTrue ();
165165 expect (linkedImport.prefix.startsWith ('i' )).toBeTrue ();
166166 });
167+
168+ it ('should not chain `deferred` libraries.' , () async {
169+ fooNgMeta.ngDeps
170+ ..libraryUri = 'test.foo'
171+ ..imports.add (new ImportModel ()
172+ ..uri = 'bar.dart'
173+ ..isDeferred = true
174+ ..prefix = 'dep' );
175+ barNgMeta.ngDeps.libraryUri = 'test.bar' ;
176+ updateReader ();
177+
178+ var linked = (await _testLink (reader, fooAssetId)).ngDeps;
179+ expect (linked).toBeNotNull ();
180+ var linkedImport = linked.imports.firstWhere (
181+ (i) => i.uri.endsWith ('bar.ng_deps.dart' ),
182+ orElse: () => null );
183+ expect (linkedImport).toBeNull ();
184+ });
167185 });
168186}
169187
Original file line number Diff line number Diff line change @@ -179,14 +179,15 @@ void allTests() {
179179void _testDeferredRewriter () {
180180 var inputs = {
181181 'a|web/bar.dart' : 'deferred_files/bar.dart' ,
182+ 'a|web/dep.dart' : 'deferred_files/dep.dart' ,
182183 'a|web/index.dart' : 'deferred_files/index.dart'
183184 };
184185 inputs.addAll (commonInputs);
185186 inputs.keys.forEach ((k) => inputs[k] = _readFile (inputs[k]));
186187 var outputs = {
187188 'a|web/bar.ng_deps.dart' :
188189 _readFile ('deferred_files/expected/bar.ng_deps.dart' ),
189- 'a|web/bar.dart' : _readFile ( 'deferred_files/expected/bar.dart' ) ,
190+ 'a|web/bar.dart' : deferredOuts.barContents ,
190191 'a|web/index.dart' : deferredOuts.indexContents
191192 };
192193 testPhases (
Original file line number Diff line number Diff line change @@ -2,7 +2,7 @@ library bar;
22
33import 'package:angular2/src/core/metadata.dart' ;
44
5- import 'deps/my_dep .dart' deferred as dep;
5+ import 'dep .dart' deferred as dep;
66
77@Component (selector: '[soup]' )
88@View (template: '' )
Original file line number Diff line number Diff line change 1+ library dep;
2+
3+ import 'package:angular2/src/core/metadata.dart' ;
4+
5+ @Injectable ()
6+ void doImmediateThing () {}
Load Diff This file was deleted.
Original file line number Diff line number Diff line change @@ -16,3 +16,23 @@ void main() {
1616 });
1717}
1818''' ;
19+
20+ const barContents = '''
21+ library bar;
22+
23+ import 'package:angular2/src/core/metadata.dart';
24+
25+ import 'dep.ng_deps.dart' deferred as dep;
26+
27+ @Component(selector: '[soup]')
28+ @View(template: '')
29+ class MyComponent {
30+ void doDeferredThing() {
31+ dep.loadLibrary().then((_) {dep.initReflector();}).then((_) {
32+ dep.doImmediateThing();
33+ });
34+ }
35+ }
36+
37+ void execImmediate() {}
38+ ''' ;
You can’t perform that action at this time.
0 commit comments