From 47bfb02f36e7390f48e51feb1780c31117ebd729 Mon Sep 17 00:00:00 2001 From: Asger Feldthaus Date: Fri, 2 Dec 2016 13:32:45 +0100 Subject: [PATCH] Fix a bug in kernel class hierarchy. Abstract members would sometimes be seen at possible dispatch targets. BUG= R=kmillikin@google.com Review URL: https://codereview.chromium.org/2542143003 . --- pkg/kernel/lib/class_hierarchy.dart | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pkg/kernel/lib/class_hierarchy.dart b/pkg/kernel/lib/class_hierarchy.dart index 32bf695881c..17a981dc9ee 100644 --- a/pkg/kernel/lib/class_hierarchy.dart +++ b/pkg/kernel/lib/class_hierarchy.dart @@ -415,10 +415,14 @@ class ClassHierarchy { } // One of the two lists is now exhausted, copy over the remains. while (i < declared.length) { - result[storeIndex++] = declared[i++]; + Member declaredMember = declared[i++]; + if (skipAbstractMembers && declaredMember.isAbstract) continue; + result[storeIndex++] = declaredMember; } while (j < inherited.length) { - result[storeIndex++] = inherited[j++]; + Member inheritedMember = inherited[j++]; + if (skipAbstractMembers && inheritedMember.isAbstract) continue; + result[storeIndex++] = inheritedMember; } result.length = storeIndex; return result;