| 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 8a8970988558dae736597cf979e7fdc6673122d8..6264d7e4ea5bd17d3c7255766a8a630a08da279c 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
|
| @@ -32,7 +32,9 @@ import '../errors.dart' show inputError;
|
|
|
| import '../modifier.dart' show constMask, finalMask, staticMask;
|
|
|
| -import "../source/source_class_builder.dart" show SourceClassBuilder;
|
| +import '../names.dart' show indexGetName;
|
| +
|
| +import '../source/source_class_builder.dart' show SourceClassBuilder;
|
|
|
| import 'kernel_builder.dart'
|
| show
|
| @@ -48,9 +50,8 @@ import 'kernel_builder.dart'
|
| KernelTypeBuilder,
|
| LibraryBuilder,
|
| MemberBuilder,
|
| - MetadataBuilder;
|
| -
|
| -import '../names.dart' show indexGetName;
|
| + MetadataBuilder,
|
| + Scope;
|
|
|
| class KernelEnumBuilder extends SourceClassBuilder
|
| implements EnumBuilder<KernelTypeBuilder, InterfaceType> {
|
| @@ -65,7 +66,8 @@ class KernelEnumBuilder extends SourceClassBuilder
|
| KernelEnumBuilder.internal(
|
| List<MetadataBuilder> metadata,
|
| String name,
|
| - Map<String, Builder> members,
|
| + Scope scope,
|
| + Scope constructors,
|
| Class cls,
|
| this.constantNamesAndOffsets,
|
| this.toStringMap,
|
| @@ -73,8 +75,8 @@ class KernelEnumBuilder extends SourceClassBuilder
|
| this.stringType,
|
| LibraryBuilder parent,
|
| int charOffset)
|
| - : super(metadata, 0, name, null, null, null, members, parent, null,
|
| - charOffset, cls);
|
| + : super(metadata, 0, name, null, null, null, scope, constructors, parent,
|
| + null, charOffset, cls);
|
|
|
| factory KernelEnumBuilder(
|
| List<MetadataBuilder> metadata,
|
| @@ -91,7 +93,8 @@ class KernelEnumBuilder extends SourceClassBuilder
|
| KernelTypeBuilder stringType = parent.addType(
|
| new KernelNamedTypeBuilder("String", null, charOffset, parent.fileUri));
|
| Class cls = new Class(name: name);
|
| - Map<String, Builder> members = <String, Builder>{};
|
| + Map<String, MemberBuilder> members = <String, MemberBuilder>{};
|
| + Map<String, MemberBuilder> constructors = <String, MemberBuilder>{};
|
| KernelNamedTypeBuilder selfType =
|
| new KernelNamedTypeBuilder(name, null, charOffset, parent.fileUri);
|
| KernelTypeBuilder listType = parent.addType(new KernelNamedTypeBuilder(
|
| @@ -123,7 +126,7 @@ class KernelEnumBuilder extends SourceClassBuilder
|
| charOffset,
|
| charOffset,
|
| charEndOffset);
|
| - members[""] = constructorBuilder;
|
| + constructors[""] = constructorBuilder;
|
| int index = 0;
|
| List<MapEntry> toStringEntries = <MapEntry>[];
|
| KernelFieldBuilder valuesBuilder = new KernelFieldBuilder(
|
| @@ -162,7 +165,8 @@ class KernelEnumBuilder extends SourceClassBuilder
|
| KernelEnumBuilder enumBuilder = new KernelEnumBuilder.internal(
|
| metadata,
|
| name,
|
| - members,
|
| + new Scope(members, null, parent.scope, isModifiable: false),
|
| + new Scope(constructors, null, null, isModifiable: false),
|
| cls,
|
| constantNamesAndOffsets,
|
| toStringMap,
|
| @@ -171,10 +175,13 @@ class KernelEnumBuilder extends SourceClassBuilder
|
| parent,
|
| charOffset);
|
| // TODO(sigmund): dynamic should be `covariant MemberBuilder`.
|
| - members.forEach((String name, dynamic b) {
|
| + void setParent(String name, dynamic b) {
|
| MemberBuilder builder = b;
|
| builder.parent = enumBuilder;
|
| - });
|
| + }
|
| +
|
| + members.forEach(setParent);
|
| + constructors.forEach(setParent);
|
| selfType.builder = enumBuilder;
|
| return enumBuilder;
|
| }
|
| @@ -212,7 +219,7 @@ class KernelEnumBuilder extends SourceClassBuilder
|
| valuesBuilder.build(libraryBuilder);
|
| valuesBuilder.initializer =
|
| new ListLiteral(values, typeArgument: cls.rawType, isConst: true);
|
| - KernelConstructorBuilder constructorBuilder = this[""];
|
| + KernelConstructorBuilder constructorBuilder = constructorScopeBuilder[""];
|
| Constructor constructor = constructorBuilder.build(libraryBuilder);
|
| constructor.initializers.insert(
|
| 0,
|
|
|