From 9c09cf1ebb43d4dd35232e56126457495d68cb14 Mon Sep 17 00:00:00 2001 From: Andrew Niefer Date: Mon, 20 Jun 2005 15:48:29 +0000 Subject: [PATCH] fix bug 98666- template names --- .../core/parser/tests/ast2/AST2TemplateTests.java | 15 +++++++++++++++ .../core/parser/token/BasicTokenDuple.java | 4 +++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java index d87542a3293..58564d0aa21 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java @@ -30,6 +30,8 @@ import org.eclipse.cdt.core.dom.ast.IProblemBinding; import org.eclipse.cdt.core.dom.ast.IScope; import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.ITypedef; +import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTQualifiedName; +import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateId; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassScope; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassTemplate; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassTemplatePartialSpecialization; @@ -1748,4 +1750,17 @@ public class AST2TemplateTests extends AST2BaseTest { assertSame( add, col.getName(16).resolveBinding() ); } + + public void testBug98666() throws Exception { + StringBuffer buffer = new StringBuffer(); + + IASTTranslationUnit tu = parse( "A::template B b;", ParserLanguage.CPP ); + CPPNameCollector col = new CPPNameCollector(); + tu.accept( col ); + + ICPPASTQualifiedName qn = (ICPPASTQualifiedName) col.getName(0); + IASTName [] ns = qn.getNames(); + assertTrue( ns[1] instanceof ICPPASTTemplateId ); + assertEquals( ((ICPPASTTemplateId)ns[1]).toString(), "B" ); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/token/BasicTokenDuple.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/token/BasicTokenDuple.java index 0383a72566c..fbda397e9a8 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/token/BasicTokenDuple.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/token/BasicTokenDuple.java @@ -442,7 +442,9 @@ public class BasicTokenDuple implements ITokenDuple { if( i == null ) return EMPTY_STRING; - + else if( i.getType() == IToken.t_template ) + i = i.getNext(); + char[] tempArray = i.getCharImage(); if( i == last )