@@ -23,8 +23,9 @@ import 'package:barback/barback.dart';
2323
2424import 'change_detector_codegen.dart' as change;
2525import 'compile_step_factory.dart' ;
26- import 'reflection_capabilities.dart' ;
27- import 'reflector_register_codegen.dart' as reg;
26+ import 'reflection/codegen.dart' as reg;
27+ import 'reflection/processor.dart' as reg;
28+ import 'reflection/reflection_capabilities.dart' ;
2829import 'view_definition_creator.dart' ;
2930
3031/// Reads the `.ng_deps.dart` file represented by `entryPoint` and parses any
@@ -42,23 +43,22 @@ Future<String> processTemplates(AssetReader reader, AssetId entryPoint,
4243 var extractor = new _TemplateExtractor (new DomElementSchemaRegistry (),
4344 new TemplateCloner (- 1 ), new XhrImpl (reader, entryPoint));
4445
45- var registrations = new reg.Codegen ();
46+ final processor = new reg.Processor ();
47+
4648 var changeDetectorClasses = new change.Codegen ();
4749 for (var rType in viewDefResults.viewDefinitions.keys) {
4850 var viewDefEntry = viewDefResults.viewDefinitions[rType];
49- var result = await extractor.extractTemplates (viewDefEntry.viewDef);
50- if (result == null ) continue ;
51+ var protoView = await extractor.extractTemplates (viewDefEntry.viewDef);
52+ if (protoView == null ) continue ;
5153
5254 if (generateRegistrations) {
53- // TODO(kegluneq): Generate these getters & setters based on the
54- // `ProtoViewDto` rather than querying the `ReflectionCapabilities`.
55- registrations.generate (result.recording);
55+ processor.process (viewDefEntry, protoView);
5656 }
57- if (result.protoView != null && generateChangeDetectors) {
57+ if (generateChangeDetectors) {
5858 var saved = reflector.reflectionCapabilities;
5959 reflector.reflectionCapabilities = const NullReflectionCapabilities ();
6060 var defs = getChangeDetectorDefinitions (viewDefEntry.hostMetadata,
61- result. protoView, viewDefEntry.viewDef.directives);
61+ protoView, viewDefEntry.viewDef.directives);
6262 for (var i = 0 ; i < defs.length; ++ i) {
6363 changeDetectorClasses.generate ('${rType .typeName }' ,
6464 '_${rType .typeName }_ChangeDetector$i ' , defs[i]);
@@ -67,6 +67,10 @@ Future<String> processTemplates(AssetReader reader, AssetId entryPoint,
6767 }
6868 }
6969
70+ // TODO(kegluneq): Do not hard-code `false` here once i/3436 is fixed.
71+ final registrations = new reg.Codegen (generateChangeDetectors: false );
72+ registrations.generate (processor);
73+
7074 var code = viewDefResults.ngDeps.code;
7175 if (registrations.isEmpty && changeDetectorClasses.isEmpty) return code;
7276 var importInjectIdx =
@@ -93,19 +97,16 @@ class _TemplateExtractor {
9397 ElementSchemaRegistry _schemaRegistry;
9498 TemplateCloner _templateCloner;
9599
96- _TemplateExtractor (ElementSchemaRegistry schemaRegistry,
97- TemplateCloner templateCloner, XHR xhr)
100+ _TemplateExtractor (this ._schemaRegistry, this ._templateCloner, XHR xhr)
98101 : _factory = new CompileStepFactory (new ng.Parser (new ng.Lexer ())) {
99102 var urlResolver = new UrlResolver ();
100103 var styleUrlResolver = new StyleUrlResolver (urlResolver);
101104 var styleInliner = new StyleInliner (xhr, styleUrlResolver, urlResolver);
102105
103106 _loader = new ViewLoader (xhr, styleInliner, styleUrlResolver);
104- _schemaRegistry = schemaRegistry;
105- _templateCloner = templateCloner;
106107 }
107108
108- Future <_ExtractResult > extractTemplates (ViewDefinition viewDef) async {
109+ Future <ProtoViewDto > extractTemplates (ViewDefinition viewDef) async {
109110 // Check for "imperative views".
110111 if (viewDef.template == null && viewDef.templateAbsUrl == null ) return null ;
111112
@@ -115,8 +116,7 @@ class _TemplateExtractor {
115116 // operations between saving and restoring it, otherwise we can get into
116117 // a bad state. See issue #2359 for additional context.
117118 var savedReflectionCapabilities = reflector.reflectionCapabilities;
118- var recordingCapabilities = new RecordingReflectionCapabilities ();
119- reflector.reflectionCapabilities = recordingCapabilities;
119+ reflector.reflectionCapabilities = const NullReflectionCapabilities ();
120120
121121 var pipeline = new CompilePipeline (_factory.createSteps (viewDef));
122122
@@ -130,13 +130,6 @@ class _TemplateExtractor {
130130
131131 reflector.reflectionCapabilities = savedReflectionCapabilities;
132132
133- return new _ExtractResult (recordingCapabilities, protoViewDto) ;
133+ return protoViewDto;
134134 }
135135}
136-
137- class _ExtractResult {
138- final RecordingReflectionCapabilities recording;
139- final ProtoViewDto protoView;
140-
141- _ExtractResult (this .recording, this .protoView);
142- }
0 commit comments