diff options
author | Michi | 2015-02-19 12:24:29 +0000 |
---|---|---|
committer | Michi | 2015-02-23 17:46:01 +0000 |
commit | 151a5d30c519a4a185b2008c3fd1ea1f35022253 (patch) | |
tree | ed6c540d5bffbbcf6a3226640b72cd740cf136d7 | |
parent | 8968b8f2ca921389bc0d8332d05deb0798232c7a (diff) | |
download | org.eclipse.cdt-151a5d30c519a4a185b2008c3fd1ea1f35022253.tar.gz org.eclipse.cdt-151a5d30c519a4a185b2008c3fd1ea1f35022253.tar.xz org.eclipse.cdt-151a5d30c519a4a185b2008c3fd1ea1f35022253.zip |
Bug 460341 - Nested Template Specialization not properly resolved
Change-Id: I10564878dc0daacad58d164941d73749bf77e787
Signed-off-by: Michi <woskimi@yahoo.de>
2 files changed, 23 insertions, 0 deletions
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPTemplates.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPTemplates.java index 85ff8210ddd..7db462451aa 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPTemplates.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPTemplates.java @@ -713,6 +713,10 @@ public class CPPTemplates { IASTName templateName = id.getTemplateName(); IBinding template = templateName.resolvePreBinding(); + while (template instanceof CPPTypedefSpecialization) { + template = ((CPPTypedefSpecialization) template).getSpecializedBinding(); + } + // Alias template. if (template instanceof ICPPAliasTemplate) { ICPPAliasTemplate aliasTemplate = (ICPPAliasTemplate) template; 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 017b0021eec..ca392da5c0e 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 @@ -1506,6 +1506,25 @@ public class CompletionTests extends AbstractContentAssistTest { assertContentAssistResults(fCursorOffset, expected, true, ID); } + // template <int T> + // struct A { + // template <int TT> + // struct AA { + // template <typename TTT> + // using Type = TTT; + // }; + // }; + // + // struct B{ + // static int i; + // }; + // + // A<0>::AA<0>::Type<B>::/*cursor*/ + public void testNestedTemplateSpecialization_460341() throws Exception { + final String[] expected = { "i" }; + assertContentAssistResults(fCursorOffset, expected, true, ID); + } + // void foo() { Specialization<int, /*cursor*/ public void testTemplateArgumentList() throws Exception { setCommaAfterFunctionParameter(CCorePlugin.INSERT); |