Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(35)

Unified Diff: pkg/analyzer/tool/summary/generate.dart

Issue 1585973004: Use constructor args in favor of summary "encode" functions. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/analyzer/tool/summary/build_sdk_summary.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/tool/summary/generate.dart
diff --git a/pkg/analyzer/tool/summary/generate.dart b/pkg/analyzer/tool/summary/generate.dart
index 6bb00683572dbbf2ae5fd36505e3f47244448530..38bdfc7bb3ebc1f7d216e3d93c5597986f626572 100644
--- a/pkg/analyzer/tool/summary/generate.dart
+++ b/pkg/analyzer/tool/summary/generate.dart
@@ -273,9 +273,7 @@ class _CodeGenerator {
out();
});
for (var cls in _idl.classes.values) {
- List<String> builderParams = _generateBuilder(cls);
- out();
- _generateEncodeFunction(cls, builderParams);
+ _generateBuilder(cls);
out();
_generateInterface(cls);
out();
@@ -295,11 +293,11 @@ class _CodeGenerator {
return JSON.encode(s);
}
- List<String> _generateBuilder(idlModel.ClassDeclaration cls) {
+ void _generateBuilder(idlModel.ClassDeclaration cls) {
String name = cls.name;
String builderName = name + 'Builder';
String mixinName = '_${name}Mixin';
- List<String> builderParams = <String>[];
+ List<String> constructorParams = <String>[];
out('class $builderName extends Object with $mixinName '
'implements $name {');
indent(() {
@@ -312,9 +310,6 @@ class _CodeGenerator {
String typeStr = encodedType(type);
out('$typeStr _$fieldName;');
}
- // Generate constructor.
- out();
- out('$builderName();');
// Generate getters and setters.
for (idlModel.FieldDeclaration field in cls.fields) {
String fieldName = field.name;
@@ -326,7 +321,7 @@ class _CodeGenerator {
out('${dartType(field.type)} get $fieldName => _$fieldName$defSuffix;');
out();
outDoc(field.documentation);
- builderParams.add('$typeStr $fieldName');
+ constructorParams.add('$typeStr $fieldName');
out('void set $fieldName($typeStr _value) {');
indent(() {
String stateFieldName = '_' + fieldName;
@@ -335,6 +330,15 @@ class _CodeGenerator {
});
out('}');
}
+ // Generate constructor.
+ out();
+ out('$builderName({${constructorParams.join(', ')}})');
+ for (int i = 0; i < cls.fields.length; i++) {
+ idlModel.FieldDeclaration field = cls.fields[i];
+ String prefix = i == 0 ? ' : ' : ' ';
+ String suffix = i == cls.fields.length - 1 ? ';' : ',';
+ out('${prefix}_${field.name} = ${field.name}$suffix');
+ }
// Generate finish.
if (cls.isTopLevel) {
out();
@@ -434,23 +438,6 @@ class _CodeGenerator {
out('}');
});
out('}');
- return builderParams;
- }
-
- void _generateEncodeFunction(
- idlModel.ClassDeclaration cls, List<String> builderParams) {
- String className = cls.name;
- String builderName = className + 'Builder';
- out('$builderName encode$className({${builderParams.join(', ')}}) {');
- indent(() {
- out('$builderName builder = new $builderName();');
- for (idlModel.FieldDeclaration field in cls.fields) {
- String fieldName = field.name;
- out('builder.$fieldName = $fieldName;');
- }
- out('return builder;');
- });
- out('}');
}
void _generateImpl(idlModel.ClassDeclaration cls) {
« no previous file with comments | « pkg/analyzer/tool/summary/build_sdk_summary.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698