Chromium Code Reviews| Index: pkg/compiler/lib/src/world.dart | 
| diff --git a/pkg/compiler/lib/src/world.dart b/pkg/compiler/lib/src/world.dart | 
| index 322dec362bfa3e57195db4a7ac755e67178f3413..3c4c100a1ba6dd103ab566b7fb0a0deabf9c60b7 100644 | 
| --- a/pkg/compiler/lib/src/world.dart | 
| +++ b/pkg/compiler/lib/src/world.dart | 
| @@ -28,7 +28,6 @@ import 'universe/class_set.dart'; | 
| import 'universe/function_set.dart' show FunctionSet; | 
| import 'universe/selector.dart' show Selector; | 
| import 'universe/side_effects.dart' show SideEffects; | 
| -import 'universe/world_builder.dart' show ResolutionWorldBuilder; | 
| import 'util/util.dart' show Link; | 
| /// Common superinterface for [OpenWorld] and [ClosedWorld]. | 
| @@ -444,14 +443,14 @@ abstract class ClosedWorldBase implements ClosedWorld, ClosedWorldRefiner { | 
| final DartTypes dartTypes; | 
| final CommonElements commonElements; | 
| - // TODO(johnniwinther): Avoid this. | 
| - final ResolutionWorldBuilder _resolverWorld; | 
| 
 
Siggi Cherem (dart-lang)
2017/07/05 21:00:09
\o/
 |
 
 | 
| - | 
| // TODO(johnniwinther): Can this be derived from [ClassSet]s? | 
| final Set<ClassEntity> _implementedClasses; | 
| final Iterable<MemberEntity> liveInstanceMembers; | 
| + /// Members that are written either directly or through a setter selector. | 
| + final Iterable<MemberEntity> assignedInstanceMembers; | 
| + | 
| ClosedWorldBase( | 
| this.elementEnvironment, | 
| this.dartTypes, | 
| @@ -460,16 +459,15 @@ abstract class ClosedWorldBase implements ClosedWorld, ClosedWorldRefiner { | 
| this.nativeData, | 
| this.interceptorData, | 
| this.backendUsage, | 
| - ResolutionWorldBuilder resolutionWorldBuilder, | 
| Set<ClassEntity> implementedClasses, | 
| this.liveInstanceMembers, | 
| + this.assignedInstanceMembers, | 
| Set<TypedefElement> allTypedefs, | 
| this.mixinUses, | 
| Map<ClassEntity, Set<ClassEntity>> typesImplementedBySubclasses, | 
| Map<ClassEntity, ClassHierarchyNode> classHierarchyNodes, | 
| Map<ClassEntity, ClassSet> classSets) | 
| - : this._resolverWorld = resolutionWorldBuilder, | 
| - this._implementedClasses = implementedClasses, | 
| + : this._implementedClasses = implementedClasses, | 
| this._allTypedefs = allTypedefs, | 
| this._typesImplementedBySubclasses = typesImplementedBySubclasses, | 
| this._classHierarchyNodes = classHierarchyNodes, | 
| @@ -1066,8 +1064,7 @@ abstract class ClosedWorldBase implements ClosedWorld, ClosedWorldRefiner { | 
| return true; | 
| } | 
| if (element.isInstanceMember) { | 
| - return !_resolverWorld.hasInvokedSetter(element) && | 
| - !_resolverWorld.fieldSetters.contains(element); | 
| + return !assignedInstanceMembers.contains(element); | 
| } | 
| return false; | 
| } | 
| @@ -1180,9 +1177,9 @@ class ClosedWorldImpl extends ClosedWorldBase { | 
| NativeData nativeData, | 
| InterceptorData interceptorData, | 
| BackendUsage backendUsage, | 
| - ResolutionWorldBuilder resolutionWorldBuilder, | 
| Set<ClassEntity> implementedClasses, | 
| Iterable<MemberEntity> liveInstanceMembers, | 
| + Iterable<MemberEntity> assignedInstanceMembers, | 
| Set<TypedefElement> allTypedefs, | 
| Map<ClassEntity, Set<ClassEntity>> mixinUses, | 
| Map<ClassEntity, Set<ClassEntity>> typesImplementedBySubclasses, | 
| @@ -1196,9 +1193,9 @@ class ClosedWorldImpl extends ClosedWorldBase { | 
| nativeData, | 
| interceptorData, | 
| backendUsage, | 
| - resolutionWorldBuilder, | 
| implementedClasses, | 
| liveInstanceMembers, | 
| + assignedInstanceMembers, | 
| allTypedefs, | 
| mixinUses, | 
| typesImplementedBySubclasses, |