diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2SpecBaseTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2SpecBaseTest.java index 11a085921f7..290f74e795a 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2SpecBaseTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2SpecBaseTest.java @@ -33,6 +33,7 @@ import org.eclipse.cdt.core.parser.ParserMode; import org.eclipse.cdt.core.parser.ScannerInfo; import org.eclipse.cdt.internal.core.dom.parser.c.CVisitor; import org.eclipse.cdt.internal.core.dom.parser.c.GNUCSourceParser; +import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTNameBase; import org.eclipse.cdt.internal.core.dom.parser.cpp.GNUCPPSourceParser; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor; import org.eclipse.cdt.internal.core.parser.ParserException; @@ -127,6 +128,9 @@ public class AST2SpecBaseTest extends AST2BaseTest { NULL_LOG, config ); } + if (expectedProblemBindings > 0) + CPPASTNameBase.sAllowNameComputation= true; + IASTTranslationUnit tu = parser2.parse(); // resolve all bindings 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 6a844012c8f..1aa009f8575 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 @@ -74,6 +74,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPVariable; import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.util.ObjectMap; import org.eclipse.cdt.internal.core.dom.parser.Value; +import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTNameBase; import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPDeferredClassInstance; import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInternalUnknownScope; import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPUnknownBinding; @@ -463,6 +464,8 @@ public class AST2TemplateTests extends AST2BaseTest { // A a4; //uses #5, T is int, T2 is char, I is1 // A a5; //ambiguous, matches #3 & #5. public void test_14_5_4_1s2_MatchingTemplateSpecializations() throws Exception{ + CPPASTNameBase.sAllowNameComputation= true; + IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); @@ -1765,6 +1768,7 @@ public class AST2TemplateTests extends AST2BaseTest { } public void testBug98666() throws Exception { + CPPASTNameBase.sAllowNameComputation= true; IASTTranslationUnit tu = parse("A::template B b;", ParserLanguage.CPP); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); tu.accept(col); @@ -1772,7 +1776,7 @@ public class AST2TemplateTests extends AST2BaseTest { ICPPASTQualifiedName qn = (ICPPASTQualifiedName) col.getName(0); IASTName[] ns = qn.getNames(); assertTrue(ns[1] instanceof ICPPASTTemplateId); - assertEquals(((ICPPASTTemplateId)ns[1]).toString(), "B"); //$NON-NLS-1$ + assertEquals(ns[1].toString(), "B"); //$NON-NLS-1$ } // template struct A{ @@ -2293,6 +2297,7 @@ public class AST2TemplateTests extends AST2BaseTest { // // void f(B::tb r) {} public void testTemplateTypedef_214447() throws Exception { + CPPASTNameBase.sAllowNameComputation= true; IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP, true, true); CPPNameCollector col = new CPPNameCollector(); @@ -2326,6 +2331,7 @@ public class AST2TemplateTests extends AST2BaseTest { // // void f(Vec::reference r) {} public void testRebindPattern_214447_1() throws Exception { + CPPASTNameBase.sAllowNameComputation= true; IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP, true, true); CPPNameCollector col = new CPPNameCollector(); @@ -2365,6 +2371,7 @@ public class AST2TemplateTests extends AST2BaseTest { // // void f(Vec::reference r) {} public void testRebindPattern_214447_2() throws Exception { + CPPASTNameBase.sAllowNameComputation= true; IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP, true, true); CPPNameCollector col = new CPPNameCollector(); @@ -2403,6 +2410,7 @@ public class AST2TemplateTests extends AST2BaseTest { // // void f(map::value_type r) {} public void testRebindPattern_236197() throws Exception { + CPPASTNameBase.sAllowNameComputation= true; IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP, true, true); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); @@ -2434,6 +2442,7 @@ public class AST2TemplateTests extends AST2BaseTest { // // void main(Iter::iter_reference r); public void testSpecializationSelection_229218() throws Exception { + CPPASTNameBase.sAllowNameComputation= true; IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP, true, true); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); @@ -2462,6 +2471,7 @@ public class AST2TemplateTests extends AST2BaseTest { // // B::b::a x; public void testDefaultTemplateParameter() throws Exception { + CPPASTNameBase.sAllowNameComputation= true; IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP, true, true); CPPNameCollector col = new CPPNameCollector(); @@ -2746,6 +2756,7 @@ public class AST2TemplateTests extends AST2BaseTest { // C c1; // C<> c2; // ok - default args public void testMissingTemplateArgumentLists() throws Exception { + CPPASTNameBase.sAllowNameComputation=true; BindingAssertionHelper ba=new BindingAssertionHelper(getAboveComment(), true); ba.assertProblem("B b1", 1); ba.assertNonProblem("B<> b2", 1, ICPPTemplateDefinition.class, ICPPClassType.class); @@ -2918,6 +2929,7 @@ public class AST2TemplateTests extends AST2BaseTest { // // A aint; // should be an error public void testTypeArgumentToNonTypeParameter() throws Exception { + CPPASTNameBase.sAllowNameComputation=true; BindingAssertionHelper ba= new BindingAssertionHelper(getAboveComment(), true); ba.assertProblem("A", 6); } diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/DOMSelectionParseTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/DOMSelectionParseTest.java index 7c09d764eef..1d47a06389b 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/DOMSelectionParseTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/DOMSelectionParseTest.java @@ -37,6 +37,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateInstance; import org.eclipse.cdt.core.dom.ast.cpp.ICPPVariable; import org.eclipse.cdt.core.model.ICElement; import org.eclipse.cdt.internal.core.dom.parser.ASTNode; +import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTNameBase; import org.eclipse.cdt.internal.core.model.CProject; import org.eclipse.core.resources.IFile; @@ -630,6 +631,8 @@ public class DOMSelectionParseTest extends DOMSelectionParseBaseTest { } public void testBug72814() throws Exception{ + CPPASTNameBase.sAllowNameComputation= true; + Writer writer = new StringWriter(); writer.write( "namespace N{ \n"); //$NON-NLS-1$ writer.write( " template < class T > class AAA { T _t; };\n"); //$NON-NLS-1$ @@ -653,7 +656,7 @@ public class DOMSelectionParseTest extends DOMSelectionParseBaseTest { assertTrue( node instanceof IASTName ); assertTrue( ((IASTName)node).resolveBinding() instanceof ICPPClassType ); - assertEquals( ((IASTName)node).toString(), "AAA" ); //$NON-NLS-1$ + assertEquals( ((IASTName)node).toString(), "AAA" ); //$NON-NLS-1$ decls = getDeclarationOffTU((IASTName)node); // TODO raised bug 92632 for below // assertEquals(decls.length, 1); @@ -1740,7 +1743,7 @@ public class DOMSelectionParseTest extends DOMSelectionParseBaseTest { assertNotNull( node ); assertTrue( node instanceof IASTName ); assertTrue( ((IASTName)node).resolveBinding() instanceof ICPPTemplateInstance ); - assertEquals( ((IASTName)node).toString(), "AAA" ); //$NON-NLS-1$ + assertEquals( ((IASTName)node).toString(), "AAA" ); //$NON-NLS-1$ IName[] decls = getDeclarationOffTU((IASTName)node); assertEquals(decls.length, 1); assertEquals( decls[0].toString(), "AAA" ); //$NON-NLS-1$ diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/QuickParser2Tests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/QuickParser2Tests.java index 3824314f2c8..07564189be9 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/QuickParser2Tests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/QuickParser2Tests.java @@ -35,6 +35,7 @@ import org.eclipse.cdt.core.parser.ParserMode; import org.eclipse.cdt.core.parser.ScannerInfo; import org.eclipse.cdt.internal.core.dom.parser.c.CVisitor; import org.eclipse.cdt.internal.core.dom.parser.c.GNUCSourceParser; +import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTNameBase; import org.eclipse.cdt.internal.core.dom.parser.cpp.GNUCPPSourceParser; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor; import org.eclipse.cdt.internal.core.parser.ParserException; @@ -60,7 +61,14 @@ public class QuickParser2Tests extends TestCase { super(name); } - /** + + @Override + protected void setUp() throws Exception { + CPPASTNameBase.sAllowRecursionBindings= false; + CPPASTNameBase.sAllowNameComputation= false; + } + + /** * Test code: int x = 5; Purpose: to test the simple decaration in it's * simplest form. */ @@ -549,6 +557,8 @@ public class QuickParser2Tests extends TestCase { public void testBug36704() throws Exception { Writer code = new StringWriter(); + code.write("template class Typelist;"); + code.write("template struct Length {};"); code.write("template \n"); code.write("struct Length< Typelist >\n"); code.write("{\n"); diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/comenthandler/CommentHandlingTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/comenthandler/CommentHandlingTest.java index 77c49872189..63ac04f1a90 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/comenthandler/CommentHandlingTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/comenthandler/CommentHandlingTest.java @@ -21,6 +21,8 @@ import java.util.regex.Pattern; import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.ast.IASTComment; +import org.eclipse.cdt.core.dom.ast.IASTCompositeTypeSpecifier; +import org.eclipse.cdt.core.dom.ast.IASTEnumerationSpecifier; import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.model.ITranslationUnit; @@ -142,7 +144,7 @@ public class CommentHandlingTest extends RewriteBaseTest { for (IASTNode actNode : keyTree) { ArrayList comments = map.get(actNode); - output.append(actNode.getRawSignature() + " = "); //$NON-NLS-1$ + output.append(getSignature(actNode) + " = "); //$NON-NLS-1$ boolean first = true; for (IASTComment actComment : comments) { if (!first) { @@ -156,6 +158,17 @@ public class CommentHandlingTest extends RewriteBaseTest { return output.toString().trim(); } + private String getSignature(IASTNode actNode) { + if (actNode instanceof IASTCompositeTypeSpecifier) { + IASTCompositeTypeSpecifier comp = (IASTCompositeTypeSpecifier) actNode; + return comp.getName().toString(); + } else if (actNode instanceof IASTEnumerationSpecifier) { + IASTEnumerationSpecifier comp = (IASTEnumerationSpecifier) actNode; + return comp.getName().toString(); + } + return actNode.getRawSignature(); + } + private static String getSeparatingRegexp() { return LEADING_COMMENT_SEPARATOR + ANY_CHAR_REGEXP + TRAILING_COMMENT_SEPARATOR + ANY_CHAR_REGEXP + FREESTANDING_COMMENT_SEPARATOR + ANY_CHAR_REGEXP; } diff --git a/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterCommentedDeclarationTestSource.awts b/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterCommentedDeclarationTestSource.awts index dea92c8ef2e..8a28473db06 100644 --- a/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterCommentedDeclarationTestSource.awts +++ b/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterCommentedDeclarationTestSource.awts @@ -153,6 +153,7 @@ template