Index: pkg/front_end/lib/src/fasta/kernel/kernel_enum_builder.dart |
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_enum_builder.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_enum_builder.dart |
index 32636457906343390b07876bb303d0d547a9eb37..1a368778d117646b1ecadf140aa490cfe63aa679 100644 |
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_enum_builder.dart |
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_enum_builder.dart |
@@ -4,55 +4,52 @@ |
library fasta.kernel_enum_builder; |
-import 'package:kernel/ast.dart' show |
- Arguments, |
- AsyncMarker, |
- Class, |
- Constructor, |
- ConstructorInvocation, |
- DirectPropertyGet, |
- Expression, |
- Field, |
- FieldInitializer, |
- IntLiteral, |
- InterfaceType, |
- ListLiteral, |
- MapEntry, |
- MapLiteral, |
- MethodInvocation, |
- Name, |
- ProcedureKind, |
- ReturnStatement, |
- StaticGet, |
- StringLiteral, |
- ThisExpression, |
- VariableGet; |
- |
-import '../errors.dart' show |
- inputError; |
- |
-import '../modifier.dart' show |
- constMask, |
- finalMask, |
- staticMask; |
- |
-import "../source/source_class_builder.dart" show |
- SourceClassBuilder; |
- |
-import 'kernel_builder.dart' show |
- Builder, |
- EnumBuilder, |
- FormalParameterBuilder, |
- KernelConstructorBuilder, |
- KernelFieldBuilder, |
- KernelFormalParameterBuilder, |
- KernelLibraryBuilder, |
- KernelNamedTypeBuilder, |
- KernelProcedureBuilder, |
- KernelTypeBuilder, |
- LibraryBuilder, |
- MemberBuilder, |
- MetadataBuilder; |
+import 'package:kernel/ast.dart' |
+ show |
+ Arguments, |
+ AsyncMarker, |
+ Class, |
+ Constructor, |
+ ConstructorInvocation, |
+ DirectPropertyGet, |
+ Expression, |
+ Field, |
+ FieldInitializer, |
+ IntLiteral, |
+ InterfaceType, |
+ ListLiteral, |
+ MapEntry, |
+ MapLiteral, |
+ MethodInvocation, |
+ Name, |
+ ProcedureKind, |
+ ReturnStatement, |
+ StaticGet, |
+ StringLiteral, |
+ ThisExpression, |
+ VariableGet; |
+ |
+import '../errors.dart' show inputError; |
+ |
+import '../modifier.dart' show constMask, finalMask, staticMask; |
+ |
+import "../source/source_class_builder.dart" show SourceClassBuilder; |
+ |
+import 'kernel_builder.dart' |
+ show |
+ Builder, |
+ EnumBuilder, |
+ FormalParameterBuilder, |
+ KernelConstructorBuilder, |
+ KernelFieldBuilder, |
+ KernelFormalParameterBuilder, |
+ KernelLibraryBuilder, |
+ KernelNamedTypeBuilder, |
+ KernelProcedureBuilder, |
+ KernelTypeBuilder, |
+ LibraryBuilder, |
+ MemberBuilder, |
+ MetadataBuilder; |
class KernelEnumBuilder extends SourceClassBuilder |
implements EnumBuilder<KernelTypeBuilder, InterfaceType> { |
@@ -64,11 +61,19 @@ class KernelEnumBuilder extends SourceClassBuilder |
final KernelTypeBuilder stringType; |
- KernelEnumBuilder.internal(List<MetadataBuilder> metadata, String name, |
- Map<String, Builder> members, Class cls, this.constants, this.toStringMap, |
- this.intType, this.stringType, LibraryBuilder parent, int charOffset) |
+ KernelEnumBuilder.internal( |
+ List<MetadataBuilder> metadata, |
+ String name, |
+ Map<String, Builder> members, |
+ Class cls, |
+ this.constants, |
+ this.toStringMap, |
+ this.intType, |
+ this.stringType, |
+ LibraryBuilder parent, |
+ int charOffset) |
: super(metadata, 0, name, null, null, null, members, parent, null, |
- charOffset, cls); |
+ charOffset, cls); |
factory KernelEnumBuilder(List<MetadataBuilder> metadata, String name, |
List<String> constants, KernelLibraryBuilder parent, int charOffset) { |
@@ -81,11 +86,10 @@ class KernelEnumBuilder extends SourceClassBuilder |
new KernelNamedTypeBuilder("String", null, charOffset, parent.fileUri)); |
Class cls = new Class(name: name); |
Map<String, Builder> members = <String, Builder>{}; |
- KernelNamedTypeBuilder selfType = new KernelNamedTypeBuilder( |
- name, null, charOffset, parent.fileUri); |
- KernelTypeBuilder listType = parent.addType( |
- new KernelNamedTypeBuilder( |
- "List", <KernelTypeBuilder>[selfType], charOffset, parent.fileUri)); |
+ KernelNamedTypeBuilder selfType = |
+ new KernelNamedTypeBuilder(name, null, charOffset, parent.fileUri); |
+ KernelTypeBuilder listType = parent.addType(new KernelNamedTypeBuilder( |
+ "List", <KernelTypeBuilder>[selfType], charOffset, parent.fileUri)); |
/// From Dart Programming Language Specification 4th Edition/December 2015: |
/// metadata class E { |
@@ -97,21 +101,37 @@ class KernelEnumBuilder extends SourceClassBuilder |
/// static const List<E> values = const <E>[id0, ..., idn-1]; |
/// String toString() => { 0: ‘E.id0’, . . ., n-1: ‘E.idn-1’}[index] |
/// } |
- members["index"] = new KernelFieldBuilder(null, intType, "index", finalMask, |
- parent, charOffset); |
+ members["index"] = new KernelFieldBuilder( |
+ null, intType, "index", finalMask, parent, charOffset); |
KernelConstructorBuilder constructorBuilder = new KernelConstructorBuilder( |
- null, constMask, null, "", null, <FormalParameterBuilder>[ |
- new KernelFormalParameterBuilder(null, 0, intType, "index", true, |
- parent, charOffset)], parent, charOffset); |
+ null, |
+ constMask, |
+ null, |
+ "", |
+ null, |
+ <FormalParameterBuilder>[ |
+ new KernelFormalParameterBuilder( |
+ null, 0, intType, "index", true, parent, charOffset) |
+ ], |
+ parent, |
+ charOffset); |
members[""] = constructorBuilder; |
int index = 0; |
List<MapEntry> toStringEntries = <MapEntry>[]; |
- KernelFieldBuilder valuesBuilder = new KernelFieldBuilder(null, listType, |
- "values", constMask | staticMask, parent, charOffset); |
+ KernelFieldBuilder valuesBuilder = new KernelFieldBuilder( |
+ null, listType, "values", constMask | staticMask, parent, charOffset); |
members["values"] = valuesBuilder; |
- KernelProcedureBuilder toStringBuilder = new KernelProcedureBuilder(null, 0, |
- stringType, "toString", null, null, AsyncMarker.Sync, |
- ProcedureKind.Method, parent, charOffset); |
+ KernelProcedureBuilder toStringBuilder = new KernelProcedureBuilder( |
+ null, |
+ 0, |
+ stringType, |
+ "toString", |
+ null, |
+ null, |
+ AsyncMarker.Sync, |
+ ProcedureKind.Method, |
+ parent, |
+ charOffset); |
members["toString"] = toStringBuilder; |
String className = name; |
for (String name in constants) { |
@@ -119,18 +139,30 @@ class KernelEnumBuilder extends SourceClassBuilder |
inputError(null, null, "Duplicated name: $name"); |
continue; |
} |
- KernelFieldBuilder fieldBuilder = |
- new KernelFieldBuilder(null, selfType, name, constMask | staticMask, |
- parent, charOffset); // TODO(ahe): Get charOffset from [name]. |
+ KernelFieldBuilder fieldBuilder = new KernelFieldBuilder( |
+ null, |
+ selfType, |
+ name, |
+ constMask | staticMask, |
+ parent, |
+ charOffset); // TODO(ahe): Get charOffset from [name]. |
members[name] = fieldBuilder; |
toStringEntries.add(new MapEntry( |
- new IntLiteral(index), new StringLiteral("$className.$name"))); |
+ new IntLiteral(index), new StringLiteral("$className.$name"))); |
index++; |
} |
MapLiteral toStringMap = new MapLiteral(toStringEntries, isConst: true); |
- KernelEnumBuilder enumBuilder = new KernelEnumBuilder.internal(metadata, |
- name, members, cls, constants, toStringMap, intType, stringType, |
- parent, charOffset); |
+ KernelEnumBuilder enumBuilder = new KernelEnumBuilder.internal( |
+ metadata, |
+ name, |
+ members, |
+ cls, |
+ constants, |
+ toStringMap, |
+ intType, |
+ stringType, |
+ parent, |
+ charOffset); |
// TODO(sigmund): dynamic should be `covariant MemberBuilder`. |
members.forEach((String name, dynamic b) { |
MemberBuilder builder = b; |
@@ -156,10 +188,12 @@ class KernelEnumBuilder extends SourceClassBuilder |
KernelFieldBuilder indexFieldBuilder = members["index"]; |
Field indexField = indexFieldBuilder.build(libraryBuilder.library); |
KernelProcedureBuilder toStringBuilder = members["toString"]; |
- toStringBuilder.body = new ReturnStatement( |
- new MethodInvocation(toStringMap, new Name("[]"), |
- new Arguments(<Expression>[ |
- new DirectPropertyGet(new ThisExpression(), indexField)]))); |
+ toStringBuilder.body = new ReturnStatement(new MethodInvocation( |
+ toStringMap, |
+ new Name("[]"), |
+ new Arguments(<Expression>[ |
+ new DirectPropertyGet(new ThisExpression(), indexField) |
+ ]))); |
List<Expression> values = <Expression>[]; |
for (String name in constants) { |
KernelFieldBuilder builder = members[name]; |
@@ -171,9 +205,11 @@ class KernelEnumBuilder extends SourceClassBuilder |
new ListLiteral(values, typeArgument: cls.rawType, isConst: true); |
KernelConstructorBuilder constructorBuilder = members[""]; |
Constructor constructor = constructorBuilder.build(libraryBuilder.library); |
- constructor.initializers.insert(0, new FieldInitializer(indexField, |
+ constructor.initializers.insert( |
+ 0, |
+ new FieldInitializer(indexField, |
new VariableGet(constructor.function.positionalParameters.single)) |
- ..parent = constructor); |
+ ..parent = constructor); |
int index = 0; |
for (String constant in constants) { |
KernelFieldBuilder field = members[constant]; |