@@ -7,6 +7,7 @@ import 'package:kernel/class_hierarchy.dart';
77
88import '../base/loader.dart' ;
99import '../base/name_space.dart' ;
10+ import '../base/scope.dart' ;
1011import '../builder/builder.dart' ;
1112import '../builder/declaration_builders.dart' ;
1213import '../builder/library_builder.dart' ;
@@ -16,20 +17,7 @@ import 'dill_library_builder.dart' show DillLibraryBuilder;
1617import 'dill_member_builder.dart' ;
1718import 'dill_type_parameter_builder.dart' ;
1819
19- mixin DillClassMemberAccessMixin implements ClassMemberAccess {
20- DeclarationNameSpace get nameSpace;
21-
22- @override
23- Iterator <T > fullConstructorIterator <T extends MemberBuilder >() =>
24- nameSpace.filteredConstructorIterator <T >(includeDuplicates: false );
25-
26- @override
27- Iterator <T > fullMemberIterator <T extends NamedBuilder >() =>
28- nameSpace.filteredIterator <T >(includeDuplicates: false );
29- }
30-
31- class DillClassBuilder extends ClassBuilderImpl
32- with DillClassMemberAccessMixin {
20+ class DillClassBuilder extends ClassBuilderImpl {
3321 @override
3422 final DillLibraryBuilder parent;
3523
@@ -38,6 +26,9 @@ class DillClassBuilder extends ClassBuilderImpl
3826
3927 final MutableDeclarationNameSpace _nameSpace;
4028
29+ final List <MemberBuilder > _constructorBuilders = [];
30+ final List <MemberBuilder > _memberBuilders = [];
31+
4132 List <NominalParameterBuilder >? _typeParameters;
4233
4334 TypeBuilder ? _supertypeBuilder;
@@ -112,24 +103,47 @@ class DillClassBuilder extends ClassBuilderImpl
112103 return supertype;
113104 }
114105
106+ @override
107+ Iterator <T > fullConstructorIterator <T extends MemberBuilder >() =>
108+ new FilteredIterator <T >(_constructorBuilders.iterator,
109+ includeDuplicates: false );
110+
111+ @override
112+ Iterator <T > fullMemberIterator <T extends NamedBuilder >() =>
113+ new FilteredIterator <T >(_memberBuilders.iterator,
114+ includeDuplicates: false );
115+
116+ bool _isPrivateFromOtherLibrary (Member member) {
117+ Name name = member.name;
118+ return name.isPrivate &&
119+ name.libraryReference != cls.enclosingLibrary.reference;
120+ }
121+
115122 void addField (Field field) {
116123 DillFieldBuilder builder =
117124 new DillFieldBuilder (field, libraryBuilder, this );
118- String name = field.name.text;
119- _nameSpace.addLocalMember (name, builder, setter: false );
125+ if (! _isPrivateFromOtherLibrary (field)) {
126+ _nameSpace.addLocalMember (field.name.text, builder, setter: false );
127+ }
128+ _memberBuilders.add (builder);
120129 }
121130
122131 void addConstructor (Constructor constructor, Procedure ? constructorTearOff) {
123132 DillConstructorBuilder builder = new DillConstructorBuilder (
124133 constructor, constructorTearOff, libraryBuilder, this );
125- String name = constructor.name.text;
126- _nameSpace.addConstructor (name, builder);
134+ if (! _isPrivateFromOtherLibrary (constructor)) {
135+ _nameSpace.addConstructor (constructor.name.text, builder);
136+ }
137+ _constructorBuilders.add (builder);
127138 }
128139
129140 void addFactory (Procedure factory , Procedure ? factoryTearOff) {
130- String name = factory .name.text;
131- _nameSpace.addConstructor (name,
132- new DillFactoryBuilder (factory , factoryTearOff, libraryBuilder, this ));
141+ DillFactoryBuilder builder =
142+ new DillFactoryBuilder (factory , factoryTearOff, libraryBuilder, this );
143+ if (! _isPrivateFromOtherLibrary (factory )) {
144+ _nameSpace.addConstructor (factory .name.text, builder);
145+ }
146+ _constructorBuilders.add (builder);
133147 }
134148
135149 void addProcedure (Procedure procedure) {
@@ -139,24 +153,36 @@ class DillClassBuilder extends ClassBuilderImpl
139153 // Coverage-ignore(suite): Not run.
140154 throw new UnsupportedError ("Use addFactory for adding factories" );
141155 case ProcedureKind .Setter :
142- _nameSpace.addLocalMember (
143- name, new DillSetterBuilder (procedure, libraryBuilder, this ),
144- setter: true );
156+ DillSetterBuilder builder =
157+ new DillSetterBuilder (procedure, libraryBuilder, this );
158+ if (! _isPrivateFromOtherLibrary (procedure)) {
159+ _nameSpace.addLocalMember (name, builder, setter: true );
160+ }
161+ _memberBuilders.add (builder);
145162 break ;
146163 case ProcedureKind .Getter :
147- _nameSpace.addLocalMember (
148- name, new DillGetterBuilder (procedure, libraryBuilder, this ),
149- setter: false );
164+ DillGetterBuilder builder =
165+ new DillGetterBuilder (procedure, libraryBuilder, this );
166+ if (! _isPrivateFromOtherLibrary (procedure)) {
167+ _nameSpace.addLocalMember (name, builder, setter: false );
168+ }
169+ _memberBuilders.add (builder);
150170 break ;
151171 case ProcedureKind .Operator :
152- _nameSpace.addLocalMember (
153- name, new DillOperatorBuilder (procedure, libraryBuilder, this ),
154- setter: false );
172+ DillOperatorBuilder builder =
173+ new DillOperatorBuilder (procedure, libraryBuilder, this );
174+ if (! _isPrivateFromOtherLibrary (procedure)) {
175+ _nameSpace.addLocalMember (name, builder, setter: false );
176+ }
177+ _memberBuilders.add (builder);
155178 break ;
156179 case ProcedureKind .Method :
157- _nameSpace.addLocalMember (
158- name, new DillMethodBuilder (procedure, libraryBuilder, this ),
159- setter: false );
180+ DillMethodBuilder builder =
181+ new DillMethodBuilder (procedure, libraryBuilder, this );
182+ if (! _isPrivateFromOtherLibrary (procedure)) {
183+ _nameSpace.addLocalMember (name, builder, setter: false );
184+ }
185+ _memberBuilders.add (builder);
160186 break ;
161187 }
162188 }
0 commit comments