Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(153)

Unified Diff: pkg/compiler/lib/src/kernel/element_map_impl.dart

Issue 2890153002: Handle super accesses loaded from .dill (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/compiler/lib/src/kernel/element_map.dart ('k') | pkg/compiler/lib/src/ssa/kernel_ast_adapter.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
« no previous file with comments | « pkg/compiler/lib/src/kernel/element_map.dart ('k') | pkg/compiler/lib/src/ssa/kernel_ast_adapter.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698