| 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 d740569c0a627a7605798dad2a13243c4e753dab..d9374761e9541cdae508b9b7199a0a7817801d3a 100644
|
| --- a/pkg/compiler/lib/src/inferrer/simple_types_inferrer.dart
|
| +++ b/pkg/compiler/lib/src/inferrer/simple_types_inferrer.dart
|
| @@ -1149,15 +1149,35 @@ class SimpleTypeInferrerVisitor<T>
|
| } else if (Elements.isErroneous(element)) {
|
| return types.dynamicType;
|
| } else if (element.isLocal) {
|
| - LocalElement local = element;
|
| - assert(locals.use(local) != null);
|
| - return locals.use(local);
|
| + internalError(node, "Unhandled local: $element");
|
| + return null;
|
| } else {
|
| assert(element is PrefixElement);
|
| return null;
|
| }
|
| }
|
|
|
| + /// Read a local variable, function or parameter.
|
| + T handleLocalGet(ast.Send node, LocalElement local) {
|
| + assert(locals.use(local) != null);
|
| + return locals.use(local);
|
| + }
|
| +
|
| + @override
|
| + T visitLocalVariableGet(ast.Send node, LocalVariableElement variable, _) {
|
| + return handleLocalGet(node, variable);
|
| + }
|
| +
|
| + @override
|
| + T visitParameterGet(ast.Send node, ParameterElement parameter, _) {
|
| + return handleLocalGet(node, parameter);
|
| + }
|
| +
|
| + @override
|
| + T visitLocalFunctionGet(ast.Send node, LocalFunctionElement function, _) {
|
| + return handleLocalGet(node, function);
|
| + }
|
| +
|
| T visitClosureSend(ast.Send node) {
|
| assert(node.receiver == null);
|
| T closure = node.selector.accept(this);
|
|
|