Index: pkg/compiler/lib/src/kernel/element_map_impl.dart |
diff --git a/pkg/compiler/lib/src/kernel/element_map_impl.dart b/pkg/compiler/lib/src/kernel/element_map_impl.dart |
index 6348d9aea9e5538545e99229e0a3cf6c32b0e1fe..f39c7050c08581a174fb38f1d506e9e989806e05 100644 |
--- a/pkg/compiler/lib/src/kernel/element_map_impl.dart |
+++ b/pkg/compiler/lib/src/kernel/element_map_impl.dart |
@@ -329,6 +329,25 @@ class KernelToElementMapImpl extends KernelToElementMapMixin { |
}); |
} |
+ MemberEntity getSuperMember(ir.Member context, ir.Name name, ir.Member target, |
+ {bool setter: false}) { |
+ if (target != null) { |
+ return getMember(target); |
+ } |
+ KClass cls = getMember(context).enclosingClass; |
+ KClass superclass = _getSuperType(cls)?.element; |
+ while (superclass != null) { |
+ _KClassEnv env = _classEnvs[superclass.classIndex]; |
+ ir.Member superMember = env.lookupMember(name.name, setter: setter); |
+ if (superMember != null) { |
+ return getMember(superMember); |
+ } |
+ superclass = _getSuperType(superclass)?.element; |
+ } |
+ throw new SpannableAssertionFailure( |
+ cls, "No super method member found for ${name} in $cls."); |
+ } |
+ |
/// Returns the kernel [ir.Procedure] node for the [method]. |
ir.Procedure _lookupProcedure(KFunction method) { |
return _memberList[method.memberIndex].node; |