| 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 7aba1204e3a0cc72a2c71fd221d161d0786c027f..f56483d6ec0b1687ad8d0bc80afe4c9a6e0a986f 100644
|
| --- a/pkg/compiler/lib/src/inferrer/simple_types_inferrer.dart
|
| +++ b/pkg/compiler/lib/src/inferrer/simple_types_inferrer.dart
|
| @@ -6,7 +6,7 @@ library simple_types_inferrer;
|
|
|
| import '../closure.dart' show ClosureClassMap;
|
| import '../common.dart';
|
| -import '../common/names.dart' show Identifiers, Selectors;
|
| +import '../common/names.dart' show Selectors;
|
| import '../compiler.dart' show Compiler;
|
| import '../constants/values.dart' show ConstantValue, IntConstantValue;
|
| import '../core_types.dart' show CoreClasses, CoreTypes;
|
| @@ -878,66 +878,23 @@ class SimpleTypeInferrerVisitor<T>
|
| T visitSuperIndexPrefix(ast.Send node, MethodElement getter,
|
| MethodElement setter, ast.Node index, op.IncDecOperator operator, _) {
|
| T indexType = visit(index);
|
| - return handleSuperIndexPrefixPostfix(node, getter, setter, indexType);
|
| + return handleCompoundPrefixPostfix(node, superType, indexType);
|
| }
|
|
|
| @override
|
| T visitSuperIndexPostfix(ast.Send node, MethodElement getter,
|
| MethodElement setter, ast.Node index, op.IncDecOperator operator, _) {
|
| T indexType = visit(index);
|
| - return handleSuperIndexPrefixPostfix(node, getter, setter, indexType);
|
| - }
|
| -
|
| - /// Handle compound prefix/postfix operations, like `super[0]++`.
|
| - T handleSuperIndexPrefixPostfix(
|
| - ast.Send node, Element getter, Element setter, T indexType) {
|
| - return _handleSuperCompoundIndexSet(
|
| - node, getter, setter, indexType, types.uint31Type);
|
| + return handleCompoundPrefixPostfix(node, superType, indexType);
|
| }
|
|
|
| /// Handle compound super index set, like `super[42] =+ 2`.
|
| - T handleSuperCompoundIndexSet(ast.SendSet node, Element getter,
|
| - Element setter, ast.Node index, ast.Node rhs) {
|
| + T handleSuperCompoundIndexSet(
|
| + ast.SendSet node, ast.Node index, ast.Node rhs) {
|
| + T receiverType = superType;
|
| T indexType = visit(index);
|
| T rhsType = visit(rhs);
|
| - return _handleSuperCompoundIndexSet(
|
| - node, getter, setter, indexType, rhsType);
|
| - }
|
| -
|
| - T _handleSuperCompoundIndexSet(ast.SendSet node, Element getter,
|
| - Element setter, T indexType, T rhsType) {
|
| - Selector getterSelector = elements.getGetterSelectorInComplexSendSet(node);
|
| - TypeMask getterMask = elements.getGetterTypeMaskInComplexSendSet(node);
|
| - Selector setterSelector = elements.getSelector(node);
|
| - TypeMask setterMask = elements.getTypeMask(node);
|
| -
|
| - T getterType = handleSuperSend(node, getterSelector, getterMask, getter,
|
| - new ArgumentsTypes<T>([indexType], null));
|
| -
|
| - T returnType;
|
| - if (node.isIfNullAssignment) {
|
| - returnType = types.allocateDiamondPhi(getterType, rhsType);
|
| - } else {
|
| - Selector operatorSelector =
|
| - elements.getOperatorSelectorInComplexSendSet(node);
|
| - TypeMask operatorMask =
|
| - elements.getOperatorTypeMaskInComplexSendSet(node);
|
| - returnType = handleDynamicSend(node, operatorSelector, operatorMask,
|
| - getterType, new ArgumentsTypes<T>([rhsType], null));
|
| - }
|
| - handleSuperSend(node, setterSelector, setterMask, setter,
|
| - new ArgumentsTypes<T>([indexType, returnType], null));
|
| -
|
| - return node.isPostfix ? getterType : returnType;
|
| - }
|
| -
|
| - T handleSuperSend(ast.Node node, Selector selector, TypeMask mask,
|
| - Element element, ArgumentsTypes arguments) {
|
| - if (element.isMalformed) {
|
| - return handleSuperNoSuchMethod(node, selector, mask, arguments);
|
| - } else {
|
| - return handleStaticSend(node, selector, mask, element, arguments);
|
| - }
|
| + return handleCompoundIndexSet(node, receiverType, indexType, rhsType);
|
| }
|
|
|
| @override
|
| @@ -949,25 +906,25 @@ class SimpleTypeInferrerVisitor<T>
|
| op.AssignmentOperator operator,
|
| ast.Node rhs,
|
| _) {
|
| - return handleSuperCompoundIndexSet(node, getter, setter, index, rhs);
|
| + return handleSuperCompoundIndexSet(node, index, rhs);
|
| }
|
|
|
| @override
|
| T visitSuperIndexSetIfNull(ast.SendSet node, MethodElement getter,
|
| MethodElement setter, ast.Node index, ast.Node rhs, _) {
|
| - return handleSuperCompoundIndexSet(node, getter, setter, index, rhs);
|
| + return handleSuperCompoundIndexSet(node, index, rhs);
|
| }
|
|
|
| @override
|
| T visitUnresolvedSuperCompoundIndexSet(ast.Send node, Element element,
|
| ast.Node index, op.AssignmentOperator operator, ast.Node rhs, _) {
|
| - return handleSuperCompoundIndexSet(node, element, element, index, rhs);
|
| + return handleSuperCompoundIndexSet(node, index, rhs);
|
| }
|
|
|
| @override
|
| T visitUnresolvedSuperIndexSetIfNull(
|
| ast.Send node, Element element, ast.Node index, ast.Node rhs, _) {
|
| - return handleSuperCompoundIndexSet(node, element, element, index, rhs);
|
| + return handleSuperCompoundIndexSet(node, index, rhs);
|
| }
|
|
|
| @override
|
| @@ -979,13 +936,13 @@ class SimpleTypeInferrerVisitor<T>
|
| op.AssignmentOperator operator,
|
| ast.Node rhs,
|
| _) {
|
| - return handleSuperCompoundIndexSet(node, element, setter, index, rhs);
|
| + return handleSuperCompoundIndexSet(node, index, rhs);
|
| }
|
|
|
| @override
|
| T visitUnresolvedSuperGetterIndexSetIfNull(ast.SendSet node, Element element,
|
| MethodElement setter, ast.Node index, ast.Node rhs, _) {
|
| - return handleSuperCompoundIndexSet(node, element, setter, index, rhs);
|
| + return handleSuperCompoundIndexSet(node, index, rhs);
|
| }
|
|
|
| @override
|
| @@ -997,27 +954,27 @@ class SimpleTypeInferrerVisitor<T>
|
| op.AssignmentOperator operator,
|
| ast.Node rhs,
|
| _) {
|
| - return handleSuperCompoundIndexSet(node, getter, element, index, rhs);
|
| + return handleSuperCompoundIndexSet(node, index, rhs);
|
| }
|
|
|
| @override
|
| T visitUnresolvedSuperSetterIndexSetIfNull(ast.SendSet node,
|
| MethodElement getter, Element element, ast.Node index, ast.Node rhs, _) {
|
| - return handleSuperCompoundIndexSet(node, getter, element, index, rhs);
|
| + return handleSuperCompoundIndexSet(node, index, rhs);
|
| }
|
|
|
| @override
|
| T visitUnresolvedSuperIndexPrefix(ast.Send node, Element element,
|
| ast.Node index, op.IncDecOperator operator, _) {
|
| T indexType = visit(index);
|
| - return handleSuperIndexPrefixPostfix(node, element, element, indexType);
|
| + return handleCompoundPrefixPostfix(node, superType, indexType);
|
| }
|
|
|
| @override
|
| T visitUnresolvedSuperGetterIndexPrefix(ast.SendSet node, Element element,
|
| MethodElement setter, ast.Node index, op.IncDecOperator operator, _) {
|
| T indexType = visit(index);
|
| - return handleSuperIndexPrefixPostfix(node, element, setter, indexType);
|
| + return handleCompoundPrefixPostfix(node, superType, indexType);
|
| }
|
|
|
| @override
|
| @@ -1029,21 +986,21 @@ class SimpleTypeInferrerVisitor<T>
|
| op.IncDecOperator operator,
|
| _) {
|
| T indexType = visit(index);
|
| - return handleSuperIndexPrefixPostfix(node, getter, element, indexType);
|
| + return handleCompoundPrefixPostfix(node, superType, indexType);
|
| }
|
|
|
| @override
|
| T visitUnresolvedSuperIndexPostfix(ast.Send node, Element element,
|
| ast.Node index, op.IncDecOperator operator, _) {
|
| T indexType = visit(index);
|
| - return handleSuperIndexPrefixPostfix(node, element, element, indexType);
|
| + return handleCompoundPrefixPostfix(node, superType, indexType);
|
| }
|
|
|
| @override
|
| T visitUnresolvedSuperGetterIndexPostfix(ast.SendSet node, Element element,
|
| MethodElement setter, ast.Node index, op.IncDecOperator operator, _) {
|
| T indexType = visit(index);
|
| - return handleSuperIndexPrefixPostfix(node, element, setter, indexType);
|
| + return handleCompoundPrefixPostfix(node, superType, indexType);
|
| }
|
|
|
| @override
|
| @@ -1055,242 +1012,7 @@ class SimpleTypeInferrerVisitor<T>
|
| op.IncDecOperator operator,
|
| _) {
|
| T indexType = visit(index);
|
| - return handleSuperIndexPrefixPostfix(node, getter, element, indexType);
|
| - }
|
| -
|
| - @override
|
| - T visitSuperFieldCompound(ast.Send node, FieldElement field,
|
| - op.AssignmentOperator operator, ast.Node rhs, _) {
|
| - return handleSuperCompound(node, field, field, rhs);
|
| - }
|
| -
|
| - @override
|
| - T visitSuperFieldSetterCompound(ast.Send node, FieldElement field,
|
| - FunctionElement setter, op.AssignmentOperator operator, ast.Node rhs, _) {
|
| - return handleSuperCompound(node, field, setter, rhs);
|
| - }
|
| -
|
| - @override
|
| - T visitSuperGetterFieldCompound(ast.Send node, FunctionElement getter,
|
| - FieldElement field, op.AssignmentOperator operator, ast.Node rhs, _) {
|
| - return handleSuperCompound(node, getter, field, rhs);
|
| - }
|
| -
|
| - @override
|
| - T visitSuperGetterSetterCompound(ast.Send node, FunctionElement getter,
|
| - FunctionElement setter, op.AssignmentOperator operator, ast.Node rhs, _) {
|
| - return handleSuperCompound(node, getter, setter, rhs);
|
| - }
|
| -
|
| - @override
|
| - T visitSuperMethodSetterCompound(ast.Send node, FunctionElement method,
|
| - FunctionElement setter, op.AssignmentOperator operator, ast.Node rhs, _) {
|
| - return handleSuperCompound(node, method, setter, rhs);
|
| - }
|
| -
|
| - @override
|
| - T visitUnresolvedSuperCompound(ast.Send node, Element element,
|
| - op.AssignmentOperator operator, ast.Node rhs, _) {
|
| - return handleSuperCompound(node, element, element, rhs);
|
| - }
|
| -
|
| - @override
|
| - T visitUnresolvedSuperGetterCompound(ast.Send node, Element getter,
|
| - SetterElement setter, op.AssignmentOperator operator, ast.Node rhs, _) {
|
| - return handleSuperCompound(node, getter, setter, rhs);
|
| - }
|
| -
|
| - @override
|
| - T visitUnresolvedSuperSetterCompound(ast.Send node, GetterElement getter,
|
| - Element setter, op.AssignmentOperator operator, ast.Node rhs, _) {
|
| - return handleSuperCompound(node, getter, setter, rhs);
|
| - }
|
| -
|
| - @override
|
| - T visitSuperFieldFieldSetIfNull(ast.Send node, FieldElement readField,
|
| - FieldElement writtenField, ast.Node rhs, _) {
|
| - return handleSuperCompound(node, readField, writtenField, rhs);
|
| - }
|
| -
|
| - @override
|
| - T visitSuperFieldSetIfNull(
|
| - ast.Send node, FieldElement field, ast.Node rhs, _) {
|
| - return handleSuperCompound(node, field, field, rhs);
|
| - }
|
| -
|
| - @override
|
| - T visitSuperFieldSetterSetIfNull(ast.Send node, FieldElement field,
|
| - FunctionElement setter, ast.Node rhs, _) {
|
| - return handleSuperCompound(node, field, setter, rhs);
|
| - }
|
| -
|
| - @override
|
| - T visitSuperGetterFieldSetIfNull(ast.Send node, FunctionElement getter,
|
| - FieldElement field, ast.Node rhs, _) {
|
| - return handleSuperCompound(node, getter, field, rhs);
|
| - }
|
| -
|
| - @override
|
| - T visitSuperGetterSetterSetIfNull(ast.Send node, FunctionElement getter,
|
| - FunctionElement setter, ast.Node rhs, _) {
|
| - return handleSuperCompound(node, getter, setter, rhs);
|
| - }
|
| -
|
| - @override
|
| - T visitSuperMethodSetIfNull(
|
| - ast.Send node, FunctionElement method, ast.Node rhs, _) {
|
| - return handleSuperCompound(node, method, null, rhs);
|
| - }
|
| -
|
| - @override
|
| - T visitSuperMethodSetterSetIfNull(ast.Send node, FunctionElement method,
|
| - FunctionElement setter, ast.Node rhs, _) {
|
| - return handleSuperCompound(node, method, setter, rhs);
|
| - }
|
| -
|
| - T handleSuperCompound(
|
| - ast.SendSet node, Element getter, Element setter, ast.Node rhs) {
|
| - T rhsType = visit(rhs);
|
| - return _handleSuperCompound(node, getter, setter, rhsType);
|
| - }
|
| -
|
| - @override
|
| - T visitSuperFieldFieldPostfix(ast.SendSet node, FieldElement readField,
|
| - FieldElement writtenField, op.IncDecOperator operator, _) {
|
| - return handleSuperPrefixPostfix(node, readField, writtenField);
|
| - }
|
| -
|
| - @override
|
| - T visitSuperFieldFieldPrefix(ast.SendSet node, FieldElement readField,
|
| - FieldElement writtenField, op.IncDecOperator operator, _) {
|
| - return handleSuperPrefixPostfix(node, readField, writtenField);
|
| - }
|
| -
|
| - @override
|
| - T visitSuperFieldPostfix(
|
| - ast.SendSet node, FieldElement field, op.IncDecOperator operator, _) {
|
| - return handleSuperPrefixPostfix(node, field, field);
|
| - }
|
| -
|
| - @override
|
| - T visitSuperFieldPrefix(
|
| - ast.SendSet node, FieldElement field, op.IncDecOperator operator, _) {
|
| - return handleSuperPrefixPostfix(node, field, field);
|
| - }
|
| -
|
| - @override
|
| - T visitSuperFieldSetterPostfix(ast.SendSet node, FieldElement field,
|
| - FunctionElement setter, op.IncDecOperator operator, _) {
|
| - return handleSuperPrefixPostfix(node, field, setter);
|
| - }
|
| -
|
| - @override
|
| - T visitSuperFieldSetterPrefix(ast.SendSet node, FieldElement field,
|
| - FunctionElement setter, op.IncDecOperator operator, _) {
|
| - return handleSuperPrefixPostfix(node, field, setter);
|
| - }
|
| -
|
| - @override
|
| - T visitSuperGetterFieldPostfix(ast.SendSet node, FunctionElement getter,
|
| - FieldElement field, op.IncDecOperator operator, _) {
|
| - return handleSuperPrefixPostfix(node, getter, field);
|
| - }
|
| -
|
| - @override
|
| - T visitSuperGetterFieldPrefix(ast.SendSet node, FunctionElement getter,
|
| - FieldElement field, op.IncDecOperator operator, _) {
|
| - return handleSuperPrefixPostfix(node, getter, field);
|
| - }
|
| -
|
| - @override
|
| - T visitSuperGetterSetterPostfix(ast.SendSet node, FunctionElement getter,
|
| - FunctionElement setter, op.IncDecOperator operator, _) {
|
| - return handleSuperPrefixPostfix(node, getter, setter);
|
| - }
|
| -
|
| - @override
|
| - T visitSuperGetterSetterPrefix(ast.SendSet node, FunctionElement getter,
|
| - FunctionElement setter, op.IncDecOperator operator, _) {
|
| - return handleSuperPrefixPostfix(node, getter, setter);
|
| - }
|
| -
|
| - @override
|
| - T visitSuperMethodSetterPostfix(ast.SendSet node, FunctionElement method,
|
| - FunctionElement setter, op.IncDecOperator operator, _) {
|
| - return handleSuperPrefixPostfix(node, method, setter);
|
| - }
|
| -
|
| - @override
|
| - T visitSuperMethodSetterPrefix(ast.SendSet node, FunctionElement method,
|
| - FunctionElement setter, op.IncDecOperator operator, _) {
|
| - return handleSuperPrefixPostfix(node, method, setter);
|
| - }
|
| -
|
| - @override
|
| - T visitUnresolvedSuperPrefix(
|
| - ast.SendSet node, Element element, op.IncDecOperator operator, _) {
|
| - return handleSuperPrefixPostfix(node, element, element);
|
| - }
|
| -
|
| - @override
|
| - T visitUnresolvedSuperPostfix(
|
| - ast.SendSet node, Element element, op.IncDecOperator operator, _) {
|
| - return handleSuperPrefixPostfix(node, element, element);
|
| - }
|
| -
|
| - @override
|
| - T visitUnresolvedSuperGetterPrefix(ast.SendSet node, Element getter,
|
| - SetterElement setter, op.IncDecOperator operator, _) {
|
| - return handleSuperPrefixPostfix(node, getter, setter);
|
| - }
|
| -
|
| - @override
|
| - T visitUnresolvedSuperGetterPostfix(ast.SendSet node, Element getter,
|
| - SetterElement setter, op.IncDecOperator operator, _) {
|
| - return handleSuperPrefixPostfix(node, getter, setter);
|
| - }
|
| -
|
| - @override
|
| - T visitUnresolvedSuperSetterPrefix(ast.SendSet node, GetterElement getter,
|
| - Element setter, op.IncDecOperator operator, _) {
|
| - return handleSuperPrefixPostfix(node, getter, setter);
|
| - }
|
| -
|
| - @override
|
| - T visitUnresolvedSuperSetterPostfix(ast.SendSet node, GetterElement getter,
|
| - Element setter, op.IncDecOperator operator, _) {
|
| - return handleSuperPrefixPostfix(node, getter, setter);
|
| - }
|
| -
|
| - T handleSuperPrefixPostfix(ast.SendSet node, Element getter, Element setter) {
|
| - return _handleSuperCompound(node, getter, setter, types.uint31Type);
|
| - }
|
| -
|
| - T _handleSuperCompound(
|
| - ast.SendSet node, Element getter, Element setter, T rhsType) {
|
| - Selector getterSelector = elements.getGetterSelectorInComplexSendSet(node);
|
| - TypeMask getterMask = elements.getGetterTypeMaskInComplexSendSet(node);
|
| - Selector setterSelector = elements.getSelector(node);
|
| - TypeMask setterMask = elements.getTypeMask(node);
|
| -
|
| - T getterType =
|
| - handleSuperSend(node, getterSelector, getterMask, getter, null);
|
| -
|
| - T returnType;
|
| - if (node.isIfNullAssignment) {
|
| - returnType = types.allocateDiamondPhi(getterType, rhsType);
|
| - } else {
|
| - Selector operatorSelector =
|
| - elements.getOperatorSelectorInComplexSendSet(node);
|
| - TypeMask operatorMask =
|
| - elements.getOperatorTypeMaskInComplexSendSet(node);
|
| - returnType = handleDynamicSend(node, operatorSelector, operatorMask,
|
| - getterType, new ArgumentsTypes<T>([rhsType], null));
|
| - }
|
| - handleSuperSend(node, setterSelector, setterMask, setter,
|
| - new ArgumentsTypes<T>([returnType], null));
|
| -
|
| - return node.isPostfix ? getterType : returnType;
|
| + return handleCompoundPrefixPostfix(node, superType, indexType);
|
| }
|
|
|
| /// Handle index set, like `foo[0] = 42`.
|
| @@ -1312,27 +1034,23 @@ class SimpleTypeInferrerVisitor<T>
|
| }
|
|
|
| /// Handle super index set, like `super[42] = true`.
|
| - T handleSuperIndexSet(
|
| - ast.SendSet node, Element element, ast.Node index, ast.Node rhs) {
|
| + T handleSuperIndexSet(ast.SendSet node, ast.Node index, ast.Node rhs) {
|
| + T receiverType = superType;
|
| T indexType = visit(index);
|
| T rhsType = visit(rhs);
|
| - Selector setterSelector = elements.getSelector(node);
|
| - TypeMask setterMask = elements.getTypeMask(node);
|
| - handleStaticSend(node, setterSelector, setterMask, element,
|
| - new ArgumentsTypes<T>([indexType, rhsType], null));
|
| - return rhsType;
|
| + return handleIndexSet(node, receiverType, indexType, rhsType);
|
| }
|
|
|
| @override
|
| T visitSuperIndexSet(ast.SendSet node, FunctionElement function,
|
| ast.Node index, ast.Node rhs, _) {
|
| - return handleSuperIndexSet(node, function, index, rhs);
|
| + return handleSuperIndexSet(node, index, rhs);
|
| }
|
|
|
| @override
|
| T visitUnresolvedSuperIndexSet(
|
| ast.SendSet node, Element element, ast.Node index, ast.Node rhs, _) {
|
| - return handleSuperIndexSet(node, element, index, rhs);
|
| + return handleSuperIndexSet(node, index, rhs);
|
| }
|
|
|
| T handlePlainAssignment(
|
| @@ -1396,22 +1114,10 @@ class SimpleTypeInferrerVisitor<T>
|
| TypeMask mask = elements.getTypeMask(node);
|
| // TODO(herhut): We could do better here if we knew what we
|
| // are calling does not expose this.
|
| - // TODO(johnniwinther): Do we still need this when calling directly?
|
| isThisExposed = true;
|
| - return handleSuperNoSuchMethod(node, selector, mask, arguments);
|
| - }
|
| -
|
| - T handleSuperNoSuchMethod(ast.Send node, Selector selector, TypeMask mask,
|
| - ArgumentsTypes arguments) {
|
| // Ensure we create a node, to make explicit the call to the
|
| // `noSuchMethod` handler.
|
| - ClassElement cls = outermostElement.enclosingClass.declaration;
|
| - MethodElement element = cls.lookupSuperMember(Identifiers.noSuchMethod_);
|
| - if (!Selectors.noSuchMethod_.signatureApplies(element)) {
|
| - element = compiler.coreClasses.objectClass
|
| - .lookupMember(Identifiers.noSuchMethod_);
|
| - }
|
| - return handleStaticSend(node, selector, mask, element, arguments);
|
| + return handleDynamicSend(node, selector, mask, superType, arguments);
|
| }
|
|
|
| /// Handle a .call invocation on the values retrieved from the super
|
| @@ -1456,28 +1162,6 @@ class SimpleTypeInferrerVisitor<T>
|
| return handleStaticSend(node, selector, mask, element, null);
|
| }
|
|
|
| - /// Handle update to a super field or setter [element].
|
| - T handleSuperSet(ast.Send node, Element element, ast.Node rhs) {
|
| - T rhsType = visit(rhs);
|
| - // TODO(herhut): We could do better here if we knew what we
|
| - // are calling does not expose this.
|
| - isThisExposed = true;
|
| - Selector selector = elements.getSelector(node);
|
| - TypeMask mask = elements.getTypeMask(node);
|
| - return handleStaticSend(
|
| - node, selector, mask, element, new ArgumentsTypes<T>([rhsType], null));
|
| - }
|
| -
|
| - @override
|
| - T visitSuperFieldSet(ast.Send node, FieldElement method, ast.Node rhs, _) {
|
| - return handleSuperSet(node, method, rhs);
|
| - }
|
| -
|
| - @override
|
| - T visitSuperSetterSet(ast.Send node, SetterElement field, ast.Node rhs, _) {
|
| - return handleSuperSet(node, field, rhs);
|
| - }
|
| -
|
| @override
|
| T visitUnresolvedSuperIndex(
|
| ast.Send node, Element element, ast.Node index, _) {
|
| @@ -1512,17 +1196,6 @@ class SimpleTypeInferrerVisitor<T>
|
| }
|
|
|
| @override
|
| - T visitSuperMethodSet(ast.Send node, MethodElement method, ast.Node rhs, _) {
|
| - return handleErroneousSuperSend(node);
|
| - }
|
| -
|
| - @override
|
| - T visitFinalSuperFieldSet(
|
| - ast.Send node, FieldElement method, ast.Node rhs, _) {
|
| - return handleErroneousSuperSend(node);
|
| - }
|
| -
|
| - @override
|
| T visitUnresolvedSuperSet(ast.Send node, Element element, ast.Node rhs, _) {
|
| return handleErroneousSuperSend(node);
|
| }
|
|
|