Index: pkg/compiler/lib/src/ssa/builder.dart |
diff --git a/pkg/compiler/lib/src/ssa/builder.dart b/pkg/compiler/lib/src/ssa/builder.dart |
index 0c8e57cef78dbe63d0496fdaa7660a8dfbe73192..6bc30e8cd1b2b0a7687a4e34c7384c39fdd16693 100644 |
--- a/pkg/compiler/lib/src/ssa/builder.dart |
+++ b/pkg/compiler/lib/src/ssa/builder.dart |
@@ -4551,7 +4551,10 @@ class SsaBuilder extends ast.Visitor |
String name = selector.name; |
ClassElement cls = currentNonClosureClass; |
- Element element = cls.lookupSuperMember(Identifiers.noSuchMethod_); |
+ MethodElement element = cls.lookupSuperMember(Identifiers.noSuchMethod_); |
+ if (!Selectors.noSuchMethod_.signatureApplies(element)) { |
+ element = coreClasses.objectClass.lookupMember(Identifiers.noSuchMethod_); |
+ } |
if (compiler.enabledInvokeOn && !element.enclosingClass.isObject) { |
// Register the call as dynamic if [noSuchMethod] on the super |
// class is _not_ the default implementation from [Object], in |
@@ -4691,6 +4694,15 @@ class SsaBuilder extends ast.Visitor |
} |
@override |
+ void visitUnresolvedSuperSet( |
+ ast.Send node, |
+ Element element, |
+ ast.Node rhs, |
+ _) { |
+ handleUnresolvedSuperInvoke(node); |
+ } |
+ |
+ @override |
void visitSuperSetterGet( |
ast.Send node, |
MethodElement setter, |