Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichi2015-02-19 12:24:29 +0000
committerMichi2015-02-23 17:46:01 +0000
commit151a5d30c519a4a185b2008c3fd1ea1f35022253 (patch)
treeed6c540d5bffbbcf6a3226640b72cd740cf136d7
parent8968b8f2ca921389bc0d8332d05deb0798232c7a (diff)
downloadorg.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>
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPTemplates.java4
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTests.java19
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);

Back to the top