| Index: pkg/compiler/lib/src/inferrer/simple_types_inferrer.dart
|
| diff --git a/pkg/compiler/lib/src/inferrer/simple_types_inferrer.dart b/pkg/compiler/lib/src/inferrer/simple_types_inferrer.dart
|
| index 0a6c6283d801fc83013e5c8e65d21d973184b3e2..5910c00ffb4b1c17ea59969e8e2265e185817b16 100644
|
| --- a/pkg/compiler/lib/src/inferrer/simple_types_inferrer.dart
|
| +++ b/pkg/compiler/lib/src/inferrer/simple_types_inferrer.dart
|
| @@ -40,7 +40,7 @@ abstract class InferrerEngine<T, V extends TypeSystem>
|
|
|
| InferrerEngine(Compiler compiler, this.types)
|
| : this.compiler = compiler,
|
| - this.classWorld = compiler.world;
|
| + this.classWorld = compiler.closedWorld;
|
|
|
| CoreClasses get coreClasses => compiler.coreClasses;
|
|
|
| @@ -174,7 +174,7 @@ abstract class InferrerEngine<T, V extends TypeSystem>
|
| void forEachElementMatching(
|
| Selector selector, TypeMask mask, bool f(Element element)) {
|
| Iterable<Element> elements =
|
| - compiler.world.allFunctions.filter(selector, mask);
|
| + compiler.closedWorld.allFunctions.filter(selector, mask);
|
| for (Element e in elements) {
|
| if (!f(e.implementation)) return;
|
| }
|
| @@ -210,7 +210,8 @@ abstract class InferrerEngine<T, V extends TypeSystem>
|
| sideEffects.setAllSideEffects();
|
| sideEffects.setDependsOnSomething();
|
| } else {
|
| - sideEffects.add(compiler.world.getSideEffectsOfElement(callee));
|
| + sideEffects.add(compiler.inferenceWorld
|
| + .getCurrentlyKnownSideEffects(callee));
|
| }
|
| }
|
|
|
| @@ -480,9 +481,9 @@ class SimpleTypeInferrerVisitor<T>
|
| });
|
| }
|
| if (analyzedElement.isGenerativeConstructor && cls.isAbstract) {
|
| - if (compiler.world.isDirectlyInstantiated(cls)) {
|
| + if (compiler.closedWorld.isDirectlyInstantiated(cls)) {
|
| returnType = types.nonNullExact(cls);
|
| - } else if (compiler.world.isIndirectlyInstantiated(cls)) {
|
| + } else if (compiler.closedWorld.isIndirectlyInstantiated(cls)) {
|
| returnType = types.nonNullSubclass(cls);
|
| } else {
|
| // TODO(johnniwinther): Avoid analyzing [analyzedElement] in this
|
| @@ -531,7 +532,7 @@ class SimpleTypeInferrerVisitor<T>
|
| }
|
| }
|
|
|
| - compiler.world.registerSideEffects(analyzedElement, sideEffects);
|
| + compiler.inferenceWorld.registerSideEffects(analyzedElement, sideEffects);
|
| assert(breaksFor.isEmpty);
|
| assert(continuesFor.isEmpty);
|
| return returnType;
|
| @@ -645,7 +646,7 @@ class SimpleTypeInferrerVisitor<T>
|
| bool isInClassOrSubclass(Element element) {
|
| ClassElement cls = outermostElement.enclosingClass.declaration;
|
| ClassElement enclosing = element.enclosingClass.declaration;
|
| - return compiler.world.isSubclassOf(enclosing, cls);
|
| + return compiler.closedWorld.isSubclassOf(enclosing, cls);
|
| }
|
|
|
| void checkIfExposesThis(Selector selector, TypeMask mask) {
|
| @@ -1070,7 +1071,7 @@ class SimpleTypeInferrerVisitor<T>
|
| (node.asSendSet() != null) &&
|
| (node.asSendSet().receiver != null) &&
|
| node.asSendSet().receiver.isThis()) {
|
| - Iterable<Element> targets = compiler.world.allFunctions.filter(
|
| + Iterable<Element> targets = compiler.closedWorld.allFunctions.filter(
|
| setterSelector, types.newTypedSelector(thisType, setterMask));
|
| // We just recognized a field initialization of the form:
|
| // `this.foo = 42`. If there is only one target, we can update
|
| @@ -1297,7 +1298,7 @@ class SimpleTypeInferrerVisitor<T>
|
| } else if (element != null &&
|
| element.isField &&
|
| Elements.isStaticOrTopLevelField(element) &&
|
| - compiler.world.fieldNeverChanges(element)) {
|
| + compiler.closedWorld.fieldNeverChanges(element)) {
|
| FieldElement fieldElement = element;
|
| ConstantValue value =
|
| compiler.backend.constants.getConstantValue(fieldElement.constant);
|
| @@ -1351,8 +1352,9 @@ class SimpleTypeInferrerVisitor<T>
|
| // In erroneous code the number of arguments in the selector might not
|
| // match the function element.
|
| // TODO(polux): return nonNullEmpty and check it doesn't break anything
|
| - if (!selector.applies(target, compiler.world) ||
|
| - (mask != null && !mask.canHit(target, selector, compiler.world))) {
|
| + if (!selector.applies(target, compiler.closedWorld) ||
|
| + (mask != null &&
|
| + !mask.canHit(target, selector, compiler.closedWorld))) {
|
| return types.dynamicType;
|
| }
|
|
|
|
|