diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/Value.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/Value.java index 914bbee1cdb..66752270d31 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/Value.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/Value.java @@ -355,7 +355,7 @@ public class Value implements IValue { type1 = SemanticUtil.getNestedType(type1, TDEF); type2 = SemanticUtil.getNestedType(type2, TDEF); if (type1 instanceof ICPPClassType && type2 instanceof ICPPClassType) { - return ClassTypeHelper.isSubclass((ICPPClassType) type2, (ICPPClassType) type1) ? 1 : 0; + return ClassTypeHelper.isSubclass((ICPPClassType) type2, (ICPPClassType) type1, point) ? 1 : 0; } else { return 0; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/ClassTypeHelper.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/ClassTypeHelper.java index 3a11376a207..18c6a61456f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/ClassTypeHelper.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/ClassTypeHelper.java @@ -309,8 +309,8 @@ public class ClassTypeHelper { * Checks inheritance relationship between two classes. * @return true if {@code subclass} is a subclass of {@code superclass}. */ - public static boolean isSubclass(ICPPClassType subclass, ICPPClassType superclass) { - ICPPBase[] bases= subclass.getBases(); + public static boolean isSubclass(ICPPClassType subclass, ICPPClassType superclass, IASTNode point) { + ICPPBase[] bases= getBases(subclass, point); for (ICPPBase base : bases) { IBinding b= base.getBaseClass(); if (b instanceof ICPPClassType) { @@ -318,7 +318,7 @@ public class ClassTypeHelper { if (baseClass.isSameType(superclass)) { return true; } - if (isSubclass(baseClass, superclass)) { + if (isSubclass(baseClass, superclass, point)) { return true; } } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/LinkedNamesFinder.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/LinkedNamesFinder.java index 3de9c43fae1..ebbb4d403ef 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/LinkedNamesFinder.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/LinkedNamesFinder.java @@ -314,7 +314,7 @@ public class LinkedNamesFinder { if (binding instanceof ICPPClassType) { if (seenClasses.add(binding)) { ICPPClassType candidate = (ICPPClassType) binding; - if (ClassTypeHelper.isSubclass(candidate, baseClass)) { + if (ClassTypeHelper.isSubclass(candidate, baseClass, name)) { subclasses.add(candidate); } }