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

Unified Diff: pkg/front_end/lib/src/fasta/dill/dill_class_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/dill/dill_class_builder.dart
diff --git a/pkg/front_end/lib/src/fasta/dill/dill_class_builder.dart b/pkg/front_end/lib/src/fasta/dill/dill_class_builder.dart
index e47700af89a17ec2427eab2592b05cf75b8afc0c..52eb599699b58a2fa1ce2022f7f4283ac37612c6 100644
--- a/pkg/front_end/lib/src/fasta/dill/dill_class_builder.dart
+++ b/pkg/front_end/lib/src/fasta/dill/dill_class_builder.dart
@@ -4,13 +4,12 @@
library fasta.dill_class_builder;
-import 'package:kernel/ast.dart'
- show Class, Constructor, Member, Procedure, ProcedureKind;
+import 'package:kernel/ast.dart' show Class, Member;
import '../errors.dart' show internalError;
import '../kernel/kernel_builder.dart'
- show Builder, KernelClassBuilder, KernelTypeBuilder;
+ show MemberBuilder, KernelClassBuilder, KernelTypeBuilder, Scope;
import '../modifier.dart' show abstractMask;
@@ -21,27 +20,31 @@ import 'dill_library_builder.dart' show DillLibraryBuilder;
class DillClassBuilder extends KernelClassBuilder {
final Class cls;
- @override
- final Map<String, Builder> constructors = <String, Builder>{};
-
DillClassBuilder(Class cls, DillLibraryBuilder parent)
: cls = cls,
- super(null, computeModifiers(cls), cls.name, null, null, null,
- <String, Builder>{}, parent, cls.fileOffset);
+ super(
+ null,
+ computeModifiers(cls),
+ cls.name,
+ null,
+ null,
+ null,
+ new Scope(<String, MemberBuilder>{}, <String, MemberBuilder>{},
+ parent.scope, isModifiable: false),
+ new Scope(<String, MemberBuilder>{}, null, null,
+ isModifiable: false),
+ parent,
+ cls.fileOffset);
void addMember(Member member) {
DillMemberBuilder builder = new DillMemberBuilder(member, this);
String name = member.name.name;
- if (member is Constructor ||
- (member is Procedure && member.kind == ProcedureKind.Factory)) {
- constructors[name] = builder;
+ if (builder.isConstructor || builder.isFactory) {
+ constructorScopeBuilder.addMember(name, builder);
+ } else if (builder.isSetter) {
+ scopeBuilder.addSetter(name, builder);
} else {
- DillMemberBuilder existing = members[name];
- if (existing == null) {
- members[name] = builder;
- } else {
- existing.next = builder;
- }
+ scopeBuilder.addMember(name, builder);
}
}
« no previous file with comments | « pkg/front_end/lib/src/fasta/builder/prefix_builder.dart ('k') | pkg/front_end/lib/src/fasta/dill/dill_library_builder.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698