| 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 e77c6d1d215a6fef607912af5681b086c61afad2..4d099016877866c16075ff44b462ac30f2380b8a 100644
|
| --- a/pkg/compiler/lib/src/inferrer/simple_types_inferrer.dart
|
| +++ b/pkg/compiler/lib/src/inferrer/simple_types_inferrer.dart
|
| @@ -850,7 +850,10 @@ class SimpleTypeInferrerVisitor<T>
|
| isCallOnThis = true;
|
| }
|
| } else {
|
| - receiverType = visit(node.receiver);
|
| + if (node.receiver != null && elements[node.receiver] is! PrefixElement) {
|
| + // TODO(johnniwinther): Avoid blindly recursing on the receiver.
|
| + receiverType = visit(node.receiver);
|
| + }
|
| isCallOnThis = isThisOrSuper(node.receiver);
|
| }
|
|
|
| @@ -1357,20 +1360,6 @@ class SimpleTypeInferrerVisitor<T>
|
| node, selector, mask, element, null);
|
| }
|
|
|
| - /// Handle super constructor invocation.
|
| - @override
|
| - T handleSuperConstructorInvoke(ast.Send node) {
|
| - Element element = elements[node];
|
| - ArgumentsTypes arguments = analyzeArguments(node.arguments);
|
| - assert(visitingInitializers);
|
| - seenSuperConstructorCall = true;
|
| - analyzeSuperConstructorCall(element, arguments);
|
| - Selector selector = elements.getSelector(node);
|
| - TypeMask mask = elements.getTypeMask(node);
|
| - return handleStaticSend(
|
| - node, selector, mask, element, arguments);
|
| - }
|
| -
|
| @override
|
| T visitUnresolvedSuperIndex(
|
| ast.Send node,
|
| @@ -1481,6 +1470,16 @@ class SimpleTypeInferrerVisitor<T>
|
| }
|
|
|
| @override
|
| + T visitSuperSetterInvoke(
|
| + ast.Send node,
|
| + FunctionElement setter,
|
| + ast.NodeList arguments,
|
| + CallStructure callStructure,
|
| + _) {
|
| + return handleErroneousSuperSend(node);
|
| + }
|
| +
|
| + @override
|
| T visitSuperIndex(
|
| ast.Send node,
|
| MethodElement method,
|
| @@ -1663,7 +1662,8 @@ class SimpleTypeInferrerVisitor<T>
|
| }
|
| }
|
|
|
| - T handleNewExpression(ast.NewExpression node) {
|
| + @override
|
| + T bulkHandleNew(ast.NewExpression node, _) {
|
| Element element = elements[node.send];
|
| return handleConstructorSend(node.send, element);
|
| }
|
| @@ -1845,15 +1845,6 @@ class SimpleTypeInferrerVisitor<T>
|
| return new ArgumentsTypes<T>(positional, named);
|
| }
|
|
|
| - T visitGetterSend(ast.Send node) {
|
| - if (elements[node] is! PrefixElement) {
|
| - // TODO(johnniwinther): Remove this when no longer called from
|
| - // [handleSendSet].
|
| - internalError(node, "Unexpected visitGetterSend");
|
| - }
|
| - return null;
|
| - }
|
| -
|
| /// Read a local variable, function or parameter.
|
| T handleLocalGet(ast.Send node, LocalElement local) {
|
| assert(locals.use(local) != null);
|
|
|