@@ -15,7 +15,7 @@ Future<String> createNgSettersAndGetters(
1515
1616 String code = ngDeps.code;
1717 var setters = _generateSetters (_createPropertiesMap (ngDeps));
18- var getters = _generateGetters (_createEventsMap (ngDeps));
18+ var getters = _generateGetters ( _createEventPropertiesList (ngDeps));
1919
2020 if (setters.isEmpty && getters.isEmpty) return code;
2121 var out = new StringBuffer ();
@@ -79,35 +79,36 @@ Map<String, String> _createPropertiesMap(NgDeps ngDeps) {
7979 return bindMap;
8080}
8181
82- /// Consumes the map generated by {@link _createEventsMap} to codegen getters.
83- List <String > _generateGetters (Map <String , String > bindMap) {
82+ /// Consumes the list generated by {@link _createEventPropertiesList} to codegen
83+ /// getters.
84+ List <String > _generateGetters (List <String > eventProperties) {
8485 var getters = [];
8586 // TODO(kegluneq): Include types for receivers. See #886.
86- bindMap. forEach ((getterName, eventName ) {
87- if (! prop.isValid (eventName )) {
87+ for ( var property in eventProperties ) {
88+ if (! prop.isValid (property )) {
8889 // TODO(kegluenq): Eagerly throw here once #1295 is addressed.
89- getters.add (prop.lazyInvalidGetter (eventName ));
90+ getters.add (prop.lazyInvalidGetter (property ));
9091 } else {
91- getters.add (''' '${prop .sanitize (eventName )}': (o) => o.$getterName ''' );
92+ getters.add (''' '${prop .sanitize (property )}': (o) => o.$property ''' );
9293 }
93- });
94+ }
9495 return getters;
9596}
9697
97- /// Collapses all `events` in {@link ngDeps} into a map where the keys are
98- /// the property names for the event emitters and the values are the event name .
99- Map <String , String > _createEventsMap (NgDeps ngDeps) {
98+ /// Collapses all `events` in {@link ngDeps} into a list of corresponding
99+ /// property names.
100+ List <String > _createEventPropertiesList (NgDeps ngDeps) {
100101 var visitor = new ExtractNamedExpressionVisitor ('events' );
101- var bindMap = {} ;
102+ var propertyNames = [] ;
102103 ngDeps.registeredTypes.forEach ((RegisteredType t) {
103104 visitor.bindConfig.clear ();
104105 t.annotations.accept (visitor);
105106 visitor.bindConfig.forEach ((String config) {
106107 // See comments for `Directive` in annotations_impl/annotations.ts for
107- // details on how `events` is specified.
108- var parts = config. split ( ':' ). map ((p) => p. trim ()). toList ();
109- bindMap[parts[ 0 ]] = parts.length > 1 ? parts[ 1 ] : parts[ 0 ] ;
108+ // details on how `events` is specified. We are pulling out the property
109+ // name only (everything before the first `:`).
110+ propertyNames. add (config. split ( ':' ).first. trim ()) ;
110111 });
111112 });
112- return bindMap ;
113+ return propertyNames ;
113114}
0 commit comments