| 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);
|
| }
|
| }
|
|
|
|
|