Skip to content

Commit 15376a6

Browse files
author
Tim Blasi
committed
feat(dart/transform): Dedup getters, setters, & methods
Dedup the getters, setters, and methods generated by the transformer when compiling a template. Run `dartformat` over the transform code.
1 parent 867705b commit 15376a6

File tree

6 files changed

+61
-7
lines changed

6 files changed

+61
-7
lines changed

modules/angular2/src/transform/template_compiler/directive_metadata_reader.dart

+2-1
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,8 @@ class _DirectiveMetadataVisitor extends Object
147147
return;
148148
}
149149
for (MapLiteralEntry entry in (hostPropertyValue as MapLiteral).entries) {
150-
var sKey = _expressionToString(entry.key, 'Directive#hostProperties keys');
150+
var sKey =
151+
_expressionToString(entry.key, 'Directive#hostProperties keys');
151152
var sVal =
152153
_expressionToString(entry.value, 'Directive#hostProperties values');
153154
meta.hostProperties[sKey] = sVal;

modules/angular2/src/transform/template_compiler/generator.dart

+6-3
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ Future<String> processTemplates(AssetReader reader, AssetId entryPoint) async {
6262
'${code.substring(codeInjectIdx)}';
6363
}
6464

65-
Iterable<String> _generateGetters(String typeName, List<String> getterNames) {
65+
Iterable<String> _generateGetters(
66+
String typeName, Iterable<String> getterNames) {
6667
// TODO(kegluneq): Include `typeName` where possible.
6768
return getterNames.map((getterName) {
6869
if (!prop.isValid(getterName)) {
@@ -74,7 +75,8 @@ Iterable<String> _generateGetters(String typeName, List<String> getterNames) {
7475
});
7576
}
7677

77-
Iterable<String> _generateSetters(String typeName, List<String> setterName) {
78+
Iterable<String> _generateSetters(
79+
String typeName, Iterable<String> setterName) {
7880
return setterName.map((setterName) {
7981
if (!prop.isValid(setterName)) {
8082
// TODO(kegluenq): Eagerly throw here once #1295 is addressed.
@@ -86,7 +88,8 @@ Iterable<String> _generateSetters(String typeName, List<String> setterName) {
8688
});
8789
}
8890

89-
Iterable<String> _generateMethods(String typeName, List<String> methodNames) {
91+
Iterable<String> _generateMethods(
92+
String typeName, Iterable<String> methodNames) {
9093
return methodNames.map((methodName) {
9194
if (!prop.isValid(methodName)) {
9295
// TODO(kegluenq): Eagerly throw here once #1295 is addressed.

modules/angular2/src/transform/template_compiler/recording_reflection_capabilities.dart

+3-3
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ import 'package:angular2/src/reflection/types.dart';
88
/// reflectively accessed at runtime.
99
class RecordingReflectionCapabilities implements ReflectionCapabilities {
1010
/// The names of all requested `getter`s.
11-
final List<String> getterNames = <String>[];
11+
final Set<String> getterNames = new Set<String>();
1212
/// The names of all requested `setter`s.
13-
final List<String> setterNames = <String>[];
13+
final Set<String> setterNames = new Set<String>();
1414
/// The names of all requested `method`s.
15-
final List<String> methodNames = <String>[];
15+
final Set<String> methodNames = new Set<String>();
1616

1717
_notImplemented(String name) => throw 'Not implemented: $name';
1818

modules/angular2/test/transform/template_compiler/all_tests.dart

+8
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,14 @@ void allTests() {
5656
_formatThenExpectEquals(output, expected);
5757
});
5858

59+
it('should not generated duplicate getters/setters', () async {
60+
var inputPath = 'template_compiler/duplicate_files/hello.ng_deps.dart';
61+
var expected = readFile(
62+
'template_compiler/duplicate_files/expected/hello.ng_deps.dart');
63+
var output = await processTemplates(reader, new AssetId('a', inputPath));
64+
_formatThenExpectEquals(output, expected);
65+
});
66+
5967
describe('DirectiveMetadataReader', () {
6068
Future<DirectiveMetadata> readMetadata(inputPath) async {
6169
var ngDeps = await parser.parse(new AssetId('a', inputPath));
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
library examples.hello_world.index_common_dart.ng_deps.dart;
2+
3+
import 'hello.dart';
4+
import 'package:angular2/angular2.dart'
5+
show bootstrap, Component, Decorator, View, NgElement;
6+
7+
var _visited = false;
8+
void initReflector(reflector) {
9+
if (_visited) return;
10+
_visited = true;
11+
reflector
12+
..registerType(HelloCmp, {
13+
'factory': () => new HelloCmp(),
14+
'parameters': const [const []],
15+
'annotations': const [
16+
const Component(selector: 'hello-app'),
17+
const View(template: '{{greeting}}, {{greeting}}')
18+
]
19+
})
20+
..registerGetters({'greeting': (o) => o.greeting})
21+
..registerSetters({'greeting': (o, v) => o.greeting = v});
22+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
library examples.hello_world.index_common_dart.ng_deps.dart;
2+
3+
import 'hello.dart';
4+
import 'package:angular2/angular2.dart'
5+
show bootstrap, Component, Decorator, View, NgElement;
6+
7+
var _visited = false;
8+
void initReflector(reflector) {
9+
if (_visited) return;
10+
_visited = true;
11+
reflector
12+
..registerType(HelloCmp, {
13+
'factory': () => new HelloCmp(),
14+
'parameters': const [const []],
15+
'annotations': const [
16+
const Component(selector: 'hello-app'),
17+
const View(template: '{{greeting}}, {{greeting}}')
18+
]
19+
});
20+
}

0 commit comments

Comments
 (0)