diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/includes/BindingClassifierTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/includes/BindingClassifierTest.java index 4c63997f3d3..c81e0433be6 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/includes/BindingClassifierTest.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/includes/BindingClassifierTest.java @@ -411,6 +411,17 @@ public class BindingClassifierTest extends OneSourceMultipleHeadersTestCase { assertDeclared(); } + // class Base {}; + + // class Derived : public Base { + // public: + // Derived(); + // }; + public void testBaseClause_421398() throws Exception { + assertDefined("Base"); + assertDeclared(); + } + // struct A {}; // template struct B {}; // template> struct C {}; diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/includes/BindingClassifier.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/includes/BindingClassifier.java index ed6394a0d50..e41b14ffdfb 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/includes/BindingClassifier.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/includes/BindingClassifier.java @@ -516,7 +516,7 @@ public class BindingClassifier { // Record the fact that we also have a definition of the typedef's target type. markAsDefined((IBinding) type); } - } else if (binding instanceof ICPPClassType) { + } else if (binding instanceof ICPPClassType && fAst.getDefinitionsInAST(binding).length == 0) { // The header that defines a class must provide definitions of all its base classes. ICPPClassType[] bases = ClassTypeHelper.getAllBases((ICPPClassType) binding, fAst); for (ICPPClassType base : bases) {