diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/AccessContext.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/AccessContext.java index 115d40257b1..4b111b51fa8 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/AccessContext.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/AccessContext.java @@ -286,6 +286,9 @@ public class AccessContext { if (maxdepth > 0) { for (ICPPBase cppBase : ClassTypeHelper.getBases(derived, point)) { IBinding base= cppBase.getBaseClass(); + if (base instanceof ICPPSpecialization) { + base = ((ICPPSpecialization) base).getSpecializedBinding(); + } if (base instanceof ICPPClassType) { ICPPClassType tbase= (ICPPClassType) base; if (tbase.isSameType(target)) { diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTests.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTests.java index a2ee3172027..d6663d6a837 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTests.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTests.java @@ -735,6 +735,25 @@ public class CompletionTests extends AbstractContentAssistTest { assertCompletionResults(fCursorOffset, expected, REPLACEMENT); } + // template + // struct Parent { + // protected: + // struct Nested { + // protected: + // using TParam = T; + // }; + // }; + // + // struct NestingTest: Parent { + // struct A : Nested { + // TP/*cursor*/ + // }; + // }; + public void testNestedBaseTemplateMembers_422401() throws Exception { + final String[] expected = { "TParam" }; + assertCompletionResults(fCursorOffset, expected, ID); + } + // struct A {}; // // template