| Index: pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart
|
| diff --git a/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart b/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart
|
| index 3ae2c1bd8b306e4d385366a8cd3a4fd3465aa8bd..d4fb62ffd33c4c0f5e9d4b5a7153f0eacf38f188 100644
|
| --- a/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart
|
| +++ b/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart
|
| @@ -7,7 +7,6 @@ library dart2js.ir_builder_task;
|
| import '../closure.dart' as closure;
|
| import '../common.dart';
|
| import '../common/names.dart' show
|
| - Identifiers,
|
| Names,
|
| Selectors;
|
| import '../common/tasks.dart' show
|
| @@ -1895,20 +1894,11 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
|
| ir.Primitive visitUnresolvedSuperGet(
|
| ast.Send node,
|
| Element element, _) {
|
| - return buildSuperNoSuchMethod(
|
| + return buildInstanceNoSuchMethod(
|
| elements.getSelector(node), elements.getTypeMask(node), []);
|
| }
|
|
|
| @override
|
| - ir.Primitive visitUnresolvedSuperSet(
|
| - ast.Send node,
|
| - Element element,
|
| - ast.Node rhs, _) {
|
| - return buildSuperNoSuchMethod(
|
| - elements.getSelector(node), elements.getTypeMask(node), [visit(rhs)]);
|
| - }
|
| -
|
| - @override
|
| ir.Primitive visitThisGet(ast.Identifier node, _) {
|
| if (irBuilder.state.thisParameter == null) {
|
| // TODO(asgerf,johnniwinther): Should be in a visitInvalidThis method.
|
| @@ -2438,7 +2428,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
|
| List<ir.Primitive> normalizedArguments = <ir.Primitive>[];
|
| CallStructure normalizedCallStructure =
|
| translateDynamicArguments(arguments, callStructure, normalizedArguments);
|
| - return buildSuperNoSuchMethod(
|
| + return buildInstanceNoSuchMethod(
|
| new Selector.call(method.memberName, normalizedCallStructure),
|
| elements.getTypeMask(node),
|
| normalizedArguments);
|
| @@ -2455,7 +2445,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
|
| argumentsNode, selector.callStructure, arguments);
|
| // TODO(johnniwinther): Supply a member name to the visit function instead
|
| // of looking it up in elements.
|
| - return buildSuperNoSuchMethod(
|
| + return buildInstanceNoSuchMethod(
|
| new Selector.call(elements.getSelector(node).memberName, callStructure),
|
| elements.getTypeMask(node),
|
| arguments);
|
| @@ -2866,7 +2856,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
|
| }
|
|
|
| ir.Primitive buildSuperNoSuchGetter(Element element, TypeMask mask) {
|
| - return buildSuperNoSuchMethod(
|
| + return buildInstanceNoSuchMethod(
|
| new Selector.getter(new Name(element.name, element.library)),
|
| mask,
|
| const <ir.Primitive>[]);
|
| @@ -2875,7 +2865,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
|
| ir.Primitive buildSuperNoSuchSetter(Element element,
|
| TypeMask mask,
|
| ir.Primitive value) {
|
| - return buildSuperNoSuchMethod(
|
| + return buildInstanceNoSuchMethod(
|
| new Selector.setter(new Name(element.name, element.library)),
|
| mask,
|
| <ir.Primitive>[value]);
|
| @@ -3028,7 +3018,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
|
| return translateCompounds(node, () {
|
| return isGetterValid
|
| ? irBuilder.buildSuperIndex(indexFunction, indexValue)
|
| - : buildSuperNoSuchMethod(
|
| + : buildInstanceNoSuchMethod(
|
| new Selector.index(),
|
| elements.getGetterTypeMaskInComplexSendSet(node),
|
| <ir.Primitive>[indexValue]);
|
| @@ -3036,7 +3026,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
|
| if (isSetterValid) {
|
| irBuilder.buildSuperIndexSet(indexSetFunction, indexValue, result);
|
| } else {
|
| - buildSuperNoSuchMethod(
|
| + buildInstanceNoSuchMethod(
|
| new Selector.indexSet(),
|
| elements.getTypeMask(node),
|
| <ir.Primitive>[indexValue, result]);
|
| @@ -3337,18 +3327,13 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
|
| return irBuilder.buildNonTailThrow(visit(node.expression));
|
| }
|
|
|
| - ir.Primitive buildSuperNoSuchMethod(Selector selector,
|
| + ir.Primitive buildInstanceNoSuchMethod(Selector selector,
|
| TypeMask mask,
|
| List<ir.Primitive> arguments) {
|
| - ClassElement cls = elements.analyzedElement.enclosingClass;
|
| - MethodElement element = cls.lookupSuperMember(Identifiers.noSuchMethod_);
|
| - if (!Selectors.noSuchMethod_.signatureApplies(element)) {
|
| - element = compiler.coreClasses.objectClass.lookupMember(
|
| - Identifiers.noSuchMethod_);
|
| - }
|
| - return irBuilder.buildSuperMethodInvocation(
|
| - element,
|
| - Selectors.noSuchMethod_.callStructure,
|
| + return irBuilder.buildDynamicInvocation(
|
| + irBuilder.buildThis(),
|
| + Selectors.noSuchMethod_,
|
| + mask,
|
| [irBuilder.buildInvocationMirror(selector, arguments)]);
|
| }
|
|
|
| @@ -3457,7 +3442,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
|
| Element function,
|
| ast.Node index, _) {
|
| // Assume the index getter is missing.
|
| - return buildSuperNoSuchMethod(
|
| + return buildInstanceNoSuchMethod(
|
| new Selector.index(), elements.getTypeMask(node), [visit(index)]);
|
| }
|
|
|
| @@ -3467,7 +3452,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
|
| Element element,
|
| op.BinaryOperator operator,
|
| ast.Node argument, _) {
|
| - return buildSuperNoSuchMethod(
|
| + return buildInstanceNoSuchMethod(
|
| elements.getSelector(node),
|
| elements.getTypeMask(node),
|
| [visit(argument)]);
|
| @@ -3478,7 +3463,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
|
| ast.Send node,
|
| op.UnaryOperator operator,
|
| Element element, _) {
|
| - return buildSuperNoSuchMethod(
|
| + return buildInstanceNoSuchMethod(
|
| elements.getSelector(node), elements.getTypeMask(node), []);
|
| }
|
|
|
| @@ -3565,7 +3550,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
|
| ast.SendSet node,
|
| FieldElement field,
|
| ast.Node rhs, _) {
|
| - return buildSuperNoSuchMethod(
|
| + return buildInstanceNoSuchMethod(
|
| new Selector.setter(field.memberName),
|
| elements.getTypeMask(node),
|
| [visit(rhs)]);
|
| @@ -3632,7 +3617,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
|
| GetterElement getter,
|
| ast.Node rhs,
|
| _) {
|
| - return buildSuperNoSuchMethod(
|
| + return buildInstanceNoSuchMethod(
|
| new Selector.setter(getter.memberName),
|
| elements.getTypeMask(node),
|
| [visit(rhs)]);
|
| @@ -3644,7 +3629,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
|
| MethodElement method,
|
| ast.Node rhs,
|
| _) {
|
| - return buildSuperNoSuchMethod(
|
| + return buildInstanceNoSuchMethod(
|
| new Selector.setter(method.memberName),
|
| elements.getTypeMask(node),
|
| [visit(rhs)]);
|
| @@ -3654,7 +3639,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
|
| ir.Primitive visitSuperSetterGet(
|
| ast.Send node,
|
| SetterElement setter, _) {
|
| - return buildSuperNoSuchMethod(
|
| + return buildInstanceNoSuchMethod(
|
| new Selector.setter(setter.memberName),
|
| elements.getTypeMask(node),
|
| []);
|
| @@ -3669,7 +3654,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
|
| List<ir.Primitive> arguments = <ir.Primitive>[];
|
| callStructure =
|
| translateDynamicArguments(argumentsNode, callStructure, arguments);
|
| - return buildSuperNoSuchMethod(
|
| + return buildInstanceNoSuchMethod(
|
| new Selector.call(setter.memberName, callStructure),
|
| elements.getTypeMask(node),
|
| arguments);
|
|
|