From f35f1fc0709dc8f32ada635d56ce7818561e4776 Mon Sep 17 00:00:00 2001 From: Andrew Niefer Date: Wed, 23 Feb 2005 00:36:52 +0000 Subject: [PATCH] Visitor interface --- .../core/parser/tests/ast2/AST2CPPTests.java | 116 ++++++------- .../cdt/core/parser/tests/ast2/AST2Tests.java | 37 ++-- .../tests/ast2/CompleteParser2Tests.java | 162 +++++++++--------- .../cdt/core/parser/tests/ast2/GCCTests.java | 45 +++-- .../cdt/core/dom/ast/IASTTranslationUnit.java | 2 + .../eclipse/cdt/core/dom/ast/IASTVisitor.java | 66 +++++++ .../cdt/core/dom/ast/c/ICASTVisitor.java | 31 ++++ .../cdt/core/dom/ast/cpp/ICPPASTVisitor.java | 39 +++++ .../dom/parser/c/CASTTranslationUnit.java | 14 +- .../core/dom/parser/c/CFunctionScope.java | 5 +- .../internal/core/dom/parser/c/CVisitor.java | 128 ++++++-------- .../dom/parser/cpp/CPPASTTranslationUnit.java | 13 ++ .../core/dom/parser/cpp/CPPClassType.java | 14 +- .../core/dom/parser/cpp/CPPNamespace.java | 9 +- .../core/dom/parser/cpp/CPPVisitor.java | 141 ++++++--------- .../DOMAST/CPPPopulateASTViewAction.java | 2 +- .../tests/DOMAST/CPopulateASTViewAction.java | 2 +- .../eclipse/cdt/ui/tests/DOMAST/DOMAST.java | 10 +- .../ui/tests/DOMAST/FindIASTNameTarget.java | 4 +- 19 files changed, 470 insertions(+), 370 deletions(-) create mode 100644 core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTVisitor.java create mode 100644 core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/c/ICASTVisitor.java create mode 100644 core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTVisitor.java diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java index d925d486873..571ebb990c9 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java @@ -372,7 +372,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, collector); + tu.getVisitor().visitTranslationUnit( collector); assertEquals(collector.size(), 13); ICPPNamespace A = (ICPPNamespace) collector.getName(0).resolveBinding(); @@ -402,7 +402,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, collector); + tu.getVisitor().visitTranslationUnit( collector); assertEquals(collector.size(), 6); IVariable vA = (IVariable) collector.getName(0).resolveBinding(); @@ -426,7 +426,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, collector); + tu.getVisitor().visitTranslationUnit( collector); assertEquals(collector.size(), 9); ICompositeType A = (ICompositeType) collector.getName(0) @@ -456,7 +456,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, collector); + tu.getVisitor().visitTranslationUnit( collector); IFunction f1 = (IFunction) collector.getName(0).resolveBinding(); IFunction f2 = (IFunction) collector.getName(2).resolveBinding(); @@ -476,7 +476,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buff.toString(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, collector); + tu.getVisitor().visitTranslationUnit( collector); ICPPClassType anonStruct = (ICPPClassType) collector.getName(0) .resolveBinding(); ICPPField x = (ICPPField) collector.getName(1).resolveBinding(); @@ -501,7 +501,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, collector); + tu.getVisitor().visitTranslationUnit( collector); ICPPClassType A1 = (ICPPClassType) collector.getName(0) .resolveBinding(); @@ -526,7 +526,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, collector); + tu.getVisitor().visitTranslationUnit( collector); ICPPClassType A1 = (ICPPClassType) collector.getName(0) .resolveBinding(); @@ -552,7 +552,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, collector); + tu.getVisitor().visitTranslationUnit( collector); ICPPClassType A1 = (ICPPClassType) collector.getName(0) .resolveBinding(); @@ -573,7 +573,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, collector); + tu.getVisitor().visitTranslationUnit( collector); ICPPClassType x = (ICPPClassType) collector.getName(0).resolveBinding(); @@ -589,7 +589,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, collector); + tu.getVisitor().visitTranslationUnit( collector); IFunction f = (IFunction) collector.getName(0).resolveBinding(); IParameter a = (IParameter) collector.getName(1).resolveBinding(); @@ -608,7 +608,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, collector); + tu.getVisitor().visitTranslationUnit( collector); IFunction f = (IFunction) collector.getName(0).resolveBinding(); IFunction g = (IFunction) collector.getName(1).resolveBinding(); @@ -627,7 +627,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, collector); + tu.getVisitor().visitTranslationUnit( collector); IVariable i = (IVariable) collector.getName(1).resolveBinding(); @@ -643,7 +643,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, collector); + tu.getVisitor().visitTranslationUnit( collector); ICPPClassType A = (ICPPClassType) collector.getName(0).resolveBinding(); IField x = (IField) collector.getName(1).resolveBinding(); @@ -665,7 +665,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, collector); + tu.getVisitor().visitTranslationUnit( collector); IEnumeration hue = (IEnumeration) collector.getName(0).resolveBinding(); IEnumerator red = (IEnumerator) collector.getName(1).resolveBinding(); @@ -689,7 +689,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testPointerToFunction() throws Exception { IASTTranslationUnit tu = parse("int (*pfi)();", ParserLanguage.CPP); //$NON-NLS-1$ CPPNameCollector collector = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, collector); + tu.getVisitor().visitTranslationUnit( collector); IVariable pf = (IVariable) collector.getName(0).resolveBinding(); IPointerType pt = (IPointerType) pf.getType(); assertTrue(pt.getType() instanceof IFunctionType); @@ -697,7 +697,7 @@ public class AST2CPPTests extends AST2BaseTest { tu = parse( "struct A; int (*pfi)( int, struct A * );", ParserLanguage.CPP); //$NON-NLS-1$ collector = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, collector); + tu.getVisitor().visitTranslationUnit( collector); ICPPClassType A = (ICPPClassType) collector.getName(0).resolveBinding(); pf = (IVariable) collector.getName(1).resolveBinding(); pt = (IPointerType) pf.getType(); @@ -820,7 +820,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, collector); + tu.getVisitor().visitTranslationUnit( collector); IFunction f = (IFunction) collector.getName(0).resolveBinding(); ICPPNamespace A = (ICPPNamespace) collector.getName(1).resolveBinding(); @@ -846,7 +846,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, collector); + tu.getVisitor().visitTranslationUnit( collector); IFunction f = (IFunction) collector.getName(1).resolveBinding(); IFunction g = (IFunction) collector.getName(8).resolveBinding(); @@ -869,7 +869,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, collector); + tu.getVisitor().visitTranslationUnit( collector); IProblemBinding x = (IProblemBinding) collector.getName(12) .resolveBinding(); @@ -889,7 +889,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, collector); + tu.getVisitor().visitTranslationUnit( collector); assertEquals(collector.size(), 15); @@ -920,7 +920,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, collector); + tu.getVisitor().visitTranslationUnit( collector); assertEquals(collector.size(), 15); @@ -954,7 +954,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, collector); + tu.getVisitor().visitTranslationUnit( collector); assertEquals(collector.size(), 6); @@ -1029,7 +1029,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); assertEquals(col.size(), 8); ICPPNamespace A = (ICPPNamespace) col.getName(0).resolveBinding(); @@ -1056,7 +1056,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); assertEquals(col.size(), 3); IVariable p = (IVariable) col.getName(1).resolveBinding(); @@ -1077,7 +1077,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); assertEquals(col.size(), 3); @@ -1094,7 +1094,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); assertEquals(col.size(), 7); @@ -1108,7 +1108,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testBug84266_2() throws Exception { IASTTranslationUnit tu = parse("struct s f(void);", ParserLanguage.CPP); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); assertEquals(col.size(), 3); @@ -1117,7 +1117,7 @@ public class AST2CPPTests extends AST2BaseTest { tu = parse("struct s f(void){}", ParserLanguage.CPP); //$NON-NLS-1$ col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); assertEquals(col.size(), 3); @@ -1135,7 +1135,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); assertEquals(col.size(), 13); @@ -1163,7 +1163,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); assertEquals(col.size(), 9); @@ -1211,7 +1211,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); ICPPNamespace Y = (ICPPNamespace) col.getName(0).resolveBinding(); ICPPNamespace A = (ICPPNamespace) col.getName(3).resolveBinding(); @@ -1242,7 +1242,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); assertEquals(col.size(), 9); @@ -1263,7 +1263,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); assertEquals(col.size(), 11); @@ -1289,7 +1289,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); assertEquals(col.size(), 17); @@ -1348,7 +1348,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testBug84710() throws Exception { IASTTranslationUnit tu = parse("class T { T(); };", ParserLanguage.CPP); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); ICPPConstructor T = (ICPPConstructor) col.getName(1).resolveBinding(); assertTrue(CharArrayUtils.equals(T.getNameCharArray(), "T".toCharArray())); //$NON-NLS-1$ @@ -1368,7 +1368,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); ICPPNamespace NS = (ICPPNamespace) col.getName(0).resolveBinding(); ICPPClassType T = (ICPPClassType) col.getName(1).resolveBinding(); @@ -1398,7 +1398,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); IFunction fref = (IFunction) col.getName(14).resolveBinding(); IFunction f1 = (IFunction) col.getName(1).resolveBinding(); @@ -1429,7 +1429,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); assertEquals(17, col.size()); @@ -1458,7 +1458,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); assertEquals(8, col.size()); @@ -1480,7 +1480,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); assertEquals(9, col.size()); } @@ -1489,7 +1489,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse("struct S; int S::* pm;", //$NON-NLS-1$ ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); assertEquals(4, col.size()); @@ -1514,7 +1514,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); IBinding ref = col.getName(11).resolveBinding(); IVariable pm = (IVariable) col.getName(5).resolveBinding(); @@ -1535,7 +1535,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); ICPPClassType S = (ICPPClassType) col.getName(0).resolveBinding(); IVariable pm = (IVariable) col.getName(8).resolveBinding(); @@ -1568,7 +1568,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); } public void testFindTypeBinding_1() throws Exception { @@ -1631,7 +1631,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); IFunction f = (IFunction) col.getName(15).resolveBinding(); ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); @@ -1659,7 +1659,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); IFunction f = (IFunction) col.getName(16).resolveBinding(); ICPPNamespace N = (ICPPNamespace) col.getName(0).resolveBinding(); @@ -1687,7 +1687,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); IFunction f = (IFunction) col.getName(27).resolveBinding(); ICPPNamespace M = (ICPPNamespace) col.getName(0).resolveBinding(); @@ -1715,7 +1715,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); IFunction set = (IFunction) col.getName(1).resolveBinding(); @@ -1737,7 +1737,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); ICPPClassType B = (ICPPClassType) col.getName(2).resolveBinding(); ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); @@ -1759,7 +1759,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); ICPPClassType N = (ICPPClassType) col.getName(5).resolveBinding(); ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); @@ -1782,7 +1782,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); IFunction helper = (IFunction) col.getName(2).resolveBinding(); assertSame( helper.getScope(), tu.getScope() ); @@ -1807,7 +1807,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); IFunction f1 = (IFunction) col.getName(0).resolveBinding(); IFunction f2 = (IFunction) col.getName(2).resolveBinding(); @@ -1831,7 +1831,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); IFunction f1 = (IFunction) col.getName(0).resolveBinding(); IFunction f2 = (IFunction) col.getName(2).resolveBinding(); @@ -1854,7 +1854,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); IFunction f1 = (IFunction) col.getName(0).resolveBinding(); IFunction f2 = (IFunction) col.getName(2).resolveBinding(); @@ -1874,7 +1874,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); IFunction f1 = (IFunction) col.getName(0).resolveBinding(); IFunction f2 = (IFunction) col.getName(2).resolveBinding(); @@ -1893,7 +1893,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); IVariable g = (IVariable) col.getName(3).resolveBinding(); assertInstances( col, g, 3 ); @@ -1916,7 +1916,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); IASTName name = col.getName(11); IBinding [] bs = CPPSemantics.prefixLookup( name ); @@ -1930,7 +1930,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); IFunction f = (IFunction) col.getName(1).resolveBinding(); assertTrue( f.isStatic() ); diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java index 89a8910ce3c..52d823202e6 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java @@ -78,7 +78,6 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType; import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.internal.core.dom.parser.c.CFunction; import org.eclipse.cdt.internal.core.dom.parser.c.CVisitor; -import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor; import org.eclipse.cdt.internal.core.parser.ParserException; /** @@ -1137,7 +1136,7 @@ public class AST2Tests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.C); CNameCollector collector = new CNameCollector(); - CVisitor.visitTranslationUnit(tu, collector); + tu.getVisitor().visitTranslationUnit( collector); assertEquals(collector.size(), 3); IFunction function = (IFunction) collector.getName(0).resolveBinding(); @@ -2503,7 +2502,7 @@ public class AST2Tests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.C); CNameCollector col = new CNameCollector(); - CVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); IVariable a = (IVariable) col.getName(1).resolveBinding(); assertNotNull(a); @@ -2524,7 +2523,7 @@ public class AST2Tests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.C); CNameCollector col = new CNameCollector(); - CVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); IVariable a = (IVariable) col.getName(1).resolveBinding(); IFunction g = (IFunction) col.getName(2).resolveBinding(); @@ -2547,7 +2546,7 @@ public class AST2Tests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.C); CNameCollector col = new CNameCollector(); - CVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); assertEquals(col.size(), 9); IField x = (IField) col.getName(1).resolveBinding(); @@ -2569,7 +2568,7 @@ public class AST2Tests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.C); CNameCollector col = new CNameCollector(); - CVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); assertEquals(col.size(), 6); IEnumerator one = (IEnumerator) col.getName(1).resolveBinding(); @@ -2616,7 +2615,7 @@ public class AST2Tests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.C); CNameCollector col = new CNameCollector(); - CVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); assertEquals(col.size(), 3); ILabel end = (ILabel) col.getName(1).resolveBinding(); @@ -2633,7 +2632,7 @@ public class AST2Tests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.C); CNameCollector collector = new CNameCollector(); - CVisitor.visitTranslationUnit(tu, collector); + tu.getVisitor().visitTranslationUnit( collector); assertEquals(collector.size(), 5); IEnumeration col = (IEnumeration) collector.getName(0).resolveBinding(); @@ -2647,7 +2646,7 @@ public class AST2Tests extends AST2BaseTest { IASTTranslationUnit tu = parse( "struct s { int a; } ss = { .a = 1 }; \n", ParserLanguage.C); //$NON-NLS-1$ CNameCollector collector = new CNameCollector(); - CVisitor.visitTranslationUnit(tu, collector); + tu.getVisitor().visitTranslationUnit( collector); assertEquals(collector.size(), 4); IField a = (IField) collector.getName(1).resolveBinding(); @@ -2673,7 +2672,7 @@ public class AST2Tests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.C); CNameCollector col = new CNameCollector(); - CVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); assertEquals(col.size(), 3); IEnumeration e = (IEnumeration) col.getName(0).resolveBinding(); @@ -2693,7 +2692,7 @@ public class AST2Tests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.C); CNameCollector col = new CNameCollector(); - CVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); assertEquals(col.size(), 3); IVariable p = (IVariable) col.getName(1).resolveBinding(); @@ -2714,7 +2713,7 @@ public class AST2Tests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.C); CNameCollector col = new CNameCollector(); - CVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); assertEquals(col.size(), 3); @@ -2745,7 +2744,7 @@ public class AST2Tests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.C); CNameCollector col = new CNameCollector(); - CVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); assertEquals(col.size(), 7); @@ -2765,7 +2764,7 @@ public class AST2Tests extends AST2BaseTest { public void testBug84266_2() throws Exception { IASTTranslationUnit tu = parse("struct s f(void);", ParserLanguage.C); //$NON-NLS-1$ CNameCollector col = new CNameCollector(); - CVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); assertEquals(col.size(), 3); @@ -2774,7 +2773,7 @@ public class AST2Tests extends AST2BaseTest { tu = parse("struct s f(void){}", ParserLanguage.C); //$NON-NLS-1$ col = new CNameCollector(); - CVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); assertEquals(col.size(), 3); @@ -2794,7 +2793,7 @@ public class AST2Tests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.C); CNameCollector col = new CNameCollector(); - CVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); assertEquals(col.size(), 6); @@ -2821,7 +2820,7 @@ public class AST2Tests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.C); CNameCollector col = new CNameCollector(); - CVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); assertEquals(col.size(), 11); @@ -2850,7 +2849,7 @@ public class AST2Tests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.C); CNameCollector col = new CNameCollector(); - CVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); assertEquals(col.size(), 13); @@ -2900,7 +2899,7 @@ public class AST2Tests extends AST2BaseTest { IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit( col); assertEquals(col.size(), 26); diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/CompleteParser2Tests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/CompleteParser2Tests.java index 62c825a7acb..9a2f3b2c442 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/CompleteParser2Tests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/CompleteParser2Tests.java @@ -215,7 +215,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "namespace A { }"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 1 ); assertTrue( col.getName(0).resolveBinding() instanceof ICPPNamespace ); @@ -225,7 +225,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "namespace A { } namespace A { }"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 2 ); ICPPNamespace A = (ICPPNamespace) col.getName(0).resolveBinding(); @@ -236,7 +236,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "namespace A { namespace B { } }"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 2 ); ICPPNamespace A = (ICPPNamespace) col.getName(0).resolveBinding(); @@ -249,7 +249,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "class A { };"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 1 ); assertTrue( col.getName(0).resolveBinding() instanceof ICPPClassType ); @@ -259,7 +259,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "class A { }; class B : public A { };"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 3 ); ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); @@ -278,7 +278,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "namespace N { class A { }; } class B : protected virtual N::A { };"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 6 ); ICPPNamespace N = (ICPPNamespace) col.getName(0).resolveBinding(); @@ -301,7 +301,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "int x;"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 1 ); IVariable x = (IVariable) col.getName(0).resolveBinding(); @@ -315,7 +315,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "class A { }; A x;"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 3 ); ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); @@ -329,7 +329,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "namespace N { class A { }; } N::A x;"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 6 ); ICPPNamespace N = (ICPPNamespace) col.getName(0).resolveBinding(); @@ -346,7 +346,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "class A { }; A x, y, z;"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 5 ); ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); @@ -364,7 +364,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "class A { double x; };"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 2 ); ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); @@ -380,7 +380,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "namespace A { namespace B { int x; class C { static int y = 5; }; } } \n using namespace A::B;\n using A::B::x;using A::B::C;using A::B::C::y;"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 21 ); ICPPNamespace A = (ICPPNamespace) col.getName(0).resolveBinding(); @@ -400,7 +400,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "namespace A { enum E { e1, e2, e3 }; E varE;}"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 7 ); ICPPNamespace A = (ICPPNamespace) col.getName(0).resolveBinding(); @@ -422,7 +422,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "void foo( void );"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 2 ); IFunction foo = (IFunction) col.getName(0).resolveBinding(); @@ -437,7 +437,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "class A { public: \n class B { }; }; const A::B & foo( A * myParam );"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 8 ); ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); @@ -464,7 +464,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "class A { void foo(); };"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 2 ); ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); @@ -477,7 +477,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "class U { }; class A { U foo( U areDumb ); };"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 6 ); ICPPClassType U = (ICPPClassType) col.getName(0).resolveBinding(); @@ -496,7 +496,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "namespace N { int foo(void); } class A { static int bar(void); }; using N::foo; using ::A::bar;" ); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 12 ); ICPPNamespace N = (ICPPNamespace) col.getName(0).resolveBinding(); @@ -514,7 +514,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "extern \"C\" { int foo(); }"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 1 ); IFunction foo = (IFunction) col.getName(0).resolveBinding(); @@ -526,7 +526,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "namespace A { namespace B { enum e1{e_1,e_2}; int x; class C { static int y = 5; }; }} "); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 8 ); ICPPNamespace A = (ICPPNamespace) col.getName(0).resolveBinding(); @@ -551,7 +551,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "namespace N{ class A {}; } using namespace N; class B: public A{};"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 5 ); ICPPNamespace N = (ICPPNamespace) col.getName(0).resolveBinding(); @@ -569,7 +569,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "typedef int myInt;\n myInt var;"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 3 ); ITypedef myInt = (ITypedef) col.getName(0).resolveBinding(); @@ -584,7 +584,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "class A{ }; typedef A ** A_DOUBLEPTR;"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 3 ); ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); @@ -626,7 +626,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "namespace A { } \n class A::B { };"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); ICPPNamespace A = (ICPPNamespace) col.getName(0).resolveBinding(); ICPPClassType B = (ICPPClassType) col.getName(1).resolveBinding(); @@ -649,7 +649,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "class A; class A * a;"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 3 ); ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); @@ -663,7 +663,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "class A; A * anA;class A { };"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 4 ); ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); @@ -683,7 +683,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "void foo();\n void foo( int );\n"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 3 ); IFunction foo1 = (IFunction) col.getName(0).resolveBinding(); @@ -696,7 +696,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "int x; int y = x;"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 3 ); IVariable x = (IVariable) col.getName(0).resolveBinding(); @@ -709,7 +709,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "int x = 5; void foo( int sub = x ) { }"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 4 ); IVariable x = (IVariable) col.getName(0).resolveBinding(); @@ -720,7 +720,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "namespace A { int x = 666; } int y = A::x;"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 6 ); ICPPNamespace A = (ICPPNamespace) col.getName(0).resolveBinding(); @@ -733,7 +733,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "int x = 5;\n class A \n{ public : \n int a; \n A() : a( x ) { } };"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 6 ); IVariable x = (IVariable) col.getName(0).resolveBinding(); @@ -748,7 +748,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "const int x = 5; int y [ x ]; "); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 3 ); IVariable x = (IVariable) col.getName(0).resolveBinding(); @@ -763,7 +763,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "class A { }; A * anA;"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 3 ); ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); @@ -777,7 +777,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "class A { }; void foo( void ) throw ( A );"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 4 ); ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); @@ -788,7 +788,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "typedef int A; int B; int C; int D; int P; int*p = new (P) (A)[B][C][D];" ); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 11 ); ITypedef A = (ITypedef) col.getName(0).resolveBinding(); @@ -817,7 +817,7 @@ public class CompleteParser2Tests extends TestCase { // assertNotNull( dtor.getInitializer() ); // // CPPNameCollector col = new CPPNameCollector(); -// CPPVisitor.visitTranslationUnit( tu, col ); +// tu.getVisitor().visitTranslationUnit( col ); // // assertEquals( col.size(), 3 ); // IVariable x = (IVariable) col.getName(0).resolveBinding(); @@ -830,7 +830,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "const int max = 5;\n int * x = new int[max];"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 3 ); IVariable max = (IVariable) col.getName(0).resolveBinding(); @@ -842,7 +842,7 @@ public class CompleteParser2Tests extends TestCase { // Used to cause AST Semantic exception IASTTranslationUnit tu = parse( "class A{ class B{ class C { public: int cMethod(); }; }; }; \n int A::B::C::cMethod() {}; \n" ); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 9 ); ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); @@ -864,7 +864,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "class A{ public: A(); }; \n A::A() {}; \n" ); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 5 ); ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); @@ -878,7 +878,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "class A{ public: ~A(); }; \n A::~A() {}; \n" ); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 5 ); ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); @@ -892,7 +892,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "class A { }; namespace N { class B : public A { struct A {}; }; }"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 5 ); ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); @@ -912,7 +912,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "class A { int f1(); }; const int x = 4; int f() { return x; } int A::f1() { return x; }"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 9 ); ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); @@ -929,7 +929,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "const int FIVE = 5; void f() { int x = 0; for( int i = 0; i < FIVE; ++i ) { x += i; } }"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 9 ); IVariable FIVE = (IVariable) col.getName(0).resolveBinding(); @@ -945,7 +945,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "union{ int v; char a; } id;" ); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 4 ); @@ -978,7 +978,7 @@ public class CompleteParser2Tests extends TestCase { assertTrue( ifstmt.getElseClause() instanceof IASTCompoundStatement ); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 4 ); @@ -990,7 +990,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "const bool T = true; void foo() { int x = 0; while( T ) { ++x; if( x == 100 ) break; } }"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 6 ); IVariable T = (IVariable) col.getName(0).resolveBinding(); @@ -1014,7 +1014,7 @@ public class CompleteParser2Tests extends TestCase { " blah : ; " + //$NON-NLS-1$ "} "); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 7 ); IVariable x = (IVariable) col.getName(0).resolveBinding(); @@ -1030,7 +1030,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "const int x = 3; int counter = 0; void foo() { do { ++counter; } while( counter != x ); } "); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 6 ); IVariable x = (IVariable) col.getName(0).resolveBinding(); @@ -1043,7 +1043,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "class A { }; void foo() throw ( A ) { throw A; throw; } "); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 4 ); ICompositeType A = (ICompositeType) col.getName(0).resolveBinding(); @@ -1055,7 +1055,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "void foo() { int x = 3; if( x == 1 ) { int x = 4; } else int x = 2; }"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 5 ); IVariable x1 = (IVariable) col.getName(1).resolveBinding(); @@ -1071,7 +1071,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "enum E { e1, e2, e3 }; E anE = e1;"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 7 ); IEnumeration E = (IEnumeration) col.getName(0).resolveBinding(); @@ -1091,7 +1091,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "void foo(); void foo() { } class SearchMe { };"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 3 ); IFunction foo = (IFunction) col.getName(0).resolveBinding(); @@ -1103,7 +1103,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "struct B {}; struct D : B {}; void foo(D* dp) { B* bp = dynamic_cast(dp); }" ); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 10 ); ICompositeType B = (ICompositeType) col.getName(0).resolveBinding(); @@ -1116,7 +1116,7 @@ public class CompleteParser2Tests extends TestCase { public void testBug43503A() throws Exception { IASTTranslationUnit tu = parse("class SD_01 { void f_SD_01() {}}; int main(){ SD_01 * a = new SD_01(); a->f_SD_01(); } "); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 8 ); ICPPClassType SD_01 = (ICPPClassType) col.getName(0).resolveBinding(); @@ -1143,7 +1143,7 @@ public class CompleteParser2Tests extends TestCase { IASTTranslationUnit tu = parse( code.toString() ); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 12 ); ICompositeType OperatorOverload = (ICompositeType) col.getName(0).resolveBinding(); @@ -1161,7 +1161,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "class A { static int x; }; int A::x = 5;" ); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 5 ); ICompositeType A = (ICompositeType) col.getName(0).resolveBinding(); @@ -1175,7 +1175,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "const int w = 2; int x[ 5 ]; int y = sizeof ( x[w] );" ); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 5 ); IVariable w = (IVariable) col.getName(0).resolveBinding(); @@ -1214,7 +1214,7 @@ public class CompleteParser2Tests extends TestCase { IASTTranslationUnit tu = parse( buff.toString() ); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 17 ); ICompositeType SD_02 = (ICompositeType) col.getName(0).resolveBinding(); @@ -1236,7 +1236,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "struct Sample { int size() const; }; extern const Sample * getSample(); int trouble() { return getSample()->size(); } " ); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 7 ); ICompositeType sample = (ICompositeType) col.getName(0).resolveBinding(); @@ -1252,7 +1252,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "struct Sample{int size() const; }; struct Sample; " ); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 3 ); ICompositeType sample = (ICompositeType) col.getName(0).resolveBinding(); @@ -1266,7 +1266,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "class B{ B(); ~B(); }; B::B(){} B::~B(){}" ); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 9 ); ICPPClassType B = (ICPPClassType) col.getName(0).resolveBinding(); @@ -1281,7 +1281,7 @@ public class CompleteParser2Tests extends TestCase { public void testBug44342() throws Exception { IASTTranslationUnit tu = parse("class A { void f(){} void f(int){} }; int main(){ A * a = new A(); a->f();} "); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 10 ); ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); @@ -1344,7 +1344,7 @@ public class CompleteParser2Tests extends TestCase { "void main(){ int i = initialize(); }" ); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 7 ); IFunction init1 = (IFunction) col.getName(0).resolveBinding(); @@ -1364,7 +1364,7 @@ public class CompleteParser2Tests extends TestCase { IASTTranslationUnit tu = parse( buffer.toString() ); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 7 ); ICPPClassType myClass = (ICPPClassType) col.getName(0).resolveBinding(); @@ -1388,7 +1388,7 @@ public class CompleteParser2Tests extends TestCase { IASTTranslationUnit tu = parse( buffer.toString() ); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 12 ); ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); @@ -1420,7 +1420,7 @@ public class CompleteParser2Tests extends TestCase { IASTTranslationUnit tu = parse( buffer.toString() ); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 5 ); ICPPClassType s = (ICPPClassType) col.getName(0).resolveBinding(); @@ -1444,7 +1444,7 @@ public class CompleteParser2Tests extends TestCase { IASTTranslationUnit tu = parse( buffer.toString() ); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 13 ); ICPPNamespace N = (ICPPNamespace) col.getName(0).resolveBinding(); @@ -1468,7 +1468,7 @@ public class CompleteParser2Tests extends TestCase { IASTTranslationUnit tu = parse( buffer.toString() ); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 5 ); IFunction x = (IFunction) col.getName(0).resolveBinding(); @@ -1488,7 +1488,7 @@ public class CompleteParser2Tests extends TestCase { IASTTranslationUnit tu = parse( buffer.toString() ); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 3 ); IFunction foo = (IFunction) col.getName(0).resolveBinding(); @@ -1500,7 +1500,7 @@ public class CompleteParser2Tests extends TestCase { IASTTranslationUnit tu = parse( "A anA; int x = c; class A {}; A * anotherA = &anA; int b;", false ); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 9 ); IProblemBinding p = (IProblemBinding) col.getName(0).resolveBinding(); @@ -1523,7 +1523,7 @@ public class CompleteParser2Tests extends TestCase { IASTTranslationUnit tu = parse ("class A{ int getX() {return x[1];} int x[10];};"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 4 ); @@ -1548,7 +1548,7 @@ public class CompleteParser2Tests extends TestCase { writer.write( "void f( char * ){} \n" ); //$NON-NLS-1$ IASTTranslationUnit tu = parse( writer.toString() ); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 4 ); IFunction f1 = (IFunction) col.getName(0).resolveBinding(); @@ -1567,7 +1567,7 @@ public class CompleteParser2Tests extends TestCase { IASTTranslationUnit tu = parse( writer.toString() ); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 4 ); IFunction f1 = (IFunction) col.getName(0).resolveBinding(); @@ -1586,7 +1586,7 @@ public class CompleteParser2Tests extends TestCase { IASTTranslationUnit tu = parse( writer.toString() ); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 3 ); @@ -1611,7 +1611,7 @@ public class CompleteParser2Tests extends TestCase { IASTTranslationUnit tu = parse( writer.toString() ); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 11 ); IVariable i = (IVariable)col.getName(1).resolveBinding(); @@ -1629,7 +1629,7 @@ public class CompleteParser2Tests extends TestCase { parse( writer.toString() ); IASTTranslationUnit tu = parse( writer.toString() ); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 4 ); ICPPField pfi = (ICPPField)col.getName(2).resolveBinding(); @@ -1648,7 +1648,7 @@ public class CompleteParser2Tests extends TestCase { { IASTTranslationUnit tu = parse( "typedef struct blah sb;"); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 2 ); @@ -1680,7 +1680,7 @@ public class CompleteParser2Tests extends TestCase { IASTTranslationUnit tu = parse( writer.toString() ); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 10 ); @@ -1704,7 +1704,7 @@ public class CompleteParser2Tests extends TestCase { writer.write( "void X::f( T ) { } " ); //$NON-NLS-1$ IASTTranslationUnit tu = parse( writer.toString() ); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 10 ); ICPPClassType X = (ICPPClassType) col.getName(0).resolveBinding(); @@ -1724,7 +1724,7 @@ public class CompleteParser2Tests extends TestCase { writer.write( "class AltG3 : AltG2 { int x;};"); //$NON-NLS-1$ IASTTranslationUnit tu = parse( writer.toString() ); CPPNameCollector col = new CPPNameCollector(); - CPPVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 7 ); ICPPClassType G2 = (ICPPClassType) col.getName(0).resolveBinding(); @@ -1746,7 +1746,7 @@ public class CompleteParser2Tests extends TestCase { IASTTranslationUnit tu = parse( writer.toString(), true, ParserLanguage.C ); CNameCollector col = new CNameCollector(); - CVisitor.visitTranslationUnit( tu, col ); + tu.getVisitor().visitTranslationUnit( col ); assertEquals( col.size(), 9 ); ICompositeType A = (ICompositeType) col.getName(0).resolveBinding(); diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/GCCTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/GCCTests.java index ac5d6829064..e50498ac737 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/GCCTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/GCCTests.java @@ -25,7 +25,6 @@ import org.eclipse.cdt.core.dom.ast.IParameter; import org.eclipse.cdt.core.dom.ast.ITypedef; import org.eclipse.cdt.core.dom.ast.IVariable; import org.eclipse.cdt.core.parser.ParserLanguage; -import org.eclipse.cdt.internal.core.dom.parser.c.CVisitor; /** * @author aniefer @@ -52,7 +51,7 @@ public class GCCTests extends AST2BaseTest { IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C ); CNameCollector collector = new CNameCollector(); - CVisitor.visitTranslationUnit( tu, collector ); + tu.getVisitor().visitTranslationUnit( collector ); assertEquals( collector.size(), 33 ); ICompositeType x = (ICompositeType) collector.getName( 0 ).resolveBinding(); @@ -93,7 +92,7 @@ public class GCCTests extends AST2BaseTest { IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C ); CNameCollector collector = new CNameCollector(); - CVisitor.visitTranslationUnit( tu, collector ); + tu.getVisitor().visitTranslationUnit( collector ); assertEquals( collector.size(), 5 ); IFunction f = (IFunction) collector.getName( 0 ).resolveBinding(); @@ -120,7 +119,7 @@ public class GCCTests extends AST2BaseTest { IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C ); CNameCollector collector = new CNameCollector(); - CVisitor.visitTranslationUnit( tu, collector ); + tu.getVisitor().visitTranslationUnit( collector ); assertEquals( collector.size(), 12 ); @@ -158,7 +157,7 @@ public class GCCTests extends AST2BaseTest { IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C ); CNameCollector collector = new CNameCollector(); - CVisitor.visitTranslationUnit( tu, collector ); + tu.getVisitor().visitTranslationUnit( collector ); assertEquals( collector.size(), 16 ); IVariable loop1 = (IVariable) collector.getName( 0 ).resolveBinding(); @@ -192,7 +191,7 @@ public class GCCTests extends AST2BaseTest { IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C ); CNameCollector collector = new CNameCollector(); - CVisitor.visitTranslationUnit( tu, collector ); + tu.getVisitor().visitTranslationUnit( collector ); assertEquals( collector.size(), 11 ); IVariable nResult = (IVariable) collector.getName( 1 ).resolveBinding(); @@ -220,7 +219,7 @@ public class GCCTests extends AST2BaseTest { IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C ); CNameCollector collector = new CNameCollector(); - CVisitor.visitTranslationUnit( tu, collector ); + tu.getVisitor().visitTranslationUnit( collector ); assertEquals( collector.size(), 11 ); IVariable f = (IVariable) collector.getName( 0 ).resolveBinding(); @@ -250,7 +249,7 @@ public class GCCTests extends AST2BaseTest { IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C ); CNameCollector collector = new CNameCollector(); - CVisitor.visitTranslationUnit( tu, collector ); + tu.getVisitor().visitTranslationUnit( collector ); assertEquals( collector.size(), 19 ); IFunction buggy = (IFunction) collector.getName(0).resolveBinding(); @@ -285,7 +284,7 @@ public class GCCTests extends AST2BaseTest { IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C ); CNameCollector collector = new CNameCollector(); - CVisitor.visitTranslationUnit( tu, collector ); + tu.getVisitor().visitTranslationUnit( collector ); assertEquals( collector.size(), 7 ); IVariable winds = (IVariable) collector.getName( 1 ).resolveBinding(); @@ -311,7 +310,7 @@ public class GCCTests extends AST2BaseTest { IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C ); CNameCollector collector = new CNameCollector(); - CVisitor.visitTranslationUnit( tu, collector ); + tu.getVisitor().visitTranslationUnit( collector ); assertEquals( collector.size(), 15 ); ITypedef uint64 = (ITypedef) collector.getName( 0 ).resolveBinding(); @@ -349,7 +348,7 @@ public class GCCTests extends AST2BaseTest { IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C ); CNameCollector collector = new CNameCollector(); - CVisitor.visitTranslationUnit( tu, collector ); + tu.getVisitor().visitTranslationUnit( collector ); assertEquals( collector.size(), 34 ); IVariable aa = (IVariable) collector.getName( 0 ).resolveBinding(); @@ -391,7 +390,7 @@ public class GCCTests extends AST2BaseTest { IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C ); CNameCollector collector = new CNameCollector(); - CVisitor.visitTranslationUnit( tu, collector ); + tu.getVisitor().visitTranslationUnit( collector ); assertEquals( collector.size(), 11 ); IVariable i = (IVariable) collector.getName( 0 ).resolveBinding(); @@ -420,7 +419,7 @@ public class GCCTests extends AST2BaseTest { IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C ); CNameCollector collector = new CNameCollector(); - CVisitor.visitTranslationUnit( tu, collector ); + tu.getVisitor().visitTranslationUnit( collector ); assertEquals( collector.size(), 14 ); IFunction f = (IFunction) collector.getName( 0 ).resolveBinding(); @@ -460,7 +459,7 @@ public class GCCTests extends AST2BaseTest { IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C ); CNameCollector collector = new CNameCollector(); - CVisitor.visitTranslationUnit( tu, collector ); + tu.getVisitor().visitTranslationUnit( collector ); assertEquals( collector.size(), 36 ); IField y = (IField) collector.getName( 1 ).resolveBinding(); @@ -505,7 +504,7 @@ public class GCCTests extends AST2BaseTest { IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C ); CNameCollector collector = new CNameCollector(); - CVisitor.visitTranslationUnit( tu, collector ); + tu.getVisitor().visitTranslationUnit( collector ); assertEquals( collector.size(), 43 ); IFunction f = (IFunction) collector.getName( 0 ).resolveBinding(); @@ -551,7 +550,7 @@ public class GCCTests extends AST2BaseTest { IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C ); CNameCollector collector = new CNameCollector(); - CVisitor.visitTranslationUnit( tu, collector ); + tu.getVisitor().visitTranslationUnit( collector ); assertEquals( collector.size(), 10 ); IField node = (IField) collector.getName( 3 ).resolveBinding(); @@ -580,7 +579,7 @@ public class GCCTests extends AST2BaseTest { IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C ); CNameCollector collector = new CNameCollector(); - CVisitor.visitTranslationUnit( tu, collector ); + tu.getVisitor().visitTranslationUnit( collector ); assertEquals( collector.size(), 25 ); ICompositeType foo = (ICompositeType) collector.getName( 0 ).resolveBinding(); @@ -622,7 +621,7 @@ public class GCCTests extends AST2BaseTest { IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C ); CNameCollector collector = new CNameCollector(); - CVisitor.visitTranslationUnit( tu, collector ); + tu.getVisitor().visitTranslationUnit( collector ); assertEquals( collector.size(), 6 ); IFunction sub = (IFunction) collector.getName( 0 ).resolveBinding(); @@ -664,7 +663,7 @@ public class GCCTests extends AST2BaseTest { IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C ); CNameCollector collector = new CNameCollector(); - CVisitor.visitTranslationUnit( tu, collector ); + tu.getVisitor().visitTranslationUnit( collector ); assertEquals( collector.size(), 95 ); IFunction f = (IFunction) collector.getName( 0 ).resolveBinding(); @@ -704,7 +703,7 @@ public class GCCTests extends AST2BaseTest { IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C ); CNameCollector collector = new CNameCollector(); - CVisitor.visitTranslationUnit( tu, collector ); + tu.getVisitor().visitTranslationUnit( collector ); assertEquals( collector.size(), 22 ); ICompositeType s1 = (ICompositeType) collector.getName( 0 ).resolveBinding(); @@ -742,7 +741,7 @@ public class GCCTests extends AST2BaseTest { IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C ); CNameCollector collector = new CNameCollector(); - CVisitor.visitTranslationUnit( tu, collector ); + tu.getVisitor().visitTranslationUnit( collector ); assertEquals( collector.size(), 27 ); ICompositeType F = (ICompositeType) collector.getName( 0 ).resolveBinding(); @@ -780,7 +779,7 @@ public class GCCTests extends AST2BaseTest { IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C ); CNameCollector collector = new CNameCollector(); - CVisitor.visitTranslationUnit( tu, collector ); + tu.getVisitor().visitTranslationUnit( collector ); assertEquals( collector.size(), 14 ); ICompositeType F = (ICompositeType) collector.getName( 0 ).resolveBinding(); @@ -811,7 +810,7 @@ public class GCCTests extends AST2BaseTest { IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C ); CNameCollector collector = new CNameCollector(); - CVisitor.visitTranslationUnit( tu, collector ); + tu.getVisitor().visitTranslationUnit( collector ); assertEquals( collector.size(), 11 ); IEnumeration foo = (IEnumeration) collector.getName( 0 ).resolveBinding(); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTTranslationUnit.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTTranslationUnit.java index 2032705ac82..9e87073a028 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTTranslationUnit.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTTranslationUnit.java @@ -74,5 +74,7 @@ public interface IASTTranslationUnit extends IASTNode { public IASTProblem[] getPreprocesorProblems(); public String getUnpreprocessedSignature( IASTNodeLocation [] locations ); + + public IASTVisitor getVisitor(); } \ No newline at end of file diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTVisitor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTVisitor.java new file mode 100644 index 00000000000..56d7dacee97 --- /dev/null +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTVisitor.java @@ -0,0 +1,66 @@ +/******************************************************************************* + * Copyright (c) 2004 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ + +/* + * Created on Feb 22, 2005 + */ +package org.eclipse.cdt.core.dom.ast; + +import org.eclipse.cdt.core.dom.ast.IASTEnumerationSpecifier.IASTEnumerator; + +/** + * @author aniefer + */ +public interface IASTVisitor { + public static abstract class BaseVisitorAction { + public boolean processNames = false; + public boolean processDeclarations = false; + public boolean processInitializers = false; + public boolean processParameterDeclarations = false; + public boolean processDeclarators = false; + public boolean processDeclSpecifiers = false; + public boolean processExpressions = false; + public boolean processStatements = false; + public boolean processTypeIds = false; + public boolean processEnumerators = false; + + /** + * @return continue to continue visiting, abort to stop, skip to not descend into this node. + */ + public final static int PROCESS_SKIP = 1; + public final static int PROCESS_ABORT = 2; + public final static int PROCESS_CONTINUE = 3; + + + public int processName( IASTName name ) { return PROCESS_CONTINUE; } + public int processDeclaration( IASTDeclaration declaration ){ return PROCESS_CONTINUE; } + public int processInitializer( IASTInitializer initializer ){ return PROCESS_CONTINUE; } + public int processParameterDeclaration( IASTParameterDeclaration parameterDeclaration ) { return PROCESS_CONTINUE; } + public int processDeclarator( IASTDeclarator declarator ) { return PROCESS_CONTINUE; } + public int processDeclSpecifier( IASTDeclSpecifier declSpec ){return PROCESS_CONTINUE; } + public int processExpression( IASTExpression expression ) { return PROCESS_CONTINUE; } + public int processStatement( IASTStatement statement ) { return PROCESS_CONTINUE; } + public int processTypeId( IASTTypeId typeId ) { return PROCESS_CONTINUE; } + public int processEnumerator( IASTEnumerator enumerator ) { return PROCESS_CONTINUE; } + } + + public void visitTranslationUnit( BaseVisitorAction action ); + public boolean visitDeclaration( IASTDeclaration declaration, BaseVisitorAction action ); + public boolean visitName( IASTName name, BaseVisitorAction action ); + public boolean visitDeclSpecifier( IASTDeclSpecifier declSpecifier, BaseVisitorAction action ); + public boolean visitDeclarator( IASTDeclarator declarator, BaseVisitorAction action ); + public boolean visitStatement( IASTStatement statement, BaseVisitorAction action ); + public boolean visitExpression( IASTExpression expression, BaseVisitorAction action ); + public boolean visitTypeId( IASTTypeId typeId, BaseVisitorAction action ); + public boolean visitInitializer( IASTInitializer initializer, BaseVisitorAction action ); + public boolean visitEnumerator( IASTEnumerator enumerator, BaseVisitorAction action ); + public boolean visitParameterDeclaration( IASTParameterDeclaration parameterDeclaration, BaseVisitorAction action ); +} \ No newline at end of file diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/c/ICASTVisitor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/c/ICASTVisitor.java new file mode 100644 index 00000000000..7266b2073cd --- /dev/null +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/c/ICASTVisitor.java @@ -0,0 +1,31 @@ +/******************************************************************************* + * Copyright (c) 2004 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ + +/* + * Created on Feb 22, 2005 + */ +package org.eclipse.cdt.core.dom.ast.c; + +import org.eclipse.cdt.core.dom.ast.IASTVisitor; + +/** + * @author aniefer + */ +public interface ICASTVisitor extends IASTVisitor { + + public static abstract class CBaseVisitorAction extends BaseVisitorAction { + public boolean processDesignators = false; + + public int processDesignator( ICASTDesignator designator ) { return PROCESS_CONTINUE; } + } + + public boolean visitDesignator( ICASTDesignator designator, BaseVisitorAction action ); +} \ No newline at end of file diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTVisitor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTVisitor.java new file mode 100644 index 00000000000..7b28fa52eac --- /dev/null +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTVisitor.java @@ -0,0 +1,39 @@ +/******************************************************************************* + * Copyright (c) 2004 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ + +/* + * Created on Feb 22, 2005 + */ +package org.eclipse.cdt.core.dom.ast.cpp; + +import org.eclipse.cdt.core.dom.ast.IASTVisitor; +import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier.ICPPASTBaseSpecifier; + +/** + * @author aniefer + */ +public interface ICPPASTVisitor extends IASTVisitor { + + public static abstract class CPPBaseVisitorAction extends BaseVisitorAction{ + public boolean processBaseSpecifiers = false; + public boolean processNamespaces = false; + public boolean processTemplateParameters = false; + + public int processBaseSpecifier(ICPPASTBaseSpecifier specifier) { return PROCESS_CONTINUE; } + public int processNamespace( ICPPASTNamespaceDefinition namespace) { return PROCESS_CONTINUE; } + public int processTemplateParameter( ICPPASTTemplateParameter parameter) { return PROCESS_CONTINUE; } + } + + + public boolean visitNamespaceDefinition( ICPPASTNamespaceDefinition namespace, BaseVisitorAction action ); + public abstract boolean visitBaseSpecifier( ICPPASTBaseSpecifier specifier, BaseVisitorAction action ); + public abstract boolean visitTemplateParameter( ICPPASTTemplateParameter parameter, BaseVisitorAction action ); +} diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTTranslationUnit.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTTranslationUnit.java index db7609abcb7..3c8d7419e22 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTTranslationUnit.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTTranslationUnit.java @@ -12,14 +12,15 @@ package org.eclipse.cdt.internal.core.dom.parser.c; import org.eclipse.cdt.core.dom.ast.ASTNodeProperty; import org.eclipse.cdt.core.dom.ast.IASTDeclaration; -import org.eclipse.cdt.core.dom.ast.IASTPreprocessorMacroDefinition; import org.eclipse.cdt.core.dom.ast.IASTName; import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.IASTNodeLocation; import org.eclipse.cdt.core.dom.ast.IASTPreprocessorIncludeStatement; +import org.eclipse.cdt.core.dom.ast.IASTPreprocessorMacroDefinition; import org.eclipse.cdt.core.dom.ast.IASTPreprocessorStatement; import org.eclipse.cdt.core.dom.ast.IASTProblem; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; +import org.eclipse.cdt.core.dom.ast.IASTVisitor; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IScope; import org.eclipse.cdt.internal.core.dom.parser.IRequiresLocationInformation; @@ -37,6 +38,7 @@ public class CASTTranslationUnit extends CASTNode implements IASTTranslationUnit //Binding private CScope compilationUnit = null; + private CVisitor visitor = null; private ILocationResolver resolver; private static final IASTPreprocessorStatement[] EMPTY_PREPROCESSOR_STATEMENT_ARRAY = new IASTPreprocessorStatement[0]; private static final IASTNodeLocation[] EMPTY_PREPROCESSOR_LOCATION_ARRAY = new IASTNodeLocation[0]; @@ -227,4 +229,14 @@ public class CASTTranslationUnit extends CASTNode implements IASTTranslationUnit if( resolver == null ) return EMPTY_STRING; return new String( resolver.getUnpreprocessedSignature(locations) ); } + + + /* (non-Javadoc) + * @see org.eclipse.cdt.core.dom.ast.IASTTranslationUnit#getVisitor() + */ + public IASTVisitor getVisitor() { + if( visitor == null ) + visitor = new CVisitor( this ); + return visitor; + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CFunctionScope.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CFunctionScope.java index afe4ad57ab8..7a1621d7c6d 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CFunctionScope.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CFunctionScope.java @@ -21,9 +21,9 @@ import org.eclipse.cdt.core.dom.ast.ILabel; import org.eclipse.cdt.core.dom.ast.IScope; import org.eclipse.cdt.core.dom.ast.c.ICFunctionScope; import org.eclipse.cdt.core.dom.ast.c.ICScope; +import org.eclipse.cdt.core.dom.ast.c.ICASTVisitor.CBaseVisitorAction; import org.eclipse.cdt.core.parser.util.ArrayUtil; import org.eclipse.cdt.core.parser.util.CharArrayObjectMap; -import org.eclipse.cdt.internal.core.dom.parser.c.CVisitor.CBaseVisitorAction; /** * Created on Nov 8, 2004 @@ -85,7 +85,8 @@ public class CFunctionScope implements ICFunctionScope { public ILabel[] getLabels(){ FindLabelsAction action = new FindLabelsAction(); - CVisitor.visitDeclaration( function, action ); + + function.getTranslationUnit().getVisitor().visitDeclaration( function, action ); ILabel [] result = null; if( action.labels != null ){ diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVisitor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVisitor.java index 2f47157382a..f2c2faeabb3 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVisitor.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVisitor.java @@ -90,6 +90,7 @@ import org.eclipse.cdt.core.dom.ast.c.ICASTPointer; import org.eclipse.cdt.core.dom.ast.c.ICASTSimpleDeclSpecifier; import org.eclipse.cdt.core.dom.ast.c.ICASTTypeIdInitializerExpression; import org.eclipse.cdt.core.dom.ast.c.ICASTTypedefNameSpecifier; +import org.eclipse.cdt.core.dom.ast.c.ICASTVisitor; import org.eclipse.cdt.core.dom.ast.c.ICCompositeTypeScope; import org.eclipse.cdt.core.dom.ast.c.ICFunctionScope; import org.eclipse.cdt.core.dom.ast.c.ICScope; @@ -100,46 +101,12 @@ import org.eclipse.cdt.core.parser.util.CharArrayUtils; import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer; import org.eclipse.cdt.internal.core.dom.parser.ProblemBinding; import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPFunctionType; -import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.CPPBaseVisitorAction; /** * Created on Nov 5, 2004 * @author aniefer */ -public class CVisitor { - public static abstract class CBaseVisitorAction { - public boolean processNames = false; - public boolean processDeclarations = false; - public boolean processInitializers = false; - public boolean processParameterDeclarations = false; - public boolean processDeclarators = false; - public boolean processDeclSpecifiers = false; - public boolean processExpressions = false; - public boolean processStatements = false; - public boolean processTypeIds = false; - public boolean processEnumerators = false; - public boolean processDesignators = false; - /** - * @return true to continue visiting, abort to stop, skip to not descend into this node. - */ - public final static int PROCESS_SKIP = 1; - public final static int PROCESS_ABORT = 2; - public final static int PROCESS_CONTINUE = 3; - - - public int processName( IASTName name ) { return PROCESS_CONTINUE; } - public int processDeclaration( IASTDeclaration declaration ){ return PROCESS_CONTINUE; } - public int processInitializer( IASTInitializer initializer ){ return PROCESS_CONTINUE; } - public int processParameterDeclaration( IASTParameterDeclaration parameterDeclaration ) { return PROCESS_CONTINUE; } - public int processDeclarator( IASTDeclarator declarator ) { return PROCESS_CONTINUE; } - public int processDeclSpecifier( IASTDeclSpecifier declSpec ){return PROCESS_CONTINUE; } - public int processExpression( IASTExpression expression ) { return PROCESS_CONTINUE; } - public int processStatement( IASTStatement statement ) { return PROCESS_CONTINUE; } - public int processTypeId( IASTTypeId typeId ) { return PROCESS_CONTINUE; } - public int processEnumerator( IASTEnumerator enumerator ) { return PROCESS_CONTINUE; } - public int processDesignator( ICASTDesignator designator ) { return PROCESS_CONTINUE; } - } - +public class CVisitor implements ICASTVisitor { public static class ClearBindingAction extends CBaseVisitorAction { { processNames = true; @@ -1364,32 +1331,37 @@ public class CVisitor { } public static void clearBindings( IASTTranslationUnit tu ){ - visitTranslationUnit( tu, new ClearBindingAction() ); + tu.getVisitor().visitTranslationUnit( new ClearBindingAction() ); } - public static void visitTranslationUnit( IASTTranslationUnit tu, CBaseVisitorAction action ){ + private IASTTranslationUnit tu = null; + public CVisitor( IASTTranslationUnit tu ) { + this.tu = tu; + } + + public void visitTranslationUnit( BaseVisitorAction action ){ IASTDeclaration[] decls = tu.getDeclarations(); for( int i = 0; i < decls.length; i++ ){ if( !visitDeclaration( decls[i], action ) ) return; } } - public static boolean visitName( IASTName name, CBaseVisitorAction action ){ + public boolean visitName( IASTName name, BaseVisitorAction action ){ if( action.processNames ) { switch( action.processName( name ) ){ - case CPPBaseVisitorAction.PROCESS_ABORT : return false; - case CPPBaseVisitorAction.PROCESS_SKIP : return true; + case BaseVisitorAction.PROCESS_ABORT : return false; + case BaseVisitorAction.PROCESS_SKIP : return true; default : break; } } return true; } - public static boolean visitDeclaration( IASTDeclaration declaration, CBaseVisitorAction action ){ + public boolean visitDeclaration( IASTDeclaration declaration, BaseVisitorAction action ){ if( action.processDeclarations ) { switch( action.processDeclaration( declaration ) ){ - case CPPBaseVisitorAction.PROCESS_ABORT : return false; - case CPPBaseVisitorAction.PROCESS_SKIP : return true; + case BaseVisitorAction.PROCESS_ABORT : return false; + case BaseVisitorAction.PROCESS_SKIP : return true; default : break; } } @@ -1409,11 +1381,11 @@ public class CVisitor { } return true; } - public static boolean visitDeclarator( IASTDeclarator declarator, CBaseVisitorAction action ){ + public boolean visitDeclarator( IASTDeclarator declarator, BaseVisitorAction action ){ if( action.processDeclarators ){ switch( action.processDeclarator( declarator ) ){ - case CPPBaseVisitorAction.PROCESS_ABORT : return false; - case CPPBaseVisitorAction.PROCESS_SKIP : return true; + case BaseVisitorAction.PROCESS_ABORT : return false; + case BaseVisitorAction.PROCESS_SKIP : return true; default : break; } } @@ -1462,14 +1434,14 @@ public class CVisitor { return true; } - public static boolean visitInitializer( IASTInitializer initializer, CBaseVisitorAction action ){ + public boolean visitInitializer( IASTInitializer initializer, BaseVisitorAction action ){ if( initializer == null ) return true; if( action.processInitializers ){ switch( action.processInitializer( initializer ) ){ - case CPPBaseVisitorAction.PROCESS_ABORT : return false; - case CPPBaseVisitorAction.PROCESS_SKIP : return true; + case BaseVisitorAction.PROCESS_ABORT : return false; + case BaseVisitorAction.PROCESS_SKIP : return true; default : break; } } @@ -1491,11 +1463,11 @@ public class CVisitor { } return true; } - public static boolean visitDesignator( ICASTDesignator designator, CBaseVisitorAction action ){ - if( action.processDesignators ){ - switch( action.processDesignator( designator ) ){ - case CPPBaseVisitorAction.PROCESS_ABORT : return false; - case CPPBaseVisitorAction.PROCESS_SKIP : return true; + public boolean visitDesignator( ICASTDesignator designator, BaseVisitorAction action ){ + if( action instanceof CBaseVisitorAction && ((CBaseVisitorAction)action).processDesignators ){ + switch( ((CBaseVisitorAction)action).processDesignator( designator ) ){ + case BaseVisitorAction.PROCESS_ABORT : return false; + case BaseVisitorAction.PROCESS_SKIP : return true; default : break; } } @@ -1509,11 +1481,11 @@ public class CVisitor { } return true; } - public static boolean visitParameterDeclaration( IASTParameterDeclaration parameterDeclaration, CBaseVisitorAction action ){ + public boolean visitParameterDeclaration( IASTParameterDeclaration parameterDeclaration, BaseVisitorAction action ){ if( action.processParameterDeclarations ){ switch( action.processParameterDeclaration( parameterDeclaration ) ){ - case CPPBaseVisitorAction.PROCESS_ABORT : return false; - case CPPBaseVisitorAction.PROCESS_SKIP : return true; + case BaseVisitorAction.PROCESS_ABORT : return false; + case BaseVisitorAction.PROCESS_SKIP : return true; default : break; } } @@ -1523,11 +1495,11 @@ public class CVisitor { return true; } - public static boolean visitDeclSpecifier( IASTDeclSpecifier declSpec, CBaseVisitorAction action ){ + public boolean visitDeclSpecifier( IASTDeclSpecifier declSpec, BaseVisitorAction action ){ if( action.processDeclSpecifiers ){ switch( action.processDeclSpecifier( declSpec ) ){ - case CPPBaseVisitorAction.PROCESS_ABORT : return false; - case CPPBaseVisitorAction.PROCESS_SKIP : return true; + case BaseVisitorAction.PROCESS_ABORT : return false; + case BaseVisitorAction.PROCESS_SKIP : return true; default : break; } } @@ -1554,11 +1526,11 @@ public class CVisitor { } return true; } - public static boolean visitEnumerator( IASTEnumerator enumerator, CBaseVisitorAction action ){ + public boolean visitEnumerator( IASTEnumerator enumerator, BaseVisitorAction action ){ if( action.processEnumerators ){ switch( action.processEnumerator( enumerator ) ){ - case CPPBaseVisitorAction.PROCESS_ABORT : return false; - case CPPBaseVisitorAction.PROCESS_SKIP : return true; + case BaseVisitorAction.PROCESS_ABORT : return false; + case BaseVisitorAction.PROCESS_SKIP : return true; default : break; } } @@ -1569,12 +1541,12 @@ public class CVisitor { return true; } - private static boolean visitIfStatement( IASTIfStatement ifStatement, CBaseVisitorAction action ){ + private boolean visitIfStatement( IASTIfStatement ifStatement, BaseVisitorAction action ){ while( ifStatement != null ){ if( action.processStatements ){ switch( action.processStatement( ifStatement ) ){ - case CPPBaseVisitorAction.PROCESS_ABORT : return false; - case CPPBaseVisitorAction.PROCESS_SKIP : return true; + case BaseVisitorAction.PROCESS_ABORT : return false; + case BaseVisitorAction.PROCESS_SKIP : return true; default : break; } } @@ -1592,15 +1564,15 @@ public class CVisitor { } return true; } - public static boolean visitStatement( IASTStatement statement, CBaseVisitorAction action ){ + public boolean visitStatement( IASTStatement statement, BaseVisitorAction action ){ //handle if's in a non-recursive manner to avoid stack overflows in case of huge number of elses if( statement instanceof IASTIfStatement ) return visitIfStatement( (IASTIfStatement) statement, action ); if( action.processStatements ){ switch( action.processStatement( statement ) ){ - case CPPBaseVisitorAction.PROCESS_ABORT : return false; - case CPPBaseVisitorAction.PROCESS_SKIP : return true; + case BaseVisitorAction.PROCESS_ABORT : return false; + case BaseVisitorAction.PROCESS_SKIP : return true; default : break; } } @@ -1645,11 +1617,11 @@ public class CVisitor { } return true; } - public static boolean visitTypeId( IASTTypeId typeId, CBaseVisitorAction action ){ + public boolean visitTypeId( IASTTypeId typeId, BaseVisitorAction action ){ if( action.processTypeIds ){ switch( action.processTypeId( typeId ) ){ - case CPPBaseVisitorAction.PROCESS_ABORT : return false; - case CPPBaseVisitorAction.PROCESS_SKIP : return true; + case BaseVisitorAction.PROCESS_ABORT : return false; + case BaseVisitorAction.PROCESS_SKIP : return true; default : break; } } @@ -1658,13 +1630,13 @@ public class CVisitor { if( !visitDeclSpecifier( typeId.getDeclSpecifier(), action ) ) return false; return true; } - public static boolean visitExpression( IASTExpression expression, CBaseVisitorAction action ){ + public boolean visitExpression( IASTExpression expression, BaseVisitorAction action ){ if (expression == null) return true; if( action.processExpressions ){ switch( action.processExpression( expression ) ){ - case CPPBaseVisitorAction.PROCESS_ABORT : return false; - case CPPBaseVisitorAction.PROCESS_SKIP : return true; + case BaseVisitorAction.PROCESS_ABORT : return false; + case BaseVisitorAction.PROCESS_SKIP : return true; default : break; } } @@ -1950,14 +1922,14 @@ public class CVisitor { public static IASTProblem[] getProblems(IASTTranslationUnit tu) { CollectProblemsAction action = new CollectProblemsAction(); - visitTranslationUnit(tu, action); + tu.getVisitor().visitTranslationUnit(action); return action.getProblems(); } public static IASTName[] getDeclarations(IASTTranslationUnit tu, IBinding binding) { CollectDeclarationsAction action = new CollectDeclarationsAction(binding); - visitTranslationUnit(tu, action); + tu.getVisitor().visitTranslationUnit(action); return action.getDeclarationNames(); } @@ -1969,7 +1941,7 @@ public class CVisitor { */ public static IASTName[] getReferences(IASTTranslationUnit tu, IBinding binding) { CollectReferencesAction action = new CollectReferencesAction( binding ); - visitTranslationUnit( tu, action ); + tu.getVisitor().visitTranslationUnit(action); return action.getReferences(); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTranslationUnit.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTranslationUnit.java index 7dfcce8f247..f47fb959bde 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTranslationUnit.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTranslationUnit.java @@ -20,9 +20,11 @@ import org.eclipse.cdt.core.dom.ast.IASTPreprocessorMacroDefinition; import org.eclipse.cdt.core.dom.ast.IASTPreprocessorStatement; import org.eclipse.cdt.core.dom.ast.IASTProblem; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; +import org.eclipse.cdt.core.dom.ast.IASTVisitor; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IScope; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTranslationUnit; +import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTVisitor; import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespace; import org.eclipse.cdt.core.dom.ast.cpp.ICPPScope; import org.eclipse.cdt.internal.core.dom.parser.IRequiresLocationInformation; @@ -38,6 +40,8 @@ public class CPPASTTranslationUnit extends CPPASTNode implements private ICPPNamespace binding = null; private ICPPScope scope = null; + + private ICPPASTVisitor visitor = null; private static final int DEFAULT_CHILDREN_LIST_SIZE = 8; @@ -257,4 +261,13 @@ public class CPPASTTranslationUnit extends CPPASTNode implements if( resolver == null ) return EMPTY_STRING; return new String( resolver.getUnpreprocessedSignature(locations) ); } + + /* (non-Javadoc) + * @see org.eclipse.cdt.core.dom.ast.IASTTranslationUnit#getVisitor() + */ + public IASTVisitor getVisitor() { + if( visitor == null ) + visitor = new CPPVisitor( this ); + return visitor; + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassType.java index 17062d22937..5a1ab810813 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassType.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassType.java @@ -26,7 +26,6 @@ import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration; import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclaration; import org.eclipse.cdt.core.dom.ast.IASTStatement; -import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IField; import org.eclipse.cdt.core.dom.ast.IProblemBinding; @@ -37,6 +36,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTDeclSpecifier; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTElaboratedTypeSpecifier; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNamespaceDefinition; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTQualifiedName; +import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTVisitor; import org.eclipse.cdt.core.dom.ast.cpp.ICPPBase; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassScope; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType; @@ -160,22 +160,18 @@ public class CPPClassType implements ICPPClassType, ICPPBinding { private void checkForDefinition(){ FindDefinitionAction action = new FindDefinitionAction(); IASTNode node = CPPVisitor.getContainingBlockItem( getPhysicalNode() ).getParent(); + ICPPASTVisitor visitor = (ICPPASTVisitor) node.getTranslationUnit().getVisitor(); if( node instanceof ICPPASTNamespaceDefinition ){ - CPPVisitor.visitNamespaceDefinition( (ICPPASTNamespaceDefinition) node, action ); + visitor.visitNamespaceDefinition( (ICPPASTNamespaceDefinition) node, action ); definition = action.result; } else if( node instanceof IASTCompoundStatement ){ //a local class, nowhere else to look if we don't find it here... - CPPVisitor.visitStatement( (IASTStatement) node, action ); + visitor.visitStatement( (IASTStatement) node, action ); definition = action.result; return; } if( definition == null ){ - IASTTranslationUnit tu = null; - while( !(node instanceof IASTTranslationUnit) ) { - node = node.getParent(); - } - tu = (IASTTranslationUnit) node; - CPPVisitor.visitTranslationUnit( tu, action ); + visitor.visitTranslationUnit( action ); definition = action.result; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPNamespace.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPNamespace.java index 5ac74fc93f1..640087fc315 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPNamespace.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPNamespace.java @@ -22,8 +22,10 @@ import org.eclipse.cdt.core.dom.ast.IASTName; import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IScope; +import org.eclipse.cdt.core.dom.ast.IASTVisitor.BaseVisitorAction; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNamespaceDefinition; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTranslationUnit; +import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTVisitor; import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespace; import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespaceScope; import org.eclipse.cdt.core.parser.util.CharArrayUtils; @@ -91,11 +93,12 @@ public class CPPNamespace implements ICPPNamespace, ICPPBinding { ICPPASTNamespaceDefinition nsDef = (ICPPASTNamespaceDefinition) namespaceName.getParent(); IASTNode node = nsDef.getParent(); + ICPPASTVisitor visitor = (ICPPASTVisitor) node.getTranslationUnit().getVisitor(); if( node instanceof IASTTranslationUnit ) - CPPVisitor.visitTranslationUnit( (IASTTranslationUnit) node, collector ); + visitor.visitTranslationUnit( collector ); else if( node instanceof ICPPASTNamespaceDefinition ){ - collector.processResult = CPPVisitor.CPPBaseVisitorAction.PROCESS_CONTINUE; - CPPVisitor.visitNamespaceDefinition( (ICPPASTNamespaceDefinition) node, collector ); + collector.processResult = BaseVisitorAction.PROCESS_CONTINUE; + visitor.visitNamespaceDefinition( (ICPPASTNamespaceDefinition) node, collector ); } int size = collector.namespaces.size(); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPVisitor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPVisitor.java index fa21fa80824..ec0ebcf2f67 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPVisitor.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPVisitor.java @@ -85,7 +85,6 @@ import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.ITypedef; import org.eclipse.cdt.core.dom.ast.IVariable; import org.eclipse.cdt.core.dom.ast.IASTEnumerationSpecifier.IASTEnumerator; -import org.eclipse.cdt.core.dom.ast.c.ICASTFieldDesignator; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTBinaryExpression; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCatchHandler; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier; @@ -111,10 +110,12 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTSimpleTypeConstructorExpression; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateDeclaration; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateParameter; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateSpecialization; +import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTryBlockStatement; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTypenameExpression; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTUsingDeclaration; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTUsingDirective; +import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTVisitor; import org.eclipse.cdt.core.dom.ast.cpp.ICPPBasicType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPBlockScope; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassScope; @@ -135,7 +136,7 @@ import org.eclipse.cdt.internal.core.dom.parser.ProblemBinding; /** * @author aniefer */ -public class CPPVisitor { +public class CPPVisitor implements ICPPASTVisitor { /** * @param name @@ -681,41 +682,6 @@ public class CPPVisitor { return null; } - public static abstract class CPPBaseVisitorAction { - public boolean processNames = false; - public boolean processDeclarations = false; - public boolean processInitializers = false; - public boolean processParameterDeclarations = false; - public boolean processDeclarators = false; - public boolean processDeclSpecifiers = false; - public boolean processExpressions = false; - public boolean processStatements = false; - public boolean processTypeIds = false; - public boolean processEnumerators = false; - public boolean processBaseSpecifiers = false; - public boolean processNamespaces = false; - - /** - * @return true to continue visiting, return false to stop - */ - public final static int PROCESS_SKIP = 1; - public final static int PROCESS_ABORT = 2; - public final static int PROCESS_CONTINUE = 3; - - public int processName( IASTName name ) { return PROCESS_CONTINUE; } - public int processDeclaration( IASTDeclaration declaration ){ return PROCESS_CONTINUE; } - public int processInitializer( IASTInitializer initializer ){ return PROCESS_CONTINUE; } - public int processParameterDeclaration( IASTParameterDeclaration parameterDeclaration ) { return PROCESS_CONTINUE; } - public int processDeclarator( IASTDeclarator declarator ) { return PROCESS_CONTINUE; } - public int processDeclSpecifier( IASTDeclSpecifier declSpec ){return PROCESS_CONTINUE; } - public int processExpression( IASTExpression expression ) { return PROCESS_CONTINUE; } - public int processStatement( IASTStatement statement ) { return PROCESS_CONTINUE; } - public int processTypeId( IASTTypeId typeId ) { return PROCESS_CONTINUE; } - public int processEnumerator( IASTEnumerator enumerator ) { return PROCESS_CONTINUE; } - public int processBaseSpecifier(ICPPASTBaseSpecifier specifier) { return PROCESS_CONTINUE; } - public int processNamespace( ICPPASTNamespaceDefinition namespace) { return PROCESS_CONTINUE; } - } - public static class CollectProblemsAction extends CPPBaseVisitorAction { { processDeclarations = true; @@ -974,7 +940,6 @@ public class CPPVisitor { case KIND_OBJ_FN: if( prop == IASTIdExpression.ID_NAME || prop == IASTFieldReference.FIELD_NAME || - prop == ICASTFieldDesignator.FIELD_NAME || prop == ICPPASTUsingDirective.QUALIFIED_NAME || prop == ICPPASTUsingDeclaration.NAME || prop == IASTFunctionCallExpression.FUNCTION_NAME || @@ -1017,19 +982,23 @@ public class CPPVisitor { } } + private IASTTranslationUnit tu = null; + public CPPVisitor( ICPPASTTranslationUnit tu ){ + this.tu = tu; + } - public static void visitTranslationUnit( IASTTranslationUnit tu, CPPBaseVisitorAction action ){ + public void visitTranslationUnit( BaseVisitorAction action ){ IASTDeclaration [] decls = tu.getDeclarations(); for( int i = 0; i < decls.length; i++ ){ if( !visitDeclaration( decls[i], action ) ) return; } } - public static boolean visitNamespaceDefinition( ICPPASTNamespaceDefinition namespace, CPPBaseVisitorAction action ){ - if( action.processNamespaces ){ - switch( action.processNamespace( namespace ) ){ - case CPPBaseVisitorAction.PROCESS_ABORT : return false; - case CPPBaseVisitorAction.PROCESS_SKIP : return true; + public boolean visitNamespaceDefinition( ICPPASTNamespaceDefinition namespace, BaseVisitorAction action ){ + if( action instanceof CPPBaseVisitorAction && ((CPPBaseVisitorAction)action).processNamespaces ){ + switch( ((CPPBaseVisitorAction)action).processNamespace( namespace ) ){ + case BaseVisitorAction.PROCESS_ABORT : return false; + case BaseVisitorAction.PROCESS_SKIP : return true; default : break; } } @@ -1046,14 +1015,14 @@ public class CPPVisitor { * @param action * @return */ - public static boolean visitDeclaration(IASTDeclaration declaration, CPPBaseVisitorAction action) { + public boolean visitDeclaration(IASTDeclaration declaration, BaseVisitorAction action) { if( declaration instanceof ICPPASTNamespaceDefinition ) return visitNamespaceDefinition( (ICPPASTNamespaceDefinition) declaration, action ); if( action.processDeclarations ) { switch( action.processDeclaration( declaration ) ){ - case CPPBaseVisitorAction.PROCESS_ABORT : return false; - case CPPBaseVisitorAction.PROCESS_SKIP : return true; + case BaseVisitorAction.PROCESS_ABORT : return false; + case BaseVisitorAction.PROCESS_SKIP : return true; default : break; } } @@ -1101,11 +1070,11 @@ public class CPPVisitor { * @param action * @return */ - public static boolean visitName(IASTName name, CPPBaseVisitorAction action) { + public boolean visitName(IASTName name, BaseVisitorAction action) { if( action.processNames ){ switch( action.processName( name ) ){ - case CPPBaseVisitorAction.PROCESS_ABORT : return false; - case CPPBaseVisitorAction.PROCESS_SKIP : return true; + case BaseVisitorAction.PROCESS_ABORT : return false; + case BaseVisitorAction.PROCESS_SKIP : return true; default : break; } } @@ -1126,11 +1095,11 @@ public class CPPVisitor { * @param action * @return */ - public static boolean visitDeclSpecifier(IASTDeclSpecifier declSpecifier, CPPBaseVisitorAction action) { + public boolean visitDeclSpecifier(IASTDeclSpecifier declSpecifier, BaseVisitorAction action) { if( action.processDeclSpecifiers ){ switch( action.processDeclSpecifier( declSpecifier ) ){ - case CPPBaseVisitorAction.PROCESS_ABORT : return false; - case CPPBaseVisitorAction.PROCESS_SKIP : return true; + case BaseVisitorAction.PROCESS_ABORT : return false; + case BaseVisitorAction.PROCESS_SKIP : return true; default : break; } } @@ -1170,11 +1139,11 @@ public class CPPVisitor { * @param action * @return */ - public static boolean visitDeclarator(IASTDeclarator declarator, CPPBaseVisitorAction action) { + public boolean visitDeclarator(IASTDeclarator declarator, BaseVisitorAction action) { if( action.processDeclarators ){ switch( action.processDeclarator( declarator ) ){ - case CPPBaseVisitorAction.PROCESS_ABORT : return false; - case CPPBaseVisitorAction.PROCESS_SKIP : return true; + case BaseVisitorAction.PROCESS_ABORT : return false; + case BaseVisitorAction.PROCESS_SKIP : return true; default : break; } } @@ -1237,12 +1206,12 @@ public class CPPVisitor { return true; } - private static boolean visitIfStatement( IASTIfStatement ifStatement, CPPBaseVisitorAction action ){ + private boolean visitIfStatement( IASTIfStatement ifStatement, BaseVisitorAction action ){ while( ifStatement != null ){ if( action.processStatements ){ switch( action.processStatement( ifStatement ) ){ - case CPPBaseVisitorAction.PROCESS_ABORT : return false; - case CPPBaseVisitorAction.PROCESS_SKIP : return true; + case BaseVisitorAction.PROCESS_ABORT : return false; + case BaseVisitorAction.PROCESS_SKIP : return true; default : break; } } @@ -1265,15 +1234,15 @@ public class CPPVisitor { * @param action * @return */ - public static boolean visitStatement(IASTStatement statement, CPPBaseVisitorAction action) { + public boolean visitStatement(IASTStatement statement, BaseVisitorAction action) { //handle if's in a non-recursive manner to avoid stack overflows in case of huge number of elses if( statement instanceof IASTIfStatement ) return visitIfStatement( (IASTIfStatement) statement, action ); if( action.processStatements ){ switch( action.processStatement( statement ) ){ - case CPPBaseVisitorAction.PROCESS_ABORT : return false; - case CPPBaseVisitorAction.PROCESS_SKIP : return true; + case BaseVisitorAction.PROCESS_ABORT : return false; + case BaseVisitorAction.PROCESS_SKIP : return true; default : break; } } @@ -1333,11 +1302,11 @@ public class CPPVisitor { * @param action * @return */ - public static boolean visitExpression(IASTExpression expression, CPPBaseVisitorAction action) { + public boolean visitExpression(IASTExpression expression, BaseVisitorAction action) { if( action.processExpressions ){ switch( action.processExpression( expression ) ){ - case CPPBaseVisitorAction.PROCESS_ABORT : return false; - case CPPBaseVisitorAction.PROCESS_SKIP : return true; + case BaseVisitorAction.PROCESS_ABORT : return false; + case BaseVisitorAction.PROCESS_SKIP : return true; default : break; } } @@ -1404,11 +1373,11 @@ public class CPPVisitor { * @param action * @return */ - public static boolean visitTypeId(IASTTypeId typeId, CPPBaseVisitorAction action) { + public boolean visitTypeId(IASTTypeId typeId, BaseVisitorAction action) { if( action.processTypeIds ){ switch( action.processTypeId( typeId ) ){ - case CPPBaseVisitorAction.PROCESS_ABORT : return false; - case CPPBaseVisitorAction.PROCESS_SKIP : return true; + case BaseVisitorAction.PROCESS_ABORT : return false; + case BaseVisitorAction.PROCESS_SKIP : return true; default : break; } } @@ -1422,11 +1391,11 @@ public class CPPVisitor { * @param action * @return */ - public static boolean visitInitializer(IASTInitializer initializer, CPPBaseVisitorAction action) { + public boolean visitInitializer(IASTInitializer initializer, BaseVisitorAction action) { if( action.processInitializers ){ switch( action.processInitializer( initializer ) ){ - case CPPBaseVisitorAction.PROCESS_ABORT : return false; - case CPPBaseVisitorAction.PROCESS_SKIP : return true; + case BaseVisitorAction.PROCESS_ABORT : return false; + case BaseVisitorAction.PROCESS_SKIP : return true; default : break; } } @@ -1449,11 +1418,11 @@ public class CPPVisitor { * @param action * @return */ - public static boolean visitEnumerator(IASTEnumerator enumerator, CPPBaseVisitorAction action) { + public boolean visitEnumerator(IASTEnumerator enumerator, BaseVisitorAction action) { if( action.processEnumerators ){ switch( action.processEnumerator( enumerator ) ){ - case CPPBaseVisitorAction.PROCESS_ABORT : return false; - case CPPBaseVisitorAction.PROCESS_SKIP : return true; + case BaseVisitorAction.PROCESS_ABORT : return false; + case BaseVisitorAction.PROCESS_SKIP : return true; default : break; } } @@ -1469,11 +1438,11 @@ public class CPPVisitor { * @param action * @return */ - public static boolean visitBaseSpecifier(ICPPASTBaseSpecifier specifier, CPPBaseVisitorAction action) { - if( action.processBaseSpecifiers ){ - switch( action.processBaseSpecifier( specifier ) ){ - case CPPBaseVisitorAction.PROCESS_ABORT : return false; - case CPPBaseVisitorAction.PROCESS_SKIP : return true; + public boolean visitBaseSpecifier(ICPPASTBaseSpecifier specifier, BaseVisitorAction action) { + if( action instanceof CPPBaseVisitorAction && ((CPPBaseVisitorAction)action).processBaseSpecifiers ){ + switch( ((CPPBaseVisitorAction)action).processBaseSpecifier( specifier ) ){ + case BaseVisitorAction.PROCESS_ABORT : return false; + case BaseVisitorAction.PROCESS_SKIP : return true; default : break; } } @@ -1482,11 +1451,11 @@ public class CPPVisitor { return true; } - public static boolean visitParameterDeclaration( IASTParameterDeclaration parameterDeclaration, CPPBaseVisitorAction action ){ + public boolean visitParameterDeclaration( IASTParameterDeclaration parameterDeclaration, BaseVisitorAction action ){ if( action.processParameterDeclarations ){ switch( action.processParameterDeclaration( parameterDeclaration ) ){ - case CPPBaseVisitorAction.PROCESS_ABORT : return false; - case CPPBaseVisitorAction.PROCESS_SKIP : return true; + case BaseVisitorAction.PROCESS_ABORT : return false; + case BaseVisitorAction.PROCESS_SKIP : return true; default : break; } } @@ -1501,7 +1470,7 @@ public class CPPVisitor { * @param action * @return */ - public static boolean visitTemplateParameter(ICPPASTTemplateParameter parameter, CPPBaseVisitorAction action) { + public boolean visitTemplateParameter(ICPPASTTemplateParameter parameter, BaseVisitorAction action) { return true; } @@ -1857,7 +1826,7 @@ public class CPPVisitor { public static IASTProblem[] getProblems(IASTTranslationUnit tu) { CollectProblemsAction action = new CollectProblemsAction(); - visitTranslationUnit(tu, action); + tu.getVisitor().visitTranslationUnit(action); return action.getProblems(); } @@ -1869,13 +1838,13 @@ public class CPPVisitor { */ public static IASTName[] getReferences(IASTTranslationUnit tu, IBinding binding) { CollectReferencesAction action = new CollectReferencesAction( binding ); - visitTranslationUnit( tu, action ); + tu.getVisitor().visitTranslationUnit( action ); return action.getReferences(); } public static IASTName[] getDeclarations( IASTTranslationUnit tu, IBinding binding ){ CollectDeclarationsAction action = new CollectDeclarationsAction( binding ); - visitTranslationUnit( tu, action ); + tu.getVisitor().visitTranslationUnit( action ); return action.getDeclarations(); } } diff --git a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/CPPPopulateASTViewAction.java b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/CPPPopulateASTViewAction.java index 25001284fb6..47410f1d0b6 100644 --- a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/CPPPopulateASTViewAction.java +++ b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/CPPPopulateASTViewAction.java @@ -37,8 +37,8 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFunctionDeclarator; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFunctionTryBlockDeclarator; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNamespaceDefinition; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier.ICPPASTBaseSpecifier; +import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTVisitor.CPPBaseVisitorAction; import org.eclipse.cdt.internal.core.dom.parser.ASTNode; -import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.CPPBaseVisitorAction; import org.eclipse.cdt.internal.core.parser.scanner2.LocationMap.ASTInclusionStatement; import org.eclipse.core.runtime.IProgressMonitor; diff --git a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/CPopulateASTViewAction.java b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/CPopulateASTViewAction.java index c0a35faf592..9e112714371 100644 --- a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/CPopulateASTViewAction.java +++ b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/CPopulateASTViewAction.java @@ -32,8 +32,8 @@ import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IASTTypeId; import org.eclipse.cdt.core.dom.ast.IASTEnumerationSpecifier.IASTEnumerator; import org.eclipse.cdt.core.dom.ast.c.ICASTDesignator; +import org.eclipse.cdt.core.dom.ast.c.ICASTVisitor.CBaseVisitorAction; import org.eclipse.cdt.internal.core.dom.parser.ASTNode; -import org.eclipse.cdt.internal.core.dom.parser.c.CVisitor.CBaseVisitorAction; import org.eclipse.cdt.internal.core.parser.scanner2.LocationMap.ASTInclusionStatement; import org.eclipse.core.runtime.IProgressMonitor; diff --git a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/DOMAST.java b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/DOMAST.java index 7e446061e94..8d3fb63e718 100644 --- a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/DOMAST.java +++ b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/DOMAST.java @@ -32,8 +32,10 @@ import org.eclipse.cdt.core.dom.ast.IASTStatement; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IASTTypeId; import org.eclipse.cdt.core.dom.ast.c.ICASTDesignator; +import org.eclipse.cdt.core.dom.ast.c.ICASTVisitor.CBaseVisitorAction; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTConstructorChainInitializer; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateParameter; +import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTVisitor.CPPBaseVisitorAction; import org.eclipse.cdt.core.filetype.ICFileType; import org.eclipse.cdt.core.filetype.ICFileTypeConstants; import org.eclipse.cdt.core.model.CModelException; @@ -41,10 +43,6 @@ import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserUtil; import org.eclipse.cdt.core.parser.ast.IASTEnumerator; import org.eclipse.cdt.core.resources.FileStorage; -import org.eclipse.cdt.internal.core.dom.parser.c.CVisitor; -import org.eclipse.cdt.internal.core.dom.parser.c.CVisitor.CBaseVisitorAction; -import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor; -import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.CPPBaseVisitorAction; import org.eclipse.cdt.internal.ui.editor.CEditor; import org.eclipse.cdt.internal.ui.util.EditorUtility; import org.eclipse.cdt.ui.actions.CustomFiltersActionGroup; @@ -358,10 +356,10 @@ public class DOMAST extends ViewPart { start=System.currentTimeMillis(); if (lang == ParserLanguage.CPP) { action = new CPPPopulateASTViewAction(tu, monitor); - CPPVisitor.visitTranslationUnit(tu, (CPPBaseVisitorAction) action); + tu.getVisitor().visitTranslationUnit( (CPPBaseVisitorAction) action); } else { action = new CPopulateASTViewAction(tu, monitor); - CVisitor.visitTranslationUnit(tu, (CBaseVisitorAction) action); + tu.getVisitor().visitTranslationUnit( (CBaseVisitorAction) action); } monitor.worked(2); System.out.println("[DOM AST View] done " + GENERATING_INITIAL_TREE + ": " + (System.currentTimeMillis()- start) ); diff --git a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/FindIASTNameTarget.java b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/FindIASTNameTarget.java index 09d9af70af1..b8c68d3e5c2 100644 --- a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/FindIASTNameTarget.java +++ b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/FindIASTNameTarget.java @@ -276,11 +276,11 @@ public class FindIASTNameTarget implements IFindReplaceTarget, IFindReplaceTarge if (matchingNames == null && tu != null) { if (lang == ParserLanguage.CPP) { CPPNameCollector col = new CPPNameCollector(findString, caseSensitive, wholeWord, regExSearch); - CPPVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit(col); matchingNames = col.getNameArray(tu.getAllPreprocessorStatements()); } else { CNameCollector col = new CNameCollector(findString, caseSensitive, wholeWord, regExSearch); - CVisitor.visitTranslationUnit(tu, col); + tu.getVisitor().visitTranslationUnit(col); matchingNames = col.getNameArray(tu.getAllPreprocessorStatements()); } }