Index: dart/sdk/lib/_internal/compiler/implementation/inferrer/simple_types_inferrer.dart |
=================================================================== |
--- dart/sdk/lib/_internal/compiler/implementation/inferrer/simple_types_inferrer.dart (revision 40080) |
+++ dart/sdk/lib/_internal/compiler/implementation/inferrer/simple_types_inferrer.dart (working copy) |
@@ -573,6 +573,11 @@ |
} |
T visitFunctionExpression(ast.FunctionExpression node) { |
+ // We loose track of [this] in closures (see issue 20840). To be on |
+ // the safe side, we mark [this] as exposed here. We could do better by |
+ // analyzing the closure. |
+ // TODO(herhut): Analyze whether closure exposes this. |
+ isThisExposed = true; |
LocalFunctionElement element = elements.getFunctionDefinition(node); |
// We don't put the closure in the work queue of the |
// inferrer, because it will share information with its enclosing |