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

Unified Diff: pkg/front_end/lib/src/fasta/kernel/kernel_enum_builder.dart

Issue 2788153002: Create separate scopes for constructors, setters, and other members. (Closed)
Patch Set: One more flaky standalone/io test. Created 3 years, 8 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
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,

Powered by Google App Engine
This is Rietveld 408576698