| Index: pkg/compiler/lib/src/ssa/locals_handler.dart
|
| diff --git a/pkg/compiler/lib/src/ssa/locals_handler.dart b/pkg/compiler/lib/src/ssa/locals_handler.dart
|
| index 581114a9493728c82089c59c6b88c7182d3aedab..26410783859d1f351c90968ae94dddc92cb32dd2 100644
|
| --- a/pkg/compiler/lib/src/ssa/locals_handler.dart
|
| +++ b/pkg/compiler/lib/src/ssa/locals_handler.dart
|
| @@ -267,7 +267,7 @@ class LocalsHandler {
|
| new SyntheticLocal('receiver', executableContext);
|
| // Unlike `this`, receiver is nullable since direct calls to generative
|
| // constructor call the constructor with `null`.
|
| - ClassWorld classWorld = _compiler.world;
|
| + ClassWorld classWorld = _compiler.closedWorld;
|
| HParameterValue value =
|
| new HParameterValue(parameter, new TypeMask.exact(cls, classWorld));
|
| builder.graph.explicitReceiverParameter = value;
|
| @@ -625,15 +625,17 @@ class LocalsHandler {
|
| if (result == null) {
|
| ThisLocal local = closureData.thisLocal;
|
| ClassElement cls = local.enclosingClass;
|
| - ClassWorld classWorld = _compiler.world;
|
| + ClassWorld classWorld = _compiler.closedWorld;
|
| if (classWorld.isUsedAsMixin(cls)) {
|
| // If the enclosing class is used as a mixin, [:this:] can be
|
| // of the class that mixins the enclosing class. These two
|
| // classes do not have a subclass relationship, so, for
|
| // simplicity, we mark the type as an interface type.
|
| - result = new TypeMask.nonNullSubtype(cls.declaration, _compiler.world);
|
| + result =
|
| + new TypeMask.nonNullSubtype(cls.declaration, _compiler.closedWorld);
|
| } else {
|
| - result = new TypeMask.nonNullSubclass(cls.declaration, _compiler.world);
|
| + result = new TypeMask.nonNullSubclass(
|
| + cls.declaration, _compiler.closedWorld);
|
| }
|
| cachedTypeOfThis = result;
|
| }
|
|
|