diff options
author | Sergey Prigogin | 2012-02-08 01:48:07 +0000 |
---|---|---|
committer | Sergey Prigogin | 2012-02-08 01:48:07 +0000 |
commit | 8a58ba3dda7539670107ccee64ff54badde272bc (patch) | |
tree | d9b68946881f71eb37211746906c08aacdf85449 /core/org.eclipse.cdt.core.tests | |
parent | 3bb26e3de2c41aeda135d699ea1847ad5220b0e6 (diff) | |
download | org.eclipse.cdt-8a58ba3dda7539670107ccee64ff54badde272bc.tar.gz org.eclipse.cdt-8a58ba3dda7539670107ccee64ff54badde272bc.tar.xz org.eclipse.cdt-8a58ba3dda7539670107ccee64ff54badde272bc.zip |
Cosmetics.
Diffstat (limited to 'core/org.eclipse.cdt.core.tests')
-rw-r--r-- | core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java | 2393 |
1 files changed, 1153 insertions, 1240 deletions
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 3a3d954fae9..61ebef86f9a 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 @@ -135,18 +135,127 @@ import org.eclipse.cdt.internal.core.index.IndexCPPSignatureUtil; import org.eclipse.cdt.internal.core.parser.ParserException; public class AST2CPPTests extends AST2BaseTest { - + public AST2CPPTests() { } - + public AST2CPPTests(String name) { super(name); } - + public static TestSuite suite() { return suite(AST2CPPTests.class); } - + + protected IASTTranslationUnit parseAndCheckBindings(String code) throws Exception { + IASTTranslationUnit tu = parse(code, ParserLanguage.CPP); + CPPNameCollector col = new CPPNameCollector(); + tu.accept(col); + assertNoProblemBindings(col); + return tu; + } + + protected IASTTranslationUnit parseAndCheckBindings() throws Exception { + String code= getAboveComment(); + return parseAndCheckBindings(code); + } + + protected BindingAssertionHelper getAssertionHelper() throws ParserException, IOException { + String code= getAboveComment(); + return new BindingAssertionHelper(code, true); + } + + protected void assertNoProblemBindings(CPPNameCollector col) { + Iterator i = col.nameList.iterator(); + while (i.hasNext()) { + IASTName n = (IASTName) i.next(); + assertFalse(n.resolveBinding() instanceof IProblemBinding); + } + } + + private void assertProblemBinding(int id, IBinding b) { + assertTrue(b instanceof IProblemBinding); + assertEquals(id, ((IProblemBinding) b).getID()); + } + + protected void assertProblemBindings(CPPNameCollector col, int count) { + Iterator i = col.nameList.iterator(); + int sum = 0; + while (i.hasNext()) { + IASTName n = (IASTName) i.next(); + assertNotNull(n.resolveBinding()); + if (n.getBinding() instanceof IProblemBinding) + ++sum; + } + assertEquals(count, sum); + } + + private void assertDefinition(ICPPBinding b) { + assertTrue(((IASTName)((ICPPInternalBinding) b).getDefinition()).isDefinition()); + } + + private void assertDeclaration(ICPPBinding b) { + assertTrue(((IASTName)((ICPPInternalBinding) b).getDeclarations()[0]).isDeclaration()); + } + + private ICPPMethod extractSingleMethod(IBinding[] bindings) { + assertEquals(1, bindings.length); + assertTrue(bindings[0] instanceof ICPPMethod); + return (ICPPMethod) bindings[0]; + } + + private ICPPClassType extractSingleClass(IBinding[] bindings) { + assertEquals(1, bindings.length); + assertTrue(bindings[0] instanceof ICPPClassType); + return (ICPPClassType) bindings[0]; + } + + private void checkNewExpression(IASTFunctionDefinition fdef, int i_expr, Class<?> placement, String type, Class<?> init) { + IASTExpression expr; + ICPPASTNewExpression newExpr; + expr= getExpressionOfStatement(fdef, i_expr); + assertInstance(expr, ICPPASTNewExpression.class); + newExpr= (ICPPASTNewExpression) expr; + if (placement == null) { + assertNull(newExpr.getNewPlacement()); + } else { + assertInstance(newExpr.getNewPlacement(), placement); + } + if (init == null) { + assertNull(newExpr.getNewInitializer()); + } else { + assertInstance(newExpr.getNewInitializer(), init); + } + isTypeEqual(CPPVisitor.createType(newExpr.getTypeId()), type); + } + + private void checkDeclDef(String[] declNames, String[] defNames, IASTDeclaration[] decls) { + int i= 0, j= 0; + for (IASTDeclaration decl : decls) { + if (decl instanceof ICPPASTLinkageSpecification) { + decl= ((ICPPASTLinkageSpecification) decl).getDeclarations()[0]; + } + final IASTDeclarator[] dtors = ((IASTSimpleDeclaration) decl).getDeclarators(); + for (IASTDeclarator dtor : dtors) { + final String name = dtor.getName().toString(); + switch (dtor.getRoleForName(dtor.getName())) { + case IASTNameOwner.r_declaration: + assertTrue("Unexpected decl " + name, i < declNames.length); + assertEquals(declNames[i++], name); + break; + case IASTNameOwner.r_definition: + assertTrue("Unexpected decl " + name, j < defNames.length); + assertEquals(defNames[j++], name); + break; + default: + assertTrue(name, false); + } + } + } + assertEquals(declNames.length, i); + assertEquals(defNames.length, j); + } + // #define CURLOPTTYPE_OBJECTPOINT 10000 // #define CINIT(name,type,number) CURLOPT_ ## name = CURLOPTTYPE_ ## type + number // typedef enum { @@ -156,7 +265,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testBug102825() throws Exception { parseAndCheckBindings(getAboveComment()); } - + // class B { // public: // B(int t); @@ -169,7 +278,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testBug78883() throws Exception { parseAndCheckBindings(getAboveComment()); } - + // enum type {A}; // enum type a, b; // type c; @@ -178,17 +287,17 @@ public class AST2CPPTests extends AST2BaseTest { public void testBug77967() throws Exception { parseAndCheckBindings(getAboveComment()); } - + public void testBug75189() throws Exception { parseAndCheckBindings("struct A{};typedef int (*F) (A*);"); //$NON-NLS-1$ } - + public void testBug75340() throws Exception { IASTTranslationUnit tu = parseAndCheckBindings("void f(int i = 0, int * p = 0);"); //$NON-NLS-1$ IASTSimpleDeclaration sd = (IASTSimpleDeclaration) tu.getDeclarations()[0]; isParameterSignatureEqual(sd.getDeclarators()[0], "(int=0, int*=0)"); //$NON-NLS-1$ } - + // #define REF_WRAP(e) class A { public: A (){ } A& foo2(e& v) { return *this; } } // class B // { @@ -199,7 +308,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testBug79540() throws Exception { parseAndCheckBindings(getAboveComment()); } - + // template <class T, int someConst=0> // class WithTemplate {}; // int main () @@ -212,7 +321,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testBug103578() throws Exception { parseAndCheckBindings(getAboveComment()); } - + // int *p1; int *p2; // union { // struct {int a; int b;} A; @@ -226,7 +335,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testBug78103() throws Exception { parseAndCheckBindings(getAboveComment()); } - + // signed int si(0); // unsigned u(10U); // signed s(-1); @@ -236,12 +345,12 @@ public class AST2CPPTests extends AST2BaseTest { public void testInitializeUnsigned_Bug245070() throws Exception { parseAndCheckBindings(getAboveComment(), ParserLanguage.CPP, true); } - + public void testBug43579() throws Exception { parseAndCheckBindings("class A { int m; }; \n A * a; int A::*pm; \n int f(){} \n int f(int); \n int x = f(a->*pm);"); //$NON-NLS-1$ parseAndCheckBindings("class A { int m; }; \n A * a; int A::*pm; \n int f(){} \n int f(int); \n int x = f(a->*pm);"); //$NON-NLS-1$ } - + // class A { int m(int); }; // A a; // int (A::*pm)(int) = &A::m; @@ -251,11 +360,11 @@ public class AST2CPPTests extends AST2BaseTest { public void testBug43242() throws Exception { parseAndCheckBindings(getAboveComment()); } - + public void testBug43241() throws Exception { parseAndCheckBindings("int m(int); int (*pm)(int) = &m; int f(){} int f(int); int x = f((*pm)(5));"); //$NON-NLS-1$ } - + // int *zzz1 (char); // int (*zzz2) (char); // int ((*zzz3)) (char); @@ -266,24 +375,6 @@ public class AST2CPPTests extends AST2BaseTest { tu.accept(col); assertNoProblemBindings(col); } - - protected IASTTranslationUnit parseAndCheckBindings(String code) throws Exception { - IASTTranslationUnit tu = parse(code, ParserLanguage.CPP); - CPPNameCollector col = new CPPNameCollector(); - tu.accept(col); - assertNoProblemBindings(col); - return tu; - } - - protected IASTTranslationUnit parseAndCheckBindings() throws Exception { - String code= getAboveComment(); - return parseAndCheckBindings(code); - } - - protected BindingAssertionHelper getAssertionHelper() throws ParserException, IOException { - String code= getAboveComment(); - return new BindingAssertionHelper(code, true); - } public void testBug40422() throws Exception { IASTTranslationUnit tu = parse("class A { int y; }; int A::* x = 0;", ParserLanguage.CPP); //$NON-NLS-1$ @@ -291,14 +382,14 @@ public class AST2CPPTests extends AST2BaseTest { tu.accept(col); assertNoProblemBindings(col); } - + public void testBug86282() throws Exception { IASTTranslationUnit tu = parse("void foo() { int (* f[])() = new (int (*[10])()); }", ParserLanguage.CPP); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); tu.accept(col); assertNoProblemBindings(col); } - + // bool f() { // int first, last; // if (first < 1 || last > 99) @@ -310,7 +401,7 @@ public class AST2CPPTests extends AST2BaseTest { tu.accept(col); assertNoProblemBindings(col); } - + public void testBug95424() throws Exception { IASTTranslationUnit tu = parse("void f(){ traits_type::copy(__r->_M_refdata(), __buf, __i); }", ParserLanguage.CPP, true, true); //$NON-NLS-1$ tu = parse("void f(){ traits_type::copy(__r->_M_refdata(), __buf, __i); }", ParserLanguage.CPP, false, true); //$NON-NLS-1$ @@ -319,19 +410,18 @@ public class AST2CPPTests extends AST2BaseTest { IASTExpressionStatement es = (IASTExpressionStatement) cs.getStatements()[0]; assertTrue(es.getExpression() instanceof IASTFunctionCallExpression); } - + // class A { } a; public void testSimpleClass() throws Exception { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); - IASTSimpleDeclaration decl = (IASTSimpleDeclaration) tu - .getDeclarations()[0]; - IASTCompositeTypeSpecifier compTypeSpec = (IASTCompositeTypeSpecifier) decl - .getDeclSpecifier(); + IASTSimpleDeclaration decl = (IASTSimpleDeclaration) tu.getDeclarations()[0]; + IASTCompositeTypeSpecifier compTypeSpec = + (IASTCompositeTypeSpecifier) decl.getDeclSpecifier(); IASTName name_A = compTypeSpec.getName(); - + IASTDeclarator dtor = decl.getDeclarators()[0]; IASTName name_a = dtor.getName(); - + ICompositeType A = (ICompositeType) name_A.resolveBinding(); IVariable a = (IVariable) name_a.resolveBinding(); ICompositeType A_2 = (ICompositeType) a.getType(); @@ -339,7 +429,7 @@ public class AST2CPPTests extends AST2BaseTest { assertNotNull(a); assertSame(A, A_2); } - + // class A { // public: // int x; @@ -359,191 +449,174 @@ public class AST2CPPTests extends AST2BaseTest { tu.accept(nameCol); assertNoProblemBindings(nameCol); } - + // class A; class A {}; public void testClassForwardDecl() throws Exception { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); - - IASTSimpleDeclaration decl = (IASTSimpleDeclaration) tu - .getDeclarations()[0]; + + IASTSimpleDeclaration decl = (IASTSimpleDeclaration) tu.getDeclarations()[0]; assertEquals(decl.getDeclarators().length, 0); - IASTElaboratedTypeSpecifier elabSpec = (IASTElaboratedTypeSpecifier) decl - .getDeclSpecifier(); + IASTElaboratedTypeSpecifier elabSpec = (IASTElaboratedTypeSpecifier) decl.getDeclSpecifier(); IASTName name_elab = elabSpec.getName(); - + decl = (IASTSimpleDeclaration) tu.getDeclarations()[1]; assertEquals(decl.getDeclarators().length, 0); - IASTCompositeTypeSpecifier compSpec = (IASTCompositeTypeSpecifier) decl - .getDeclSpecifier(); + IASTCompositeTypeSpecifier compSpec = (IASTCompositeTypeSpecifier) decl.getDeclSpecifier(); IASTName name_comp = compSpec.getName(); - + ICompositeType A = (ICompositeType) name_elab.resolveBinding(); ICompositeType A_2 = (ICompositeType) name_comp.resolveBinding(); - + assertNotNull(A); assertSame(A, A_2); } - + // class A {}; A a; public void testVariable() throws Exception { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); - - IASTSimpleDeclaration decl = (IASTSimpleDeclaration) tu - .getDeclarations()[0]; + + IASTSimpleDeclaration decl = (IASTSimpleDeclaration) tu.getDeclarations()[0]; assertEquals(decl.getDeclarators().length, 0); - IASTCompositeTypeSpecifier compType = (IASTCompositeTypeSpecifier) decl - .getDeclSpecifier(); + IASTCompositeTypeSpecifier compType = (IASTCompositeTypeSpecifier) decl.getDeclSpecifier(); IASTName name_A = compType.getName(); - + decl = (IASTSimpleDeclaration) tu.getDeclarations()[1]; IASTDeclarator dtor = decl.getDeclarators()[0]; IASTName name_a = dtor.getName(); - IASTNamedTypeSpecifier namedSpec = (IASTNamedTypeSpecifier) decl - .getDeclSpecifier(); + IASTNamedTypeSpecifier namedSpec = (IASTNamedTypeSpecifier) decl.getDeclSpecifier(); IASTName name_A2 = namedSpec.getName(); - + IVariable a = (IVariable) name_a.resolveBinding(); ICompositeType A1 = (ICompositeType) a.getType(); ICompositeType A2 = (ICompositeType) name_A2.resolveBinding(); ICompositeType A = (ICompositeType) name_A.resolveBinding(); - + assertNotNull(a); assertNotNull(A); assertSame(A, A1); assertSame(A1, A2); } - + // class A { int f; }; public void testField() throws Exception { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); - - IASTSimpleDeclaration decl = (IASTSimpleDeclaration) tu - .getDeclarations()[0]; + + IASTSimpleDeclaration decl = (IASTSimpleDeclaration) tu.getDeclarations()[0]; assertEquals(decl.getDeclarators().length, 0); - ICPPASTCompositeTypeSpecifier comp = (ICPPASTCompositeTypeSpecifier) decl - .getDeclSpecifier(); + ICPPASTCompositeTypeSpecifier comp = (ICPPASTCompositeTypeSpecifier) decl.getDeclSpecifier(); IASTName name_A = comp.getName(); - + decl = (IASTSimpleDeclaration) comp.getMembers()[0]; IASTDeclarator dtor = decl.getDeclarators()[0]; IASTName name_f = dtor.getName(); - + ICPPClassType A = (ICPPClassType) name_A.resolveBinding(); IField f = (IField) name_f.resolveBinding(); - + assertNotNull(A); assertNotNull(f); assertSame(f.getScope(), A.getCompositeScope()); } - + // class A { int f(); }; public void testMethodDeclaration() throws Exception { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); - - IASTSimpleDeclaration decl = (IASTSimpleDeclaration) tu - .getDeclarations()[0]; + + IASTSimpleDeclaration decl = (IASTSimpleDeclaration) tu.getDeclarations()[0]; assertEquals(decl.getDeclarators().length, 0); - IASTCompositeTypeSpecifier comp = (IASTCompositeTypeSpecifier) decl - .getDeclSpecifier(); + IASTCompositeTypeSpecifier comp = (IASTCompositeTypeSpecifier) decl.getDeclSpecifier(); IASTName name_A = comp.getName(); - + decl = (IASTSimpleDeclaration) comp.getMembers()[0]; IASTDeclarator dtor = decl.getDeclarators()[0]; IASTName name_f = dtor.getName(); - + ICPPClassType A = (ICPPClassType) name_A.resolveBinding(); ICPPMethod f = (ICPPMethod) name_f.resolveBinding(); - + assertNotNull(A); assertNotNull(f); assertSame(f.getScope(), A.getCompositeScope()); } - + // class A { void f(); }; // void A::f() { } public void testMethodDefinition() throws Exception { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); - - IASTSimpleDeclaration decl = (IASTSimpleDeclaration) tu - .getDeclarations()[0]; + + IASTSimpleDeclaration decl = (IASTSimpleDeclaration) tu.getDeclarations()[0]; assertEquals(decl.getDeclarators().length, 0); - IASTCompositeTypeSpecifier comp = (IASTCompositeTypeSpecifier) decl - .getDeclSpecifier(); + IASTCompositeTypeSpecifier comp = (IASTCompositeTypeSpecifier) decl.getDeclSpecifier(); IASTName name_A = comp.getName(); - + decl = (IASTSimpleDeclaration) comp.getMembers()[0]; IASTDeclarator dtor = decl.getDeclarators()[0]; IASTName name_f1 = dtor.getName(); - - IASTFunctionDefinition def = (IASTFunctionDefinition) tu - .getDeclarations()[1]; + + IASTFunctionDefinition def = (IASTFunctionDefinition) tu.getDeclarations()[1]; IASTFunctionDeclarator fdtor = def.getDeclarator(); ICPPASTQualifiedName name_f2 = (ICPPASTQualifiedName) fdtor.getName(); - + ICPPClassType A = (ICPPClassType) name_A.resolveBinding(); ICPPMethod f1 = (ICPPMethod) name_f1.resolveBinding(); ICPPMethod f2 = (ICPPMethod) name_f2.resolveBinding(); - + IASTName[] names = name_f2.getNames(); assertEquals(names.length, 2); IASTName qn1 = names[0]; IASTName qn2 = names[1]; - + ICPPClassType A2 = (ICPPClassType) qn1.resolveBinding(); ICPPMethod f3 = (ICPPMethod) qn2.resolveBinding(); - + assertNotNull(A); assertNotNull(f1); assertSame(f1, f2); assertSame(f2, f3); assertSame(A, A2); } - + // class A { void f(); int i; }; // void A::f() { i; } public void testMemberReference() throws Exception { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); - - IASTSimpleDeclaration decl = (IASTSimpleDeclaration) tu - .getDeclarations()[0]; + + IASTSimpleDeclaration decl = (IASTSimpleDeclaration) tu.getDeclarations()[0]; assertEquals(decl.getDeclarators().length, 0); - IASTCompositeTypeSpecifier comp = (IASTCompositeTypeSpecifier) decl - .getDeclSpecifier(); + IASTCompositeTypeSpecifier comp = (IASTCompositeTypeSpecifier) decl.getDeclSpecifier(); IASTName name_A = comp.getName(); - + decl = (IASTSimpleDeclaration) comp.getMembers()[0]; IASTDeclarator dtor = decl.getDeclarators()[0]; IASTName name_f1 = dtor.getName(); - + decl = (IASTSimpleDeclaration) comp.getMembers()[1]; dtor = decl.getDeclarators()[0]; IASTName name_i = dtor.getName(); - - IASTFunctionDefinition def = (IASTFunctionDefinition) tu - .getDeclarations()[1]; + + IASTFunctionDefinition def = (IASTFunctionDefinition) tu.getDeclarations()[1]; IASTFunctionDeclarator fdtor = def.getDeclarator(); ICPPASTQualifiedName name_f2 = (ICPPASTQualifiedName) fdtor.getName(); - + IASTCompoundStatement compound = (IASTCompoundStatement) def.getBody(); - IASTExpressionStatement statement = (IASTExpressionStatement) compound - .getStatements()[0]; + IASTExpressionStatement statement = (IASTExpressionStatement) compound.getStatements()[0]; IASTIdExpression idExp = (IASTIdExpression) statement.getExpression(); IASTName name_i2 = idExp.getName(); - + ICPPClassType A = (ICPPClassType) name_A.resolveBinding(); ICPPMethod f1 = (ICPPMethod) name_f1.resolveBinding(); ICPPMethod f2 = (ICPPMethod) name_f2.resolveBinding(); ICPPField i1 = (ICPPField) name_i.resolveBinding(); ICPPField i2 = (ICPPField) name_i2.resolveBinding(); - + IASTName[] names = name_f2.getNames(); assertEquals(names.length, 2); IASTName qn1 = names[0]; IASTName qn2 = names[1]; - + ICPPClassType A2 = (ICPPClassType) qn1.resolveBinding(); ICPPMethod f3 = (ICPPMethod) qn2.resolveBinding(); - + assertNotNull(A); assertNotNull(f1); assertNotNull(i1); @@ -552,53 +625,48 @@ public class AST2CPPTests extends AST2BaseTest { assertSame(A, A2); assertSame(i1, i2); } - + // class A { int i; }; // class B : public A { void f(); }; // void B::f() { i; } public void testBasicInheritance() throws Exception { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); - - IASTSimpleDeclaration decl = (IASTSimpleDeclaration) tu - .getDeclarations()[0]; - ICPPASTCompositeTypeSpecifier comp = (ICPPASTCompositeTypeSpecifier) decl - .getDeclSpecifier(); + + IASTSimpleDeclaration decl = (IASTSimpleDeclaration) tu.getDeclarations()[0]; + ICPPASTCompositeTypeSpecifier comp = (ICPPASTCompositeTypeSpecifier) decl.getDeclSpecifier(); IASTName name_A1 = comp.getName(); - + decl = (IASTSimpleDeclaration) comp.getMembers()[0]; IASTName name_i1 = decl.getDeclarators()[0].getName(); - + decl = (IASTSimpleDeclaration) tu.getDeclarations()[1]; comp = (ICPPASTCompositeTypeSpecifier) decl.getDeclSpecifier(); IASTName name_B1 = comp.getName(); - + ICPPASTBaseSpecifier base = comp.getBaseSpecifiers()[0]; IASTName name_A2 = base.getName(); - + decl = (IASTSimpleDeclaration) comp.getMembers()[0]; IASTName name_f1 = decl.getDeclarators()[0].getName(); - - IASTFunctionDefinition def = (IASTFunctionDefinition) tu - .getDeclarations()[2]; - ICPPASTQualifiedName name_f2 = (ICPPASTQualifiedName) def - .getDeclarator().getName(); + + IASTFunctionDefinition def = (IASTFunctionDefinition) tu.getDeclarations()[2]; + ICPPASTQualifiedName name_f2 = (ICPPASTQualifiedName) def.getDeclarator().getName(); IASTName name_B2 = name_f2.getNames()[0]; IASTName name_f3 = name_f2.getNames()[1]; - + IASTCompoundStatement compound = (IASTCompoundStatement) def.getBody(); - IASTExpressionStatement statement = (IASTExpressionStatement) compound - .getStatements()[0]; + IASTExpressionStatement statement = (IASTExpressionStatement) compound.getStatements()[0]; IASTIdExpression idExp = (IASTIdExpression) statement.getExpression(); IASTName name_i2 = idExp.getName(); - + ICPPField i2 = (ICPPField) name_i2.resolveBinding(); ICPPField i1 = (ICPPField) name_i1.resolveBinding(); - + ICPPClassType A2 = (ICPPClassType) name_A2.resolveBinding(); ICPPClassType A1 = (ICPPClassType) name_A1.resolveBinding(); ICPPClassType B2 = (ICPPClassType) name_B2.resolveBinding(); ICPPClassType B1 = (ICPPClassType) name_B1.resolveBinding(); - + ICPPMethod f3 = (ICPPMethod) name_f3.resolveBinding(); ICPPMethod f2 = (ICPPMethod) name_f2.resolveBinding(); ICPPMethod f1 = (ICPPMethod) name_f1.resolveBinding(); @@ -612,7 +680,7 @@ public class AST2CPPTests extends AST2BaseTest { assertSame(f1, f2); assertSame(f2, f3); } - + // namespace A{ // int a; // } @@ -633,17 +701,16 @@ public class AST2CPPTests extends AST2BaseTest { // } public void testNamespaces() throws Exception { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); - + CPPNameCollector collector = new CPPNameCollector(); tu.accept(collector); - + assertEquals(collector.size(), 13); ICPPNamespace A = (ICPPNamespace) collector.getName(0).resolveBinding(); IVariable a = (IVariable) collector.getName(1).resolveBinding(); ICPPNamespace B = (ICPPNamespace) collector.getName(2).resolveBinding(); ICPPNamespace C = (ICPPNamespace) collector.getName(4).resolveBinding(); - ICPPNamespace BC = (ICPPNamespace) collector.getName(6) - .resolveBinding(); + ICPPNamespace BC = (ICPPNamespace) collector.getName(6).resolveBinding(); IFunction f = (IFunction) collector.getName(9).resolveBinding(); assertInstances(collector, A, 3); assertInstances(collector, a, 3); @@ -652,7 +719,7 @@ public class AST2CPPTests extends AST2BaseTest { assertInstances(collector, BC, 2); assertInstances(collector, f, 1); } - + // int A; // class A {}; // void f() { @@ -662,30 +729,29 @@ public class AST2CPPTests extends AST2BaseTest { public void testNameHiding() throws Exception { String content= getAboveComment(); IASTTranslationUnit tu = parse(content, ParserLanguage.CPP); - + CPPNameCollector collector = new CPPNameCollector(); tu.accept(collector); - + assertEquals(collector.size(), 6); IVariable vA = (IVariable) collector.getName(0).resolveBinding(); - ICompositeType cA = (ICompositeType) collector.getName(1) - .resolveBinding(); + ICompositeType cA = (ICompositeType) collector.getName(1).resolveBinding(); IVariable a = (IVariable) collector.getName(5).resolveBinding(); - + assertSame(a.getType(), cA); assertInstances(collector, vA, 2); assertInstances(collector, cA, 2); - + tu = parse(content, ParserLanguage.CPP); collector = new CPPNameCollector(); tu.accept(collector); - + cA = (ICompositeType) collector.getName(1).resolveBinding(); IBinding A = collector.getName(3).resolveBinding(); vA = (IVariable) collector.getName(0).resolveBinding(); assertSame(vA, A); } - + // class A { void f(); }; // class B; // void A::f() { @@ -696,14 +762,12 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); tu.accept(collector); - + assertEquals(collector.size(), 9); - ICompositeType A = (ICompositeType) collector.getName(0) - .resolveBinding(); + ICompositeType A = (ICompositeType) collector.getName(0).resolveBinding(); ICPPMethod f = (ICPPMethod) collector.getName(1).resolveBinding(); - ICompositeType B = (ICompositeType) collector.getName(2) - .resolveBinding(); - + ICompositeType B = (ICompositeType) collector.getName(2).resolveBinding(); + IVariable b = (IVariable) collector.getName(7).resolveBinding(); IVariable B2 = (IVariable) collector.getName(8).resolveBinding(); assertSame(b.getType(), B); @@ -713,7 +777,7 @@ public class AST2CPPTests extends AST2BaseTest { assertInstances(collector, b, 1); assertInstances(collector, B2, 1); } - + // void f(int i); // void f(char c); // void main() { @@ -726,11 +790,11 @@ public class AST2CPPTests extends AST2BaseTest { tu.accept(collector); IFunction f1 = (IFunction) collector.getName(0).resolveBinding(); IFunction f2 = (IFunction) collector.getName(2).resolveBinding(); - + assertInstances(collector, f1, 2); assertInstances(collector, f2, 2); } - + // typedef struct { // int x; // } S; @@ -742,20 +806,19 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); tu.accept(collector); - ICPPClassType anonStruct = (ICPPClassType) collector.getName(0) - .resolveBinding(); + ICPPClassType anonStruct = (ICPPClassType) collector.getName(0).resolveBinding(); ICPPField x = (ICPPField) collector.getName(1).resolveBinding(); ITypedef S = (ITypedef) collector.getName(2).resolveBinding(); IFunction f = (IFunction) collector.getName(3).resolveBinding(); IVariable myS = (IVariable) collector.getName(5).resolveBinding(); - + assertInstances(collector, anonStruct, 1); assertInstances(collector, x, 2); assertInstances(collector, S, 2); assertInstances(collector, f, 1); assertInstances(collector, myS, 2); } - + // struct A; // void f(){ // struct A; @@ -765,13 +828,11 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); tu.accept(collector); - - ICPPClassType A1 = (ICPPClassType) collector.getName(0) - .resolveBinding(); - ICPPClassType A2 = (ICPPClassType) collector.getName(2) - .resolveBinding(); + + ICPPClassType A1 = (ICPPClassType) collector.getName(0).resolveBinding(); + ICPPClassType A2 = (ICPPClassType) collector.getName(2).resolveBinding(); IVariable a = (IVariable) collector.getName(4).resolveBinding(); - + assertNotNull(a); assertNotNull(A1); assertNotNull(A2); @@ -779,7 +840,7 @@ public class AST2CPPTests extends AST2BaseTest { assertInstances(collector, A1, 1); assertInstances(collector, A2, 2); } - + // struct A; // void f(){ // struct A * a; @@ -788,20 +849,18 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); tu.accept(collector); - - ICPPClassType A1 = (ICPPClassType) collector.getName(0) - .resolveBinding(); - ICPPClassType A2 = (ICPPClassType) collector.getName(2) - .resolveBinding(); + + ICPPClassType A1 = (ICPPClassType) collector.getName(0).resolveBinding(); + ICPPClassType A2 = (ICPPClassType) collector.getName(2).resolveBinding(); IVariable a = (IVariable) collector.getName(3).resolveBinding(); - + assertNotNull(a); assertNotNull(A1); assertNotNull(A2); assertSame(A1, A2); assertInstances(collector, A1, 2); } - + // struct A; // struct A * a; // struct A { int i; }; @@ -812,17 +871,16 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); tu.accept(collector); - - ICPPClassType A1 = (ICPPClassType) collector.getName(0) - .resolveBinding(); + + ICPPClassType A1 = (ICPPClassType) collector.getName(0).resolveBinding(); IVariable a = (IVariable) collector.getName(2).resolveBinding(); ICPPField i = (ICPPField) collector.getName(4).resolveBinding(); - + assertInstances(collector, A1, 3); assertInstances(collector, a, 2); assertInstances(collector, i, 2); } - + // struct x {}; // void f(int x) { // struct x i; @@ -831,12 +889,12 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); tu.accept(collector); - + ICPPClassType x = (ICPPClassType) collector.getName(0).resolveBinding(); - + assertInstances(collector, x, 2); } - + // void f(int a); // void f(int b){ // b; @@ -845,18 +903,18 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); tu.accept(collector); - + IFunction f = (IFunction) collector.getName(0).resolveBinding(); IParameter a = (IParameter) collector.getName(1).resolveBinding(); - + assertInstances(collector, f, 2); assertInstances(collector, a, 3); - + IScope scope = a.getScope(); assertNotNull(scope); assertSame(scope.getParent(), f.getScope()); } - + // void f(); // void g() { // f(); @@ -866,14 +924,14 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); tu.accept(collector); - + IFunction f = (IFunction) collector.getName(0).resolveBinding(); IFunction g = (IFunction) collector.getName(1).resolveBinding(); - + assertInstances(collector, f, 3); assertInstances(collector, g, 1); } - + // void f() { // for(int i = 0; i < 5; i++) { // i; @@ -883,12 +941,12 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); tu.accept(collector); - + IVariable i = (IVariable) collector.getName(1).resolveBinding(); - + assertInstances(collector, i, 4); } - + // struct A { int x; }; // void f(){ // ((struct A *) 1)->x; @@ -897,14 +955,14 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); tu.accept(collector); - + ICPPClassType A = (ICPPClassType) collector.getName(0).resolveBinding(); IField x = (IField) collector.getName(1).resolveBinding(); - + assertInstances(collector, A, 2); assertInstances(collector, x, 2); } - + // enum hue { red, blue, green }; // enum hue col, *cp; // void f() { @@ -917,26 +975,26 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); tu.accept(collector); - + IEnumeration hue = (IEnumeration) collector.getName(0).resolveBinding(); IEnumerator red = (IEnumerator) collector.getName(1).resolveBinding(); IEnumerator blue = (IEnumerator) collector.getName(2).resolveBinding(); IEnumerator green = (IEnumerator) collector.getName(3).resolveBinding(); IVariable col = (IVariable) collector.getName(5).resolveBinding(); IVariable cp = (IVariable) collector.getName(6).resolveBinding(); - + assertInstances(collector, hue, 2); assertInstances(collector, red, 2); assertInstances(collector, blue, 2); assertInstances(collector, green, 1); assertInstances(collector, col, 3); assertInstances(collector, cp, 3); - + assertTrue(cp.getType() instanceof IPointerType); IPointerType pt = (IPointerType) cp.getType(); assertSame(pt.getType(), hue); } - + public void testPointerToFunction() throws Exception { IASTTranslationUnit tu = parse("int (*pfi)();", ParserLanguage.CPP); //$NON-NLS-1$ CPPNameCollector collector = new CPPNameCollector(); @@ -944,7 +1002,7 @@ public class AST2CPPTests extends AST2BaseTest { IVariable pf = (IVariable) collector.getName(0).resolveBinding(); IPointerType pt = (IPointerType) pf.getType(); assertTrue(pt.getType() instanceof IFunctionType); - + tu = parse( "struct A; int (*pfi)(int, struct A *);", ParserLanguage.CPP); //$NON-NLS-1$ collector = new CPPNameCollector(); @@ -960,33 +1018,30 @@ public class AST2CPPTests extends AST2BaseTest { pt = (IPointerType) params[1]; assertSame(pt.getType(), A); } - + // struct A; // int * f(int i, char c); // void (*g) (A *); // void (* (*h)(A**)) (int); public void testFunctionTypes() throws Exception { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); - - IASTSimpleDeclaration decl = (IASTSimpleDeclaration) tu - .getDeclarations()[0]; - IASTElaboratedTypeSpecifier elabSpec = (IASTElaboratedTypeSpecifier) decl - .getDeclSpecifier(); + + IASTSimpleDeclaration decl = (IASTSimpleDeclaration) tu.getDeclarations()[0]; + IASTElaboratedTypeSpecifier elabSpec = (IASTElaboratedTypeSpecifier) decl.getDeclSpecifier(); ICompositeType A = (ICompositeType) elabSpec.getName().resolveBinding(); - + decl = (IASTSimpleDeclaration) tu.getDeclarations()[1]; - IFunction f = (IFunction) decl.getDeclarators()[0].getName() - .resolveBinding(); - + IFunction f = (IFunction) decl.getDeclarators()[0].getName().resolveBinding(); + decl = (IASTSimpleDeclaration) tu.getDeclarations()[2]; IVariable g = (IVariable) decl.getDeclarators()[0] .getNestedDeclarator().getName().resolveBinding(); - + decl = (IASTSimpleDeclaration) tu.getDeclarations()[3]; IVariable h = (IVariable) decl.getDeclarators()[0] .getNestedDeclarator().getNestedDeclarator().getName() .resolveBinding(); - + IFunctionType t_f = f.getType(); IType t_f_return = t_f.getReturnType(); assertTrue(t_f_return instanceof IPointerType); @@ -995,7 +1050,7 @@ public class AST2CPPTests extends AST2BaseTest { assertEquals(t_f_params.length, 2); assertTrue(t_f_params[0] instanceof IBasicType); assertTrue(t_f_params[1] instanceof IBasicType); - + // g is a pointer to a function that returns void and has 1 parameter // struct A * IType t_g = g.getType(); @@ -1009,7 +1064,7 @@ public class AST2CPPTests extends AST2BaseTest { IType t_g_func_p1 = t_g_func_params[0]; assertTrue(t_g_func_p1 instanceof IPointerType); assertSame(((IPointerType) t_g_func_p1).getType(), A); - + // h is a pointer to a function that returns a pointer to a function // the returned pointer to function returns void and takes 1 parameter // int @@ -1024,33 +1079,30 @@ public class AST2CPPTests extends AST2BaseTest { IType t_h_func_p1 = t_h_func_params[0]; assertTrue(t_h_func_p1 instanceof IPointerType); assertTrue(((IPointerType) t_h_func_p1).getType() instanceof IPointerType); - assertSame(((IPointerType) ((IPointerType) t_h_func_p1).getType()) - .getType(), A); - + assertSame(((IPointerType) ((IPointerType) t_h_func_p1).getType()).getType(), A); + assertTrue(t_h_func_return instanceof IPointerType); - IFunctionType h_return = (IFunctionType) ((IPointerType) t_h_func_return) - .getType(); + IFunctionType h_return = (IFunctionType) ((IPointerType) t_h_func_return).getType(); IType h_r = h_return.getReturnType(); IType[] h_ps = h_return.getParameterTypes(); assertTrue(h_r instanceof IBasicType); assertEquals(h_ps.length, 1); assertTrue(h_ps[0] instanceof IBasicType); } - + public void testFnReturningPtrToFn() throws Exception { IASTTranslationUnit tu = parse( "void (* f(int))(){}", ParserLanguage.CPP); //$NON-NLS-1$ - - IASTFunctionDefinition def = (IASTFunctionDefinition) tu - .getDeclarations()[0]; + + IASTFunctionDefinition def = (IASTFunctionDefinition) tu.getDeclarations()[0]; IFunction f = (IFunction) def.getDeclarator().getName().resolveBinding(); - + IFunctionType ft = f.getType(); assertTrue(ft.getReturnType() instanceof IPointerType); assertTrue(((IPointerType) ft.getReturnType()).getType() instanceof IFunctionType); assertEquals(ft.getParameterTypes().length, 1); } - + // void f(); // namespace A { // void g(); @@ -1067,27 +1119,25 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); tu.accept(collector); - + IFunction f = (IFunction) collector.getName(0).resolveBinding(); ICPPNamespace A = (ICPPNamespace) collector.getName(1).resolveBinding(); IFunction g = (IFunction) collector.getName(2).resolveBinding(); ICPPNamespace X = (ICPPNamespace) collector.getName(3).resolveBinding(); - - ICPPUsingDeclaration using = (ICPPUsingDeclaration) collector - .getName(5).resolveBinding(); + + ICPPUsingDeclaration using = (ICPPUsingDeclaration) collector.getName(5).resolveBinding(); IBinding[] delegates = using.getDelegates(); assertEquals(delegates.length, 1); assertSame(delegates[0], f); assertInstances(collector, delegates[0], 3); // decl + using-decl + ref assertInstances(collector, A, 2); assertInstances(collector, X, 3); - - ICPPUsingDeclaration using_g = (ICPPUsingDeclaration) collector - .getName(8).resolveBinding(); + + ICPPUsingDeclaration using_g = (ICPPUsingDeclaration) collector.getName(8).resolveBinding(); assertSame(using_g.getDelegates()[0], g); assertInstances(collector, using_g.getDelegates()[0], 3); // decl + using-decl + ref } - + // typedef int Int; // void f(int i); // void f(const int); @@ -1100,19 +1150,19 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); tu.accept(collector); - + IFunction f = (IFunction) collector.getName(1).resolveBinding(); isTypeEqual(f.getType(), "void (int)"); IFunction g = (IFunction) collector.getName(8).resolveBinding(); isTypeEqual(g.getType(), "void (char *)"); IFunction h = (IFunction) collector.getName(12).resolveBinding(); isTypeEqual(h.getType(), "void (int (*)())"); - + assertInstances(collector, f, 3); assertInstances(collector, g, 2); assertInstances(collector, h, 2); } - + // class P1 { public: int x; }; // class P2 { public: int x; }; // class B : public P1, public P2 {}; @@ -1124,12 +1174,11 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); tu.accept(collector); - - IProblemBinding x = (IProblemBinding) collector.getName(12) - .resolveBinding(); + + IProblemBinding x = (IProblemBinding) collector.getName(12).resolveBinding(); assertEquals(x.getID(), IProblemBinding.SEMANTIC_AMBIGUOUS_LOOKUP); } - + // class D { public: int x; }; // class C : public virtual D {}; // class B : public virtual D {}; @@ -1142,9 +1191,9 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); tu.accept(collector); - + assertEquals(collector.size(), 15); - + ICPPClassType D = (ICPPClassType) collector.getName(0).resolveBinding(); ICPPField x = (ICPPField) collector.getName(1).resolveBinding(); ICPPClassType C = (ICPPClassType) collector.getName(2).resolveBinding(); @@ -1158,7 +1207,7 @@ public class AST2CPPTests extends AST2BaseTest { assertInstances(collector, ctor, 1); assertInstances(collector, x, 2); } - + // class D { public: int x; }; // class C : public D {}; // class B : public D {}; @@ -1171,19 +1220,18 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); tu.accept(collector); - + assertEquals(collector.size(), 15); - + ICPPClassType D = (ICPPClassType) collector.getName(0).resolveBinding(); ICPPField x1 = (ICPPField) collector.getName(1).resolveBinding(); ICPPClassType C = (ICPPClassType) collector.getName(2).resolveBinding(); ICPPClassType B = (ICPPClassType) collector.getName(4).resolveBinding(); ICPPClassType A = (ICPPClassType) collector.getName(6).resolveBinding(); ICPPConstructor ctor = A.getConstructors()[0]; - IProblemBinding x2 = (IProblemBinding) collector.getName(14) - .resolveBinding(); + IProblemBinding x2 = (IProblemBinding) collector.getName(14).resolveBinding(); assertEquals(x2.getID(), IProblemBinding.SEMANTIC_AMBIGUOUS_LOOKUP); - + assertInstances(collector, D, 3); assertInstances(collector, C, 2); assertInstances(collector, B, 2); @@ -1191,7 +1239,7 @@ public class AST2CPPTests extends AST2BaseTest { assertInstances(collector, ctor, 1); assertInstances(collector, x1, 1); } - + // namespace A { // int x; // } @@ -1203,40 +1251,38 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector collector = new CPPNameCollector(); tu.accept(collector); - + assertEquals(collector.size(), 6); - + ICPPNamespace A = (ICPPNamespace) collector.getName(0).resolveBinding(); IVariable x1 = (IVariable) collector.getName(1).resolveBinding(); IVariable x2 = (IVariable) collector.getName(2).resolveBinding(); - + assertInstances(collector, A, 2); assertInstances(collector, x1, 2); assertInstances(collector, x2, 1); } - + // class A { }; public void testImplicitConstructors() throws Exception { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); - - IASTSimpleDeclaration decl = (IASTSimpleDeclaration) tu - .getDeclarations()[0]; - IASTCompositeTypeSpecifier compSpec = (IASTCompositeTypeSpecifier) decl - .getDeclSpecifier(); + + IASTSimpleDeclaration decl = (IASTSimpleDeclaration) tu.getDeclarations()[0]; + IASTCompositeTypeSpecifier compSpec = (IASTCompositeTypeSpecifier) decl.getDeclSpecifier(); ICPPClassType A = (ICPPClassType) compSpec.getName().resolveBinding(); ICPPConstructor[] ctors = A.getConstructors(); - + assertNotNull(ctors); assertEquals(ctors.length, 2); - + assertEquals(ctors[0].getParameters().length, 1); - + IType t = ctors[0].getParameters()[0].getType(); assertTrue(t instanceof IBasicType); assertEquals(((IBasicType) t).getType(), IBasicType.t_void); - + assertEquals(ctors[1].getParameters().length, 1); - + t = ctors[1].getParameters()[0].getType(); assertTrue(t instanceof ICPPReferenceType); assertTrue(((ICPPReferenceType) t).getType() instanceof IQualifierType); @@ -1244,24 +1290,22 @@ public class AST2CPPTests extends AST2BaseTest { assertTrue(qt.isConst()); assertSame(qt.getType(), A); } - + // class A { A(void); A(const A &); }; public void testConstructors() throws Exception { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); - - IASTSimpleDeclaration decl = (IASTSimpleDeclaration) tu - .getDeclarations()[0]; - IASTCompositeTypeSpecifier compSpec = (IASTCompositeTypeSpecifier) decl - .getDeclSpecifier(); + + IASTSimpleDeclaration decl = (IASTSimpleDeclaration) tu.getDeclarations()[0]; + IASTCompositeTypeSpecifier compSpec = (IASTCompositeTypeSpecifier) decl.getDeclSpecifier(); ICPPClassType A = (ICPPClassType) compSpec.getName().resolveBinding(); ICPPConstructor[] ctors = A.getConstructors(); - + assertNotNull(ctors); assertEquals(ctors.length, 2); - + assertEquals(ctors[0].getParameters().length, 1); assertEquals(ctors[1].getParameters().length, 1); - + IType t = ctors[1].getParameters()[0].getType(); assertTrue(t instanceof ICPPReferenceType); assertTrue(((ICPPReferenceType) t).getType() instanceof IQualifierType); @@ -1269,27 +1313,27 @@ public class AST2CPPTests extends AST2BaseTest { assertTrue(qt.isConst()); assertSame(qt.getType(), A); } - + // class A {~A(); }; // class B {~B(void); }; public void testExplicitDestructor_183160() throws Exception { // class F {(~)F(); }; // class G {(~)G(void); }; - + BufferedReader br= new BufferedReader(new StringReader(getAboveComment())); for(String line= br.readLine(); line!=null; line= br.readLine()) { IASTTranslationUnit tu = parse(line, ParserLanguage.CPP); IASTSimpleDeclaration decl = (IASTSimpleDeclaration) tu.getDeclarations()[0]; IASTCompositeTypeSpecifier compSpec = (IASTCompositeTypeSpecifier) decl.getDeclSpecifier(); ICPPClassType A = (ICPPClassType) compSpec.getName().resolveBinding(); - + ICPPMethod[] methods = ((ICPPClassScope)A.getCompositeScope()).getImplicitMethods(); assertNotNull(methods); int count=0; for (ICPPMethod method : methods) count+= method.getName().startsWith("~") ? 1 : 0; assertEquals(line, 0, count); - + methods = A.getDeclaredMethods(); assertNotNull(methods); count=0; @@ -1298,7 +1342,7 @@ public class AST2CPPTests extends AST2BaseTest { assertEquals(line, 1, count); } } - + // class C {}; // class D {D();}; // class E {E(void);}; @@ -1309,14 +1353,14 @@ public class AST2CPPTests extends AST2BaseTest { IASTSimpleDeclaration decl = (IASTSimpleDeclaration) tu.getDeclarations()[0]; IASTCompositeTypeSpecifier compSpec = (IASTCompositeTypeSpecifier) decl.getDeclSpecifier(); ICPPClassType A = (ICPPClassType) compSpec.getName().resolveBinding(); - + ICPPMethod[] methods = ((ICPPClassScope)A.getCompositeScope()).getImplicitMethods(); assertNotNull(methods); int count=0; for (ICPPMethod method : methods) count+= method.getName().startsWith("~") ? 1 : 0; assertEquals(line, 1, count); - + methods = A.getDeclaredMethods(); assertNotNull(methods); count=0; @@ -1325,7 +1369,7 @@ public class AST2CPPTests extends AST2BaseTest { assertEquals(line, 0, count); } } - + // class A {public: A();}; // class B {public: B() {}}; // class C {public: C() {}}; @@ -1354,12 +1398,12 @@ public class AST2CPPTests extends AST2BaseTest { IASTCompositeTypeSpecifier compSpec = (IASTCompositeTypeSpecifier) decl.getDeclSpecifier(); ICPPClassType A = (ICPPClassType) compSpec.getName().resolveBinding(); ICPPConstructor[] ctors = A.getConstructors(); - + assertNotNull(ctors); assertEquals(2, ctors.length); // one user-declared default constructor, one implicit copy constructor } } - + // class Q {public: Q(int k);}; // class R {public: R(int k=5, long k);}; // class S {public: S(int k=5, int* ip);}; @@ -1372,12 +1416,12 @@ public class AST2CPPTests extends AST2BaseTest { IASTCompositeTypeSpecifier compSpec = (IASTCompositeTypeSpecifier) decl.getDeclSpecifier(); ICPPClassType A = (ICPPClassType) compSpec.getName().resolveBinding(); ICPPConstructor[] ctors = A.getConstructors(); - + assertNotNull(ctors); assertEquals(2, ctors.length); // one user-declared non-default constructor, one implicit copy constructor } } - + // class A {public: A(A &);}; // class B {private: B(const B &);}; // class C {protected: C(volatile C &);}; @@ -1394,13 +1438,13 @@ public class AST2CPPTests extends AST2BaseTest { IASTCompositeTypeSpecifier compSpec = (IASTCompositeTypeSpecifier) decl.getDeclSpecifier(); ICPPClassType A = (ICPPClassType) compSpec.getName().resolveBinding(); ICPPConstructor[] ctors = A.getConstructors(); - + assertNotNull(ctors); // one copy constructor, no implicit default constructor assertEquals(1, ctors.length); } } - + // class I {public: I(I *, int k=5);}; // I * rather than I & // class J {private: J(const J *, int j, int k=3);}; // J * rather than J & // class K {protected: K(volatile K *, int i=4, int l=2);}; // K * rather than K & @@ -1413,13 +1457,13 @@ public class AST2CPPTests extends AST2BaseTest { IASTCompositeTypeSpecifier compSpec = (IASTCompositeTypeSpecifier) decl.getDeclSpecifier(); ICPPClassType A = (ICPPClassType) compSpec.getName().resolveBinding(); ICPPConstructor[] ctors = A.getConstructors(); - + assertNotNull(ctors); // one copy constructor, one user declared constructor (not a copy constructor) assertEquals(2, ctors.length); } } - + // class A {public: void operator=(int); }; // legitimate, but not a copy assignment operator // class B {public: void operator=(B &, int); }; // compile error // class C {public: void operator=(C &c, int k=5) {} }; // compile error @@ -1438,9 +1482,9 @@ public class AST2CPPTests extends AST2BaseTest { boolean eq= Arrays.equals(method.getName().toCharArray(), OverloadableOperator.ASSIGN.toCharArray()); count+= eq ? 1 : 0; } - + assertEquals(1, count); // check for one implicit operator= method - + methods = A.getDeclaredMethods(); assertNotNull(methods); count=0; @@ -1448,11 +1492,11 @@ public class AST2CPPTests extends AST2BaseTest { boolean eq= Arrays.equals(method.getName().toCharArray(), OverloadableOperator.ASSIGN.toCharArray()); count+= eq ? 1 : 0; } - + assertEquals(1, count); // check for the user declared } } - + // class A {public: void operator=(A &); }; // class B {protected: void operator=(const B &); }; // class C {private: void operator=(volatile C &) {} }; @@ -1471,9 +1515,9 @@ public class AST2CPPTests extends AST2BaseTest { boolean eq= Arrays.equals(method.getName().toCharArray(), OverloadableOperator.ASSIGN.toCharArray()); count+= eq ? 1 : 0; } - + assertEquals(0, count); // check for no implicit operator= methods - + methods = A.getDeclaredMethods(); assertNotNull(methods); count=0; @@ -1481,11 +1525,11 @@ public class AST2CPPTests extends AST2BaseTest { boolean eq= Arrays.equals(method.getName().toCharArray(), OverloadableOperator.ASSIGN.toCharArray()); count+= eq ? 1 : 0; } - + assertEquals(1, count); // only should get the user declared } } - + // namespace A { int x; } // namespace B = A; // int f(){ B::x; } @@ -1493,19 +1537,19 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + assertEquals(col.size(), 8); ICPPNamespace A = (ICPPNamespace) col.getName(0).resolveBinding(); IVariable x = (IVariable) col.getName(1).resolveBinding(); ICPPNamespace B = (ICPPNamespace) col.getName(2).resolveBinding(); assertTrue(B instanceof ICPPNamespaceAlias); assertSame(((ICPPNamespaceAlias) B).getBinding(), A); - + assertInstances(col, A, 2); assertInstances(col, B, 2); assertInstances(col, x, 3); } - + // public void testBug84250() throws Exception { // assertTrue(((IASTDeclarationStatement) ((IASTCompoundStatement) // ((IASTFunctionDefinition) parse( @@ -1513,7 +1557,7 @@ public class AST2CPPTests extends AST2BaseTest { // ParserLanguage.CPP).getDeclarations()[0]).getBody()).getStatements()[0]).getDeclaration() // instanceof IASTSimpleDeclaration); //$NON-NLS-1$ // } - + // void f() { // int (*p) [2]; // (&p)[0] = 1; @@ -1522,17 +1566,17 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + assertEquals(col.size(), 3); IVariable p = (IVariable) col.getName(1).resolveBinding(); assertTrue(p.getType() instanceof IPointerType); assertTrue(((IPointerType) p.getType()).getType() instanceof IArrayType); IArrayType at = (IArrayType) ((IPointerType) p.getType()).getType(); assertTrue(at.getType() instanceof IBasicType); - + assertInstances(col, p, 2); } - + // void f() { // int (*p) [2]; // (&p)[0] = 1; @@ -1541,51 +1585,50 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + assertEquals(col.size(), 3); - + IVariable p_ref = (IVariable) col.getName(2).resolveBinding(); IVariable p_decl = (IVariable) col.getName(1).resolveBinding(); - + assertSame(p_ref, p_decl); } - + // struct s { double i; } f(void); // struct s f(void){} public void testBug84266() throws Exception { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + assertEquals(col.size(), 7); - + ICompositeType s_ref = (ICompositeType) col.getName(4).resolveBinding(); - ICompositeType s_decl = (ICompositeType) col.getName(0) - .resolveBinding(); - + ICompositeType s_decl = (ICompositeType) col.getName(0).resolveBinding(); + assertSame(s_ref, s_decl); } - + public void testBug84266_2() throws Exception { IASTTranslationUnit tu = parse("struct s f(void);", ParserLanguage.CPP); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + assertEquals(col.size(), 3); - + ICompositeType s = (ICompositeType) col.getName(0).resolveBinding(); assertNotNull(s); - + tu = parse("struct s f(void){}", ParserLanguage.CPP); //$NON-NLS-1$ col = new CPPNameCollector(); tu.accept(col); - + assertEquals(col.size(), 3); - + s = (ICompositeType) col.getName(0).resolveBinding(); assertNotNull(s); } - + // void f(int m, int c[m][m]); // void f(int m, int c[m][m]){ // int x; @@ -1595,22 +1638,22 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + assertEquals(col.size(), 13); - + IParameter m = (IParameter) col.getName(3).resolveBinding(); IVariable x3 = (IVariable) col.getName(12).resolveBinding(); IVariable x2 = (IVariable) col.getName(11).resolveBinding(); IVariable x1 = (IVariable) col.getName(10).resolveBinding(); - + assertSame(x2, x3); assertNotSame(x1, x2); - + assertInstances(col, m, 6); assertInstances(col, x1, 1); assertInstances(col, x2, 2); } - + // class A { public : static int n; }; // int main() { // int A; @@ -1621,21 +1664,20 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + assertEquals(col.size(), 9); - + ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); ICPPField n = (ICPPField) col.getName(1).resolveBinding(); IBinding Aref = col.getName(5).resolveBinding(); IBinding nref = col.getName(6).resolveBinding(); - IProblemBinding prob = (IProblemBinding) col.getName(7) - .resolveBinding(); - + IProblemBinding prob = (IProblemBinding) col.getName(7).resolveBinding(); + assertSame(A, Aref); assertSame(n, nref); assertNotNull(prob); } - + public void testBug84371() throws Exception { String code = "int x = ::ABC::DEF::ghi;"; //$NON-NLS-1$ IASTTranslationUnit tu = parse(code, ParserLanguage.CPP); @@ -1649,7 +1691,7 @@ public class AST2CPPTests extends AST2BaseTest { assertEquals(name.getNames()[1].toString(), "DEF"); //$NON-NLS-1$ assertEquals(name.getNames()[2].toString(), "ghi"); //$NON-NLS-1$ } - + // namespace Y { void f(float); } // namespace A { using namespace Y; void f(int); } // namespace B { void f(char); } @@ -1663,12 +1705,12 @@ public class AST2CPPTests extends AST2BaseTest { false, false); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPNamespace Y = (ICPPNamespace) col.getName(0).resolveBinding(); ICPPNamespace A = (ICPPNamespace) col.getName(3).resolveBinding(); ICPPNamespace B = (ICPPNamespace) col.getName(7).resolveBinding(); ICPPNamespace AB = (ICPPNamespace) col.getName(10).resolveBinding(); - + IFunction f = (IFunction) col.getName(16).resolveBinding(); IFunction fdef = (IFunction) col.getName(5).resolveBinding(); assertTrue(col.getName(19).resolveBinding() instanceof IProblemBinding); @@ -1679,7 +1721,7 @@ public class AST2CPPTests extends AST2BaseTest { assertInstances(col, B, 2); assertInstances(col, AB, 3); } - + // struct Node { // struct Node* Next; // struct Data* Data; @@ -1691,7 +1733,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testBug84692() throws Exception { // also tests bug 234042. CPPASTNameBase.sAllowRecursionBindings= false; - + IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); @@ -1705,7 +1747,7 @@ public class AST2CPPTests extends AST2BaseTest { assertInstances(col, Node, 3); assertInstances(col, Data, 2); } - + // namespace B { int b; } // namespace A { using namespace B; int a; } // namespace B { using namespace A; } @@ -1714,14 +1756,14 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + assertEquals(col.size(), 11); - + ICPPVariable a1 = (ICPPVariable) col.getName(4).resolveBinding(); IVariable a2 = (IVariable) col.getName(10).resolveBinding(); assertSame(a1, a2); } - + // struct C { // void f(); // const C& operator=(const C&); @@ -1738,14 +1780,14 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + assertEquals(col.size(), 17); - + ICPPMethod f = (ICPPMethod) col.getName(1).resolveBinding(); IASTName[] refs = tu.getReferences(f); assertEquals(1, refs.length); assertSame(f, refs[0].resolveBinding()); - + ICPPClassType C = (ICPPClassType) col.getName(0).resolveBinding(); ICPPMethod op = (ICPPMethod) col.getName(3).resolveBinding(); IParameter other = (IParameter) col.getName(11).resolveBinding(); @@ -1753,43 +1795,41 @@ public class AST2CPPTests extends AST2BaseTest { assertNotNull(dtor); assertEquals(dtor.getName(), "~C"); //$NON-NLS-1$ assertInstances(col, C, 6); - + assertInstances(col, op, 3); assertInstances(col, other, 4); } - + // class A { void f(); void g() const; }; // void A::f(){ this; } // void A::g() const { *this; } public void testThis() throws Exception { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); - - IASTSimpleDeclaration decl = (IASTSimpleDeclaration) tu - .getDeclarations()[0]; - ICPPClassType A = (ICPPClassType) ((IASTCompositeTypeSpecifier) decl - .getDeclSpecifier()).getName().resolveBinding(); - - IASTFunctionDefinition def = (IASTFunctionDefinition) tu - .getDeclarations()[1]; - IASTExpressionStatement expStatement = (IASTExpressionStatement) ((IASTCompoundStatement) def - .getBody()).getStatements()[0]; + + IASTSimpleDeclaration decl = (IASTSimpleDeclaration) tu.getDeclarations()[0]; + ICPPClassType A = + (ICPPClassType) ((IASTCompositeTypeSpecifier) decl.getDeclSpecifier()).getName().resolveBinding(); + + IASTFunctionDefinition def = (IASTFunctionDefinition) tu.getDeclarations()[1]; + IASTExpressionStatement expStatement = + (IASTExpressionStatement) ((IASTCompoundStatement) def.getBody()).getStatements()[0]; assertTrue(expStatement.getExpression() instanceof IASTLiteralExpression); IType type = expStatement.getExpression().getExpressionType(); - + assertTrue(type instanceof IPointerType); assertSame(((IPointerType) type).getType(), A); - + def = (IASTFunctionDefinition) tu.getDeclarations()[2]; - expStatement = (IASTExpressionStatement) ((IASTCompoundStatement) def - .getBody()).getStatements()[0]; + expStatement = + (IASTExpressionStatement) ((IASTCompoundStatement) def.getBody()).getStatements()[0]; IASTUnaryExpression ue = (IASTUnaryExpression) expStatement.getExpression(); type = ue.getExpressionType(); - + assertTrue(type instanceof IQualifierType); assertSame(((IQualifierType) type).getType(), A); assertTrue(((IQualifierType) type).isConst()); } - + public void testBug84710() throws Exception { IASTTranslationUnit tu = parse("class T { T(); };", ParserLanguage.CPP); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); @@ -1799,7 +1839,7 @@ public class AST2CPPTests extends AST2BaseTest { "T".toCharArray())); //$NON-NLS-1$ assertEquals(T.getName(), "T"); //$NON-NLS-1$ } - + // namespace NS { // class T {}; // void f(T); @@ -1812,18 +1852,18 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPNamespace NS = (ICPPNamespace) col.getName(0).resolveBinding(); ICPPClassType T = (ICPPClassType) col.getName(1).resolveBinding(); IFunction f = (IFunction) col.getName(2).resolveBinding(); IVariable parm = (IVariable) col.getName(8).resolveBinding(); - + assertInstances(col, NS, 2); assertInstances(col, T, 4); assertInstances(col, f, 2); assertInstances(col, parm, 2); } - + // namespace NS1{ // void f(void *); // } @@ -1840,16 +1880,16 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IFunction fref = (IFunction) col.getName(14).resolveBinding(); IFunction f1 = (IFunction) col.getName(1).resolveBinding(); IFunction f2 = (IFunction) col.getName(6).resolveBinding(); - + assertSame(f2, fref); assertNotNull(f1); assertNotNull(f2); } - + // namespace { int i; } //1 // void f(){ i; } // namespace A { @@ -1869,22 +1909,21 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + assertEquals(17, col.size()); - + IVariable i1 = (IVariable) col.getName(1).resolveBinding(); IVariable i2 = (IVariable) col.getName(6).resolveBinding(); IVariable j = (IVariable) col.getName(7).resolveBinding(); - + assertInstances(col, i1, 2); assertInstances(col, i2, 4); assertInstances(col, j, 2); - - IProblemBinding problem = (IProblemBinding) col.getName(12) - .resolveBinding(); + + IProblemBinding problem = (IProblemBinding) col.getName(12).resolveBinding(); assertEquals(IProblemBinding.SEMANTIC_AMBIGUOUS_LOOKUP, problem.getID()); } - + // struct B { // void mutate(); // }; @@ -1896,18 +1935,18 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + assertEquals(8, col.size()); - + ICPPMethod mutate = (ICPPMethod) col.getName(1).resolveBinding(); ICPPClassType B = (ICPPClassType) col.getName(0).resolveBinding(); IVariable pb = (IVariable) col.getName(4).resolveBinding(); - + assertInstances(col, pb, 2); assertInstances(col, mutate, 2); assertInstances(col, B, 2); } - + // struct S { int i; }; // void f() { ; // int S::* pm = &S::i; @@ -1916,21 +1955,21 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + assertEquals(9, col.size()); } - + public void testPointerToMemberType() throws Exception { IASTTranslationUnit tu = parse("struct S; int S::* pm;", //$NON-NLS-1$ ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + assertEquals(4, col.size()); - + IVariable pm = (IVariable) col.getName(3).resolveBinding(); ICPPClassType S = (ICPPClassType) col.getName(0).resolveBinding(); - + IType t = pm.getType(); assertNotNull(t); assertTrue(t instanceof ICPPPointerToMemberType); @@ -1938,7 +1977,7 @@ public class AST2CPPTests extends AST2BaseTest { assertSame(S, cls); assertTrue(((ICPPPointerToMemberType) t).getType() instanceof IBasicType); } - + // struct S { int i ; } *s; // int S::* pm = &S::i; // void f() { @@ -1948,13 +1987,13 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IBinding ref = col.getName(11).resolveBinding(); IVariable pm = (IVariable) col.getName(5).resolveBinding(); - + assertSame(pm, ref); } - + // struct S { // int i; // S* f(); @@ -1967,27 +2006,27 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPClassType S = (ICPPClassType) col.getName(0).resolveBinding(); IVariable pm = (IVariable) col.getName(8).resolveBinding(); IField i = (IField) col.getName(1).resolveBinding(); ICPPMethod f = (ICPPMethod) col.getName(3).resolveBinding(); - + IType t = pm.getType(); assertTrue(t instanceof ICPPPointerToMemberType); IFunctionType ft = (IFunctionType) ((ICPPPointerToMemberType) t).getType(); IType ST = ((ICPPPointerToMemberType) t).getMemberOfClass(); - + assertTrue(ft.getReturnType() instanceof IPointerType); assertSame(ST, ((IPointerType) ft.getReturnType()).getType()); assertSame(S, ST); - + assertInstances(col, S, 5); assertInstances(col, pm, 2); assertInstances(col, i, 2); assertInstances(col, f, 3); } - + // public void testFindTypeBinding_1() throws Exception { // IASTTranslationUnit tu = parse( // "int x = 5; int y(x);", ParserLanguage.CPP); //$NON-NLS-1$ @@ -2028,7 +2067,7 @@ public class AST2CPPTests extends AST2BaseTest { // assertNotNull(binding); // assertTrue(binding instanceof ICPPClassType); // } - + // struct B { }; // void g() { // B * bp; //1 @@ -2039,7 +2078,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTCompoundStatement body = (IASTCompoundStatement) g.getBody(); assertTrue(body.getStatements()[0] instanceof IASTDeclarationStatement); } - + // class A { public: int i; }; // class B : public A {}; // void f(int B::*); @@ -2051,20 +2090,20 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IFunction f = (IFunction) col.getName(15).resolveBinding(); ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); ICPPField i = (ICPPField) col.getName(1).resolveBinding(); ICPPClassType B = (ICPPClassType) col.getName(2).resolveBinding(); IVariable pm = (IVariable) col.getName(11).resolveBinding(); - + assertInstances(col, f, 2); assertInstances(col, A, 4); assertInstances(col, i, 3); assertInstances(col, B, 2); assertInstances(col, pm, 2); } - + // namespace N { // class A { public: int i; }; // void f(int A::*); @@ -2077,16 +2116,16 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IFunction f = (IFunction) col.getName(16).resolveBinding(); ICPPNamespace N = (ICPPNamespace) col.getName(0).resolveBinding(); ICPPClassType A = (ICPPClassType) col.getName(1).resolveBinding(); - + assertInstances(col, f, 2); assertInstances(col, N, 3); assertInstances(col, A, 4); } - + // namespace M { // class B { }; // void f(B*); @@ -2103,14 +2142,14 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IFunction f = (IFunction) col.getName(27).resolveBinding(); ICPPNamespace M = (ICPPNamespace) col.getName(0).resolveBinding(); ICPPClassType B = (ICPPClassType) col.getName(1).resolveBinding(); ICPPNamespace N = (ICPPNamespace) col.getName(5).resolveBinding(); ICPPClassType A = (ICPPClassType) col.getName(6).resolveBinding(); IVariable pm = (IVariable) col.getName(17).resolveBinding(); - + assertInstances(col, f, 2); assertInstances(col, M, 3); assertInstances(col, B, 6); @@ -2118,7 +2157,7 @@ public class AST2CPPTests extends AST2BaseTest { assertInstances(col, A, 5); assertInstances(col, pm, 2); } - + // class A { // friend void set(); // friend class B; @@ -2129,14 +2168,14 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); IFunction set = (IFunction) col.getName(1).resolveBinding(); ICPPClassType B = (ICPPClassType) col.getName(2).resolveBinding(); - + assertInstances(col, set, 2); assertInstances(col, B, 2); - + IBinding[] friends = A.getFriends(); assertEquals(2, friends.length); assertSame(friends[0], set); @@ -2155,12 +2194,12 @@ public class AST2CPPTests extends AST2BaseTest { ICPPClassType A = bh.assertNonProblem("A", 1); IFunction set = bh.assertNonProblem("set()", 3); IFunction m = bh.assertNonProblem("Other::m()", 8); - + IBinding[] friends = A.getFriends(); assertEquals(2, friends.length); assertSame(friends[0], set); assertSame(friends[1], m); - + IBinding[] declaredMethods= A.getAllDeclaredMethods(); assertEquals(0, declaredMethods.length); declaredMethods= A.getDeclaredMethods(); @@ -2173,17 +2212,17 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPClassType B = (ICPPClassType) col.getName(2).resolveBinding(); ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); - + assertInstances(col, B, 3); - + IBinding[] friends = A.getFriends(); assertEquals(friends.length, 1); assertSame(friends[0], B); } - + // class A { // public: class N {}; // }; @@ -2194,20 +2233,20 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPClassType N = (ICPPClassType) col.getName(5).resolveBinding(); ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); ICPPClassType B = (ICPPClassType) col.getName(2).resolveBinding(); assertInstances(col, N, 3); - + IBinding[] friends = B.getFriends(); assertEquals(friends.length, 1); assertSame(friends[0], N); - + assertEquals(A.getFriends().length, 0); assertEquals(N.getFriends().length, 0); } - + // class A { // friend class B *helper(); // }; @@ -2215,19 +2254,19 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IFunction helper = (IFunction) col.getName(2).resolveBinding(); assertSame(helper.getScope(), tu.getScope()); - + ICPPClassType B = (ICPPClassType) col.getName(1).resolveBinding(); ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); assertSame(B.getScope(), A.getScope()); - + IBinding[] friends = A.getFriends(); assertEquals(friends.length, 1); assertSame(friends[0], helper); } - + // void f(int); // void f(char); // void (*pf) (int) = &f; @@ -2238,16 +2277,16 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IFunction f1 = (IFunction) col.getName(0).resolveBinding(); IFunction f2 = (IFunction) col.getName(2).resolveBinding(); IVariable pf = (IVariable) col.getName(4).resolveBinding(); - + assertInstances(col, pf, 2); assertInstances(col, f1, 3); assertInstances(col, f2, 1); } - + // void f(char); // void f(int); // void g(void (*)(int)) {} @@ -2260,18 +2299,18 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IFunction f1 = (IFunction) col.getName(0).resolveBinding(); IFunction f2 = (IFunction) col.getName(2).resolveBinding(); IFunction g = (IFunction) col.getName(4).resolveBinding(); IVariable pg = (IVariable) col.getName(7).resolveBinding(); - + assertInstances(col, f1, 1); assertInstances(col, f2, 3); assertInstances(col, g, 2); assertInstances(col, pg, 2); } - + // void f(int); // void f(char); // void (* bar ()) (int) { @@ -2281,16 +2320,16 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IFunction f1 = (IFunction) col.getName(0).resolveBinding(); IFunction f2 = (IFunction) col.getName(2).resolveBinding(); IFunction bar = (IFunction) col.getName(4).resolveBinding(); assertNotNull(bar); - + assertInstances(col, f1, 2); assertInstances(col, f2, 1); } - + // void f(int); // void f(char); // void foo () { @@ -2300,16 +2339,16 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IFunction f1 = (IFunction) col.getName(0).resolveBinding(); IFunction f2 = (IFunction) col.getName(2).resolveBinding(); IFunction bar = (IFunction) col.getName(4).resolveBinding(); assertNotNull(bar); - + assertInstances(col, f1, 2); assertInstances(col, f2, 1); } - + // extern int g; // int g; // void f() { g = 1; } @@ -2317,11 +2356,11 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IVariable g = (IVariable) col.getName(3).resolveBinding(); assertInstances(col, g, 3); } - + // struct A { // int a2; // }; @@ -2338,11 +2377,11 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IASTName name = col.getName(11); assertEquals("a", name.toString()); IBinding[] bs = CPPSemantics.findBindingsForContentAssist(name, true, null); - + // check the result HashSet result= new HashSet(); for (IBinding binding : bs) { @@ -2369,11 +2408,11 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IASTName name = col.getName(5); assertEquals("v_", name.toString()); IBinding[] bs = CPPSemantics.findBindingsForContentAssist(name, true, new String[] {"ns::inner"}); - + // check the result HashSet result= new HashSet(); for (IBinding binding : bs) { @@ -2389,12 +2428,12 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IFunction f = (IFunction) col.getName(1).resolveBinding(); assertTrue(f.isStatic()); assertInstances(col, f, 2); } - + // // void f() { // // if (__io.flags() & ios_base::showbase // // || __i < 2 || __sign.size() > 1 @@ -2411,7 +2450,7 @@ public class AST2CPPTests extends AST2BaseTest { // IASTCPPIfStatement if_stmt = (IASTCPPIfStatement) body.getStatements()[0]; // assertNotNull(if_stmt.getCondition()); // } - + // struct B { void mutate(); }; // struct D1 : B {}; // struct D2 : B {}; @@ -2425,20 +2464,20 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPClassType D1 = (ICPPClassType) col.getName(2).resolveBinding(); ICPPClassType D2 = (ICPPClassType) col.getName(4).resolveBinding(); - + ICPPConstructor[] ctors = D1.getConstructors(); ICPPConstructor d1_ctor = ctors[0]; - + ctors = D2.getConstructors(); ICPPConstructor d2_ctor = ctors[0]; - + assertInstances(col, d1_ctor, 1); assertInstances(col, d2_ctor, 1); } - + // struct C { // void f(); // const C& operator =(const C&); @@ -2455,20 +2494,20 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPClassType C = (ICPPClassType) col.getName(0).resolveBinding(); ICPPMethod f = (ICPPMethod) col.getName(1).resolveBinding(); ICPPMethod op = (ICPPMethod) col.getName(3).resolveBinding(); IParameter other = (IParameter) col.getName(5).resolveBinding(); - + assertInstances(col, C, 6); assertInstances(col, f, 2); assertInstances(col, op, 3); assertInstances(col, other, 4); - + assertEquals(other.getName(), "other"); //$NON-NLS-1$ } - + // extern "C" { // void printf(const char *); // void sprintf(const char *); @@ -2482,15 +2521,15 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IFunction r1 = (IFunction) col.getName(6).resolveBinding(); IFunction r2 = (IFunction) col.getName(8).resolveBinding(); IFunction printf = (IFunction) col.getName(0).resolveBinding(); - + assertSame(printf, r1); assertSame(printf, r2); } - + // struct S; // extern S a; // void g(S); @@ -2501,42 +2540,42 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPClassType S = (ICPPClassType) col.getName(0).resolveBinding(); IFunction g = (IFunction) col.getName(3).resolveBinding(); - + assertInstances(col, S, 3); assertInstances(col, g, 2); } - + public void testBug86288() throws Exception { String code = "int *foo(int *b) { return (int *)(b); }"; //$NON-NLS-1$ IASTTranslationUnit tu = parse(code, ParserLanguage.CPP); - IASTReturnStatement r = (IASTReturnStatement) ((IASTCompoundStatement) ((IASTFunctionDefinition) tu - .getDeclarations()[0]).getBody()).getStatements()[0]; + IASTFunctionDefinition function = (IASTFunctionDefinition) tu.getDeclarations()[0]; + IASTReturnStatement r = + (IASTReturnStatement) ((IASTCompoundStatement) function.getBody()).getStatements()[0]; assertTrue(r.getReturnValue() instanceof IASTCastExpression); } - + // void foo() { // struct B { // int f(); - // }; + // }; // int (B::*pb)() = &B::f; // } public void testBug84476() throws Exception { String code = getAboveComment(); IASTFunctionDefinition foo = (IASTFunctionDefinition) parse(code, ParserLanguage.CPP).getDeclarations()[0]; - IASTDeclarationStatement decl = (IASTDeclarationStatement) ((IASTCompoundStatement) foo - .getBody()).getStatements()[1]; - IASTSimpleDeclaration pb = (IASTSimpleDeclaration) decl - .getDeclaration(); + IASTDeclarationStatement decl = + (IASTDeclarationStatement) ((IASTCompoundStatement) foo.getBody()).getStatements()[1]; + IASTSimpleDeclaration pb = (IASTSimpleDeclaration) decl.getDeclaration(); IASTDeclarator d = pb.getDeclarators()[0]; assertEquals(d.getNestedDeclarator().getPointerOperators().length, 1); assertEquals(d.getNestedDeclarator().getName().toString(), "pb"); //$NON-NLS-1$ assertTrue(d.getNestedDeclarator().getPointerOperators()[0] instanceof ICPPASTPointerToMember); } - + // struct T1 { // T1 operator() (int x) { // return T1(x); @@ -2547,9 +2586,8 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - - ICPPConstructor T1_ctor = (ICPPConstructor) col.getName(6) - .resolveBinding(); + + ICPPConstructor T1_ctor = (ICPPConstructor) col.getName(6).resolveBinding(); ICPPClassType T1 = (ICPPClassType) col.getName(0).resolveBinding(); assertInstances(col, T1_ctor, 1); assertInstances(col, T1, 3); @@ -2558,7 +2596,7 @@ public class AST2CPPTests extends AST2BaseTest { IBinding ctor2 = fc.getImplicitNames()[0].resolveBinding(); assertSame(T1_ctor, ctor2); } - + // struct S { int i; }; // void foo() { // int S::* pm = &S::i; @@ -2567,17 +2605,17 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPClassType S = (ICPPClassType) col.getName(0).resolveBinding(); - + assertInstances(col, S, 3); - + IASTName[] refs = tu.getReferences(S); assertEquals(refs.length, 2); assertSame(refs[0], col.getName(4)); assertSame(refs[1], col.getName(7)); } - + // class A { // public: // template <class T> void f(T); @@ -2593,7 +2631,7 @@ public class AST2CPPTests extends AST2BaseTest { CPPNameCollector col = new CPPNameCollector(); tu.accept(col); } - + // void foo() { // int i = 42; // int a[10]; @@ -2605,15 +2643,15 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IVariable i1 = (IVariable) col.getName(1).resolveBinding(); IVariable i2 = (IVariable) col.getName(3).resolveBinding(); - + assertNotSame(i1, i2); assertInstances(col, i1, 2); assertInstances(col, i2, 4); } - + // class X { int i, j; }; // class Y { X x; }; // void foo() { @@ -2628,16 +2666,16 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPField i = (ICPPField) col.getName(1).resolveBinding(); ICPPField j = (ICPPField) col.getName(2).resolveBinding(); ICPPField x = (ICPPField) col.getName(5).resolveBinding(); - + assertInstances(col, i, 3); assertInstances(col, j, 3); assertInstances(col, x, 5); } - + // void foo() { // struct A { // int val; @@ -2653,12 +2691,12 @@ public class AST2CPPTests extends AST2BaseTest { public void testBug84478() throws Exception { IASTFunctionDefinition foo = (IASTFunctionDefinition) parse( getAboveComment(), ParserLanguage.CPP).getDeclarations()[0]; - ICPPASTWhileStatement whileStatement = (ICPPASTWhileStatement) ((IASTCompoundStatement) foo - .getBody()).getStatements()[2]; + ICPPASTWhileStatement whileStatement = + (ICPPASTWhileStatement) ((IASTCompoundStatement) foo.getBody()).getStatements()[2]; assertNull(whileStatement.getCondition()); assertNotNull(whileStatement.getConditionDeclaration()); } - + // void foo() { // const int x = 12; // { enum { x = x }; } @@ -2668,28 +2706,28 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IEnumerator enum_x = (IEnumerator) col.getName(3).resolveBinding(); IBinding x_ref = col.getName(4).resolveBinding(); IEnumerator RED = (IEnumerator) col.getName(6).resolveBinding(); - + String[] s = ((ICPPBinding) RED).getQualifiedName(); assertEquals(s[0], "RED"); //$NON-NLS-1$ assertTrue(((ICPPBinding) RED).isGloballyQualified()); - + IASTName[] decls = tu.getDeclarationsInAST(enum_x); assertEquals(decls.length, 1); assertSame(decls[0], col.getName(3)); - + decls = tu.getDeclarationsInAST(x_ref); assertEquals(decls.length, 1); assertSame(decls[0], col.getName(1)); - + decls = tu.getDeclarationsInAST(RED); assertEquals(decls.length, 1); assertSame(decls[0], col.getName(6)); } - + // class D {}; // D d1; // const D d2; @@ -2702,16 +2740,16 @@ public class AST2CPPTests extends AST2BaseTest { CPPNameCollector col = new CPPNameCollector(); tu.accept(col); assertEquals(col.size(), 10); - + IVariable d1 = (IVariable) col.getName(6).resolveBinding(); IVariable d2 = (IVariable) col.getName(7).resolveBinding(); ICPPClassType D = (ICPPClassType) col.getName(8).resolveBinding(); - + assertInstances(col, D, 4); assertInstances(col, d1, 2); assertInstances(col, d2, 3); } - + // void point (int = 3, int = 4); // void foo() { // point(1, 2); @@ -2722,12 +2760,12 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IFunction point = (IFunction) col.getName(0).resolveBinding(); - + assertInstances(col, point, 4); } - + // namespace Outer{ // int i; // namespace Inner { @@ -2740,14 +2778,14 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IVariable i = (IVariable) col.getName(4).resolveBinding(); IVariable i2 = (IVariable) col.getName(7).resolveBinding(); - + assertInstances(col, i, 2); assertInstances(col, i2, 2); } - + // namespace Q { // namespace V { // void f(); @@ -2760,23 +2798,23 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IFunction f1 = (IFunction) col.getName(2).resolveBinding(); ICPPFunction f2 = (ICPPFunction) col.getName(5).resolveBinding(); assertSame(f1, f2); - + IASTName[] decls = tu.getDeclarationsInAST(f2); assertEquals(decls.length, 2); assertSame(decls[0], col.getName(2)); assertSame(decls[1], col.getName(5)); - + String[] s = f2.getQualifiedName(); assertEquals(s[0], "Q"); //$NON-NLS-1$ assertEquals(s[1], "V"); //$NON-NLS-1$ assertEquals(s[2], "f"); //$NON-NLS-1$ assertTrue(f2.isGloballyQualified()); } - + // struct B { // void f (char); // void g (char); @@ -2790,30 +2828,30 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPFunction f_ref = (ICPPFunction) col.getName(12).resolveBinding(); ICPPFunction g_ref = (ICPPFunction) col.getName(15).resolveBinding(); - + ICPPFunction f = (ICPPFunction) col.getName(1).resolveBinding(); assertSame(f_ref, f); - + IFunction g = (IFunction) col.getName(13).resolveBinding(); assertSame(g, g_ref); - + assertInstances(col, f_ref, 2); assertInstances(col, g_ref, 2); - + String[] s = f_ref.getQualifiedName(); assertEquals(s[0], "B"); //$NON-NLS-1$ assertEquals(s[1], "f"); //$NON-NLS-1$ assertTrue(f_ref.isGloballyQualified()); - + s = g_ref.getQualifiedName(); assertEquals(s[0], "D"); //$NON-NLS-1$ assertEquals(s[1], "g"); //$NON-NLS-1$ assertTrue(f.isGloballyQualified()); } - + // namespace Company_with_veryblahblah {} // namespace CWVLN = Company_with_veryblahblah; // namespace CWVLN = Company_with_veryblahblah; @@ -2822,38 +2860,38 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPNamespace ns = (ICPPNamespace) col.getName(0).resolveBinding(); ICPPNamespace alias = (ICPPNamespace) col.getName(1).resolveBinding(); - + String[] s = ns.getQualifiedName(); assertEquals(s[0], "Company_with_veryblahblah"); //$NON-NLS-1$ s = alias.getQualifiedName(); assertEquals(s[0], "CWVLN"); //$NON-NLS-1$ - + assertTrue(alias instanceof ICPPNamespaceAlias); assertSame(((ICPPNamespaceAlias) alias).getBinding(), ns); - + IASTName[] refs = tu.getReferences(ns); assertEquals(refs.length, 2); assertSame(refs[0], col.getName(2)); assertSame(refs[1], col.getName(4)); - + IASTName[] decls = tu.getDeclarationsInAST(ns); assertEquals(decls.length, 1); assertSame(decls[0], col.getName(0)); - + refs = tu.getReferences(alias); assertEquals(refs.length, 1); assertSame(refs[0], col.getName(6)); - + decls = tu.getDeclarationsInAST(alias); assertEquals(decls.length, 3); assertSame(decls[0], col.getName(1)); assertSame(decls[1], col.getName(3)); assertSame(decls[2], col.getName(5)); } - + // namespace A { // void f(char); // void f(int); @@ -2863,28 +2901,27 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - - ICPPUsingDeclaration u = (ICPPUsingDeclaration) col.getName(7) - .resolveBinding(); - + + ICPPUsingDeclaration u = (ICPPUsingDeclaration) col.getName(7).resolveBinding(); + IASTName[] decls = tu.getDeclarationsInAST(u); assertEquals(3, decls.length); // 2 function-decls + using-decl assertSame(decls[0], col.getName(1)); assertSame(decls[1], col.getName(3)); - + IBinding[] delegates = u.getDelegates(); assertEquals(delegates.length, 2); - + decls = tu.getDeclarationsInAST(delegates[0]); assertEquals(2, decls.length); // function-decl + using-decl assertSame(decls[0], col.getName(1)); assertSame(decls[1], col.getName(7)); - + decls = tu.getDeclarationsInAST(delegates[0]); assertEquals(2, decls.length); // function-decl + using-decl assertSame(decls[0], col.getName(1)); } - + // namespace A { // void f(int); // void f(double); @@ -2903,12 +2940,12 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IFunction f_decl = (IFunction) col.getName(10).resolveBinding(); IFunction f_ref = (IFunction) col.getName(19).resolveBinding(); assertSame(f_decl, f_ref); } - + // namespace A { // struct g {}; // void g (char); @@ -2922,26 +2959,24 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IBinding ref1 = col.getName(8).resolveBinding(); IBinding ref2 = col.getName(9).resolveBinding(); - - ICPPClassType g_struct = (ICPPClassType) col.getName(1) - .resolveBinding(); + + ICPPClassType g_struct = (ICPPClassType) col.getName(1).resolveBinding(); IFunction g_func = (IFunction) col.getName(2).resolveBinding(); - + assertSame(g_struct,ref2); assertSame(g_func, ref1); - - ICPPUsingDeclaration comp = (ICPPUsingDeclaration) col.getName(7) - .resolveBinding(); + + ICPPUsingDeclaration comp = (ICPPUsingDeclaration) col.getName(7).resolveBinding(); IASTName[] decls = tu.getDeclarationsInAST(comp); assertEquals(3, decls.length); // struct, func and using-decl assertSame(decls[0], col.getName(1)); assertSame(decls[1], col.getName(2)); assertSame(decls[2], col.getName(7)); } - + // namespace A { // int x; // } @@ -2958,33 +2993,32 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPBinding ref1 = (ICPPBinding) col.getName(11).resolveBinding(); ICPPBinding ref2 = (ICPPBinding) col.getName(12).resolveBinding(); - - ICPPClassType x_struct = (ICPPClassType) col.getName(3) - .resolveBinding(); + + ICPPClassType x_struct = (ICPPClassType) col.getName(3).resolveBinding(); IVariable x_var = (IVariable) col.getName(1).resolveBinding(); - + assertSame(x_struct, ref2); assertSame(x_var, ref1); - + IASTName[] refs = tu.getReferences(x_struct); assertEquals(2, refs.length); // 1 ref + using-decl assertSame(refs[0], col.getName(10)); assertSame(refs[1], col.getName(12)); - + String[] s = ref2.getQualifiedName(); assertEquals(s[0], "B"); //$NON-NLS-1$ assertEquals(s[1], "x"); //$NON-NLS-1$ assertTrue(ref2.isGloballyQualified()); - + s = x_struct.getQualifiedName(); assertEquals(s[0], "B"); //$NON-NLS-1$ assertEquals(s[1], "x"); //$NON-NLS-1$ assertTrue(x_struct.isGloballyQualified()); } - + // namespace A { // void f(int); // void f(double); @@ -2998,23 +3032,23 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPFunction f = (ICPPFunction) col.getName(3).resolveBinding(); - + ICPPFunction f_ref = (ICPPFunction) col.getName(11).resolveBinding(); assertSame(f_ref, f); - + String[] s = f_ref.getQualifiedName(); assertEquals(s[0], "A"); //$NON-NLS-1$ assertEquals(s[1], "f"); //$NON-NLS-1$ assertTrue(f_ref.isGloballyQualified()); - + s = f.getQualifiedName(); assertEquals(s[0], "A"); //$NON-NLS-1$ assertEquals(s[1], "f"); //$NON-NLS-1$ assertTrue(f.isGloballyQualified()); } - + // class B; // class A { // int i; @@ -3028,16 +3062,16 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPClassType B = (ICPPClassType) col.getName(6).resolveBinding(); ICPPField i = (ICPPField) col.getName(12).resolveBinding(); IParameter p = (IParameter) col.getName(10).resolveBinding(); - + assertInstances(col, B, 4); assertInstances(col, i, 2); assertInstances(col, p, 3); } - + // int printf(const char *, ...); // void foo(){ // int a, b; @@ -3048,11 +3082,11 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IFunction printf = (IFunction) col.getName(6).resolveBinding(); assertInstances(col, printf, 3); } - + // int max(int a, int b, int c) { // int m = (a > b) ? a : b; // return (m > c) ? m : c; @@ -3061,22 +3095,22 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IVariable m = (IVariable) col.getName(11).resolveBinding(); IParameter a = (IParameter) col.getName(1).resolveBinding(); IParameter b = (IParameter) col.getName(2).resolveBinding(); IParameter c = (IParameter) col.getName(3).resolveBinding(); - + String[] s = ((ICPPBinding) a).getQualifiedName(); assertEquals(s[0], "a"); //$NON-NLS-1$ assertFalse(((ICPPBinding) a).isGloballyQualified()); - + assertInstances(col, m, 3); assertInstances(col, a, 3); assertInstances(col, b, 3); assertInstances(col, c, 3); } - + // int g(); // struct X { static int g(); }; // struct Y : X { static int i ; }; @@ -3085,23 +3119,23 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPFunction g1 = (ICPPFunction) col.getName(0).resolveBinding(); ICPPMethod g2 = (ICPPMethod) col.getName(9).resolveBinding(); - + String[] s = g1.getQualifiedName(); assertEquals(s[0], "g"); //$NON-NLS-1$ assertTrue(g1.isGloballyQualified()); - + s = g2.getQualifiedName(); assertEquals(s[0], "X"); //$NON-NLS-1$ assertEquals(s[1], "g"); //$NON-NLS-1$ assertTrue(g2.isGloballyQualified()); - + assertInstances(col, g1, 1); assertInstances(col, g2, 2); } - + // class V { int f(); int x; }; // class W { int g(); int y; }; // class B : public virtual V, public W { @@ -3122,30 +3156,30 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPField x = (ICPPField) col.getName(23).resolveBinding(); ICPPMethod f = (ICPPMethod) col.getName(24).resolveBinding(); - + String[] s = f.getQualifiedName(); assertEquals(s[0], "B"); //$NON-NLS-1$ assertEquals(s[1], "f"); //$NON-NLS-1$ assertTrue(f.isGloballyQualified()); - + s = x.getQualifiedName(); assertEquals(s[0], "B"); //$NON-NLS-1$ assertEquals(s[1], "x"); //$NON-NLS-1$ assertTrue(x.isGloballyQualified()); - + IProblemBinding y = (IProblemBinding) col.getName(25).resolveBinding(); IProblemBinding g = (IProblemBinding) col.getName(26).resolveBinding(); - + assertEquals(y.getID(), IProblemBinding.SEMANTIC_AMBIGUOUS_LOOKUP); assertEquals(g.getID(), IProblemBinding.SEMANTIC_AMBIGUOUS_LOOKUP); - + assertInstances(col, x, 2); assertInstances(col, f, 2); } - + // struct C { // int c; // C() : c(0) { } @@ -3154,20 +3188,20 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPVariable c = (ICPPVariable) col.getName(1).resolveBinding(); - + String[] s = c.getQualifiedName(); assertEquals(s.length, 2); assertEquals(s[0], "C"); //$NON-NLS-1$ assertEquals(s[1], "c"); //$NON-NLS-1$ assertTrue(c.isGloballyQualified()); - + IASTName[] refs = tu.getReferences(c); assertEquals(refs.length, 1); assertSame(refs[0], col.getName(3)); } - + // void f(int par) { // int v1; // { @@ -3178,24 +3212,24 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPVariable v1 = (ICPPVariable) col.getName(2).resolveBinding(); ICPPVariable v2 = (ICPPVariable) col.getName(3).resolveBinding(); - + String[] s = v1.getQualifiedName(); assertEquals(s[0], "v1"); //$NON-NLS-1$ assertFalse(v1.isGloballyQualified()); - + s = v2.getQualifiedName(); assertEquals(s[0], "v2"); //$NON-NLS-1$ assertFalse(v2.isGloballyQualified()); - + ICPPBlockScope scope = (ICPPBlockScope) v2.getScope(); IBinding[] bs = scope.find("v1"); //$NON-NLS-1$ assertEquals(bs.length, 1); assertSame(bs[0], v1); } - + // class A { int a; }; // class B : public A { // void f(); @@ -3206,26 +3240,26 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); ICPPField a = (ICPPField) col.getName(1).resolveBinding(); ICPPMethod f = (ICPPMethod) col.getName(7).resolveBinding(); - + IScope scope = f.getFunctionScope(); IBinding[] bs = scope.find("a"); //$NON-NLS-1$ assertEquals(bs.length, 1); assertSame(bs[0], a); - + bs = scope.find("~B"); //$NON-NLS-1$ assertEquals(bs.length, 1); assertTrue(bs[0] instanceof ICPPMethod); assertTrue(bs[0].getName().equals("~B")); //$NON-NLS-1$ - + bs = scope.find("A"); //$NON-NLS-1$ assertEquals(bs.length, 1); assertSame(bs[0], A); } - + // namespace A { // void f(int); // void f(double); @@ -3238,11 +3272,11 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IFunction f1 = (IFunction) col.getName(1).resolveBinding(); IFunction f2 = (IFunction) col.getName(3).resolveBinding(); IFunction f3 = (IFunction) col.getName(6).resolveBinding(); - + IASTFunctionDefinition def = (IASTFunctionDefinition) col.getName(5).getParent().getParent(); IScope scope = ((IASTCompoundStatement) def.getBody()).getScope(); IBinding[] bs = scope.find("f"); //$NON-NLS-1$ @@ -3250,14 +3284,14 @@ public class AST2CPPTests extends AST2BaseTest { assertSame(bs[0], f3); assertSame(bs[1], f1); assertSame(bs[2], f2); - + String[] s = ((ICPPBinding) bs[1]).getQualifiedName(); assertEquals(s.length, 2); assertEquals(s[0], "A"); //$NON-NLS-1$ assertEquals(s[1], "f"); //$NON-NLS-1$ assertTrue(((ICPPBinding) bs[1]).isGloballyQualified()); } - + // namespace A { // struct f; // void f(); @@ -3276,13 +3310,12 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPClassType f = (ICPPClassType) col.getName(1).resolveBinding(); IFunction f1 = (IFunction) col.getName(2).resolveBinding(); IFunction f2 = (IFunction) col.getName(4).resolveBinding(); - - IASTFunctionDefinition def = (IASTFunctionDefinition) col.getName(8) - .getParent().getParent(); + + IASTFunctionDefinition def = (IASTFunctionDefinition) col.getName(8).getParent().getParent(); IScope scope = ((IASTCompoundStatement) def.getBody()).getScope(); IBinding[] bs = scope.find("f"); //$NON-NLS-1$ assertEquals(3, bs.length); @@ -3290,7 +3323,7 @@ public class AST2CPPTests extends AST2BaseTest { assertSame(bs[1], f1); assertSame(bs[2], f2); } - + // class A { // public: // A(); @@ -3301,43 +3334,31 @@ public class AST2CPPTests extends AST2BaseTest { // B(); // void bf(); // }; - public void testFind_bug185408() throws Exception { + public void testFind_bug185408() throws Exception { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IFunction f1 = (IFunction) col.getName(6).resolveBinding(); IScope classScope= f1.getScope(); assertTrue(classScope instanceof ICPPClassScope); IBinding[] bindings = classScope.find("bf"); ICPPMethod method= extractSingleMethod(bindings); assertEquals(method.getQualifiedName()[0], "B"); - + bindings= classScope.find("f"); method= extractSingleMethod(bindings); assertEquals(method.getQualifiedName()[0], "A"); - + bindings= classScope.find("B"); ICPPClassType classType= extractSingleClass(bindings); assertEquals(classType.getQualifiedName()[0], "B"); - + bindings= classScope.find("A"); classType= extractSingleClass(bindings); assertEquals(classType.getQualifiedName()[0], "A"); } - - private ICPPMethod extractSingleMethod(IBinding[] bindings) { - assertEquals(1, bindings.length); - assertTrue(bindings[0] instanceof ICPPMethod); - return (ICPPMethod) bindings[0]; - } - - private ICPPClassType extractSingleClass(IBinding[] bindings) { - assertEquals(1, bindings.length); - assertTrue(bindings[0] instanceof ICPPClassType); - return (ICPPClassType) bindings[0]; - } - + // class A { // int a; // void fa(); @@ -3350,48 +3371,46 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); ICPPClassType B = (ICPPClassType) col.getName(3).resolveBinding(); ICPPField a = (ICPPField) col.getName(1).resolveBinding(); ICPPMethod fa = (ICPPMethod) col.getName(2).resolveBinding(); ICPPField b = (ICPPField) col.getName(5).resolveBinding(); ICPPMethod fb = (ICPPMethod) col.getName(6).resolveBinding(); - + Object[] result = B.getDeclaredFields(); assertEquals(result.length, 1); assertSame(result[0], b); - + result = B.getFields(); assertEquals(result.length, 2); assertSame(result[0], b); assertSame(result[1], a); - + result = B.getDeclaredMethods(); assertEquals(result.length, 1); assertSame(result[0], fb); - + result = B.getAllDeclaredMethods(); assertEquals(result.length, 2); assertSame(result[0], fb); assertSame(result[1], fa); - - ICPPMethod[] B_implicit = ((ICPPClassScope) B.getCompositeScope()) - .getImplicitMethods(); + + ICPPMethod[] B_implicit = ((ICPPClassScope) B.getCompositeScope()).getImplicitMethods(); assertEquals(B_implicit.length, 4); assertTrue(B_implicit[0].getName().equals("B")); //$NON-NLS-1$ assertTrue(B_implicit[1].getName().equals("B")); //$NON-NLS-1$ assertTrue(B_implicit[2].getName().equals("operator =")); //$NON-NLS-1$ assertTrue(B_implicit[3].getName().equals("~B")); //$NON-NLS-1$ - - ICPPMethod[] A_implicit = ((ICPPClassScope) A.getCompositeScope()) - .getImplicitMethods(); + + ICPPMethod[] A_implicit = ((ICPPClassScope) A.getCompositeScope()).getImplicitMethods(); assertEquals(A_implicit.length, 4); assertTrue(A_implicit[0].getName().equals("A")); //$NON-NLS-1$ assertTrue(A_implicit[1].getName().equals("A")); //$NON-NLS-1$ assertTrue(A_implicit[2].getName().equals("operator =")); //$NON-NLS-1$ assertTrue(A_implicit[3].getName().equals("~A")); //$NON-NLS-1$ - + result = B.getMethods(); assertEquals(result.length, 10); assertSame(result[0], fb); @@ -3405,60 +3424,60 @@ public class AST2CPPTests extends AST2BaseTest { assertSame(result[8], A_implicit[2]); assertSame(result[9], A_implicit[3]); } - + public void testBug87424() throws Exception { IASTTranslationUnit tu = parse( "int * __restrict x;", ParserLanguage.CPP, true); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IVariable x = (IVariable) col.getName(0).resolveBinding(); IType t = x.getType(); assertTrue(t instanceof IPointerType); assertTrue(((IPointerType) t).isRestrict()); - + tu = parse("class A {}; int A::* __restrict x;", ParserLanguage.CPP, true); //$NON-NLS-1$ col = new CPPNameCollector(); tu.accept(col); - + x = (IVariable) col.getName(3).resolveBinding(); t = x.getType(); assertTrue(t instanceof ICPPPointerToMemberType); assertTrue(((ICPPPointerToMemberType) t).isRestrict()); } - + public void testBug87705() throws Exception { IASTTranslationUnit tu = parse( "class A { friend class B::C; };", ParserLanguage.CPP, true); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IProblemBinding B = (IProblemBinding) col.getName(2).resolveBinding(); assertEquals(B.getID(), IProblemBinding.SEMANTIC_NAME_NOT_FOUND); IProblemBinding C = (IProblemBinding) col.getName(3).resolveBinding(); assertEquals(C.getID(), IProblemBinding.SEMANTIC_NAME_NOT_FOUND); } - + public void testBug88459() throws Exception { IASTTranslationUnit tu = parse("int f(); ", ParserLanguage.CPP); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IFunction f = (IFunction) col.getName(0).resolveBinding(); assertFalse(f.isStatic()); } - + public void testBug88501_1() throws Exception { IASTTranslationUnit tu = parse( "void f(); void f(int); struct f;", ParserLanguage.CPP); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + assertTrue(col.getName(0).resolveBinding() instanceof IFunction); assertTrue(col.getName(1).resolveBinding() instanceof IFunction); assertTrue(col.getName(3).resolveBinding() instanceof ICPPClassType); } - + // public void testBug8342_1() throws Exception { // IASTTranslationUnit tu = parse("int a; int a;", ParserLanguage.CPP); // //$NON-NLS-1$ @@ -3469,18 +3488,18 @@ public class AST2CPPTests extends AST2BaseTest { // IProblemBinding p = (IProblemBinding) col.getName(1).resolveBinding(); // assertEquals(p.getID(), IProblemBinding.SEMANTIC_INVALID_REDEFINITION); // } - + public void testBug8342_2() throws Exception { IASTTranslationUnit tu = parse( "extern int a; extern char a;", ParserLanguage.CPP); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + assertTrue(col.getName(0).resolveBinding() instanceof IVariable); IProblemBinding p = (IProblemBinding) col.getName(1).resolveBinding(); assertEquals(p.getID(), IProblemBinding.SEMANTIC_INVALID_REDECLARATION); } - + // namespace A { int i; } // namespace B = A; // void f() { @@ -3490,26 +3509,25 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPNamespace A = (ICPPNamespace) col.getName(0).resolveBinding(); - ICPPNamespaceAlias alias = (ICPPNamespaceAlias) col.getName(6) - .resolveBinding(); + ICPPNamespaceAlias alias = (ICPPNamespaceAlias) col.getName(6).resolveBinding(); ICPPVariable i = (ICPPVariable) col.getName(7).resolveBinding(); - + assertInstances(col, A, 2); assertInstances(col, alias, 2); assertInstances(col, i, 3); - + String[] s = i.getQualifiedName(); assertEquals(s[0], "A"); //$NON-NLS-1$ assertEquals(s[1], "i"); //$NON-NLS-1$ assertTrue(i.isGloballyQualified()); - + s = alias.getQualifiedName(); assertEquals(s[0], "B"); //$NON-NLS-1$ assertTrue(alias.isGloballyQualified()); } - + // class A{}; // class B : public A { // B () : A() {} @@ -3519,21 +3537,21 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(content, ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPClassType A1 = (ICPPClassType) col.getName(0).resolveBinding(); ICPPClassType A2 = (ICPPClassType) col.getName(2).resolveBinding(); assertSame(A1, A2); - + ICPPConstructor A3 = (ICPPConstructor) col.getName(4).resolveBinding(); assertSame(A3.getScope(), A1.getCompositeScope()); - + tu = parse(content, ParserLanguage.CPP); col = new CPPNameCollector(); tu.accept(col); - + assertTrue(col.getName(4).resolveBinding() instanceof ICPPConstructor); } - + // class B * b; // class A { // A * a; @@ -3543,31 +3561,31 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + assertTrue(col.getName(0).resolveBinding() instanceof ICPPClassType); assertTrue(col.getName(1).resolveBinding() instanceof ICPPVariable); assertTrue(col.getName(2).resolveBinding() instanceof ICPPClassType); assertTrue(col.getName(3).resolveBinding() instanceof ICPPClassType); } - + public void testBug89828() throws Exception { IASTTranslationUnit tu = parse( "class B * b; void f(); void f(int);", ParserLanguage.CPP); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + assertTrue(col.getName(0).resolveBinding() instanceof ICPPClassType); assertTrue(col.getName(1).resolveBinding() instanceof ICPPVariable); IFunction f1 = (IFunction) col.getName(2).resolveBinding(); IFunction f2 = (IFunction) col.getName(3).resolveBinding(); - + IScope scope = tu.getScope(); IBinding[] bs = scope.find("f"); //$NON-NLS-1$ assertEquals(bs.length, 2); assertSame(bs[0], f1); assertSame(bs[1], f2); } - + // class A { // enum type { t1, t2 }; // void f(type t); @@ -3581,14 +3599,14 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IFunction f = (IFunction) col.getName(10).resolveBinding(); IEnumerator t1 = (IEnumerator) col.getName(13).resolveBinding(); - + assertInstances(col, f, 2); assertInstances(col, t1, 3); } - + // void f(void) { // enum { one }; // } @@ -3602,7 +3620,7 @@ public class AST2CPPTests extends AST2BaseTest { IEnumerator one = (IEnumerator) col.getName(3).resolveBinding(); assertSame(one.getType(), e); } - + // class Foo { // public: // operator int(); @@ -3612,23 +3630,23 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IASTName name1 = col.getName(1); IASTName name2 = col.getName(2); - + assertNotNull(name1); assertNotNull(name2); - + assertTrue(name1 instanceof ICPPASTConversionName); assertTrue(name2 instanceof ICPPASTOperatorName); - + IASTTypeId typeId = ((ICPPASTConversionName) name1).getTypeId(); assertNotNull(typeId); - assertEquals(((IASTSimpleDeclSpecifier) typeId.getDeclSpecifier()) - .getType(), IASTSimpleDeclSpecifier.t_int); - + assertEquals(((IASTSimpleDeclSpecifier) typeId.getDeclSpecifier()).getType(), + IASTSimpleDeclSpecifier.t_int); + } - + // class X { operator int(); }; // X::operator int() { } // template <class A,B> class X<A,C> { operator int(); }; @@ -3637,15 +3655,15 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + // 1,4,12,21 - conversion // 2, 16 .isConversion - + final IASTName int1 = col.getName(1); assertNotNull(int1); assertTrue(int1 instanceof ICPPASTConversionName); assertNotNull(((ICPPASTConversionName) int1).getTypeId()); - + IASTFunctionDefinition fdef= getDeclaration(tu, 1); final IASTName x_int = fdef.getDeclarator().getName(); assertNotNull(x_int); @@ -3656,7 +3674,7 @@ public class AST2CPPTests extends AST2BaseTest { assertNotNull(int2); assertTrue(int2 instanceof ICPPASTConversionName); assertNotNull(((ICPPASTConversionName) int2).getTypeId()); - + final IASTName int3 = col.getName(12); assertNotNull(int3); assertTrue(int3 instanceof ICPPASTConversionName); @@ -3674,55 +3692,51 @@ public class AST2CPPTests extends AST2BaseTest { assertTrue(int4 instanceof ICPPASTConversionName); assertNotNull(((ICPPASTConversionName) int4).getTypeId()); } - + public void testBug88662() throws Exception { IASTTranslationUnit tu = parse( "int foo() { return int();}", ParserLanguage.CPP); //$NON-NLS-1$ - IASTReturnStatement returnStatement = (IASTReturnStatement) ((IASTCompoundStatement) ((IASTFunctionDefinition) tu - .getDeclarations()[0]).getBody()).getStatements()[0]; - ICPPASTSimpleTypeConstructorExpression expression = (ICPPASTSimpleTypeConstructorExpression) returnStatement - .getReturnValue(); + IASTReturnStatement returnStatement = + (IASTReturnStatement) ((IASTCompoundStatement) ((IASTFunctionDefinition) tu.getDeclarations()[0]).getBody()).getStatements()[0]; + ICPPASTSimpleTypeConstructorExpression expression = + (ICPPASTSimpleTypeConstructorExpression) returnStatement.getReturnValue(); assertEquals(expression.getInitialValue(), null); - assertEquals(expression.getSimpleType(), - ICPPASTSimpleTypeConstructorExpression.t_int); + assertEquals(expression.getSimpleType(), ICPPASTSimpleTypeConstructorExpression.t_int); } - + public void testBug90498_1() throws Exception { IASTTranslationUnit tu = parse( "typedef int INT;\ntypedef INT (FOO) (INT);", ParserLanguage.CPP); //$NON-NLS-1$ - - IASTSimpleDeclaration decl = (IASTSimpleDeclaration) tu - .getDeclarations()[1]; + + IASTSimpleDeclaration decl = (IASTSimpleDeclaration) tu.getDeclarations()[1]; IASTDeclSpecifier declSpec = decl.getDeclSpecifier(); assertTrue(declSpec instanceof ICPPASTNamedTypeSpecifier); - assertEquals(((ICPPASTNamedTypeSpecifier) declSpec).getName() - .toString(), "INT"); //$NON-NLS-1$ - + assertEquals(((ICPPASTNamedTypeSpecifier) declSpec).getName().toString(), "INT"); //$NON-NLS-1$ + IASTDeclarator dtor = decl.getDeclarators()[0]; assertTrue(dtor instanceof IASTFunctionDeclarator); assertNotNull(dtor.getNestedDeclarator()); IASTDeclarator nested = dtor.getNestedDeclarator(); assertEquals(nested.getName().toString(), "FOO"); //$NON-NLS-1$ } - + public void testBug90498_2() throws Exception { IASTTranslationUnit tu = parse( "int (* foo) (int) (0);", ParserLanguage.CPP); //$NON-NLS-1$ - - IASTSimpleDeclaration decl = (IASTSimpleDeclaration) tu - .getDeclarations()[0]; + + IASTSimpleDeclaration decl = (IASTSimpleDeclaration) tu.getDeclarations()[0]; IASTDeclSpecifier declSpec = decl.getDeclSpecifier(); assertTrue(declSpec instanceof IASTSimpleDeclSpecifier); - + IASTDeclarator dtor = decl.getDeclarators()[0]; assertTrue(dtor instanceof IASTFunctionDeclarator); assertNotNull(dtor.getNestedDeclarator()); IASTDeclarator nested = dtor.getNestedDeclarator(); assertEquals(nested.getName().toString(), "foo"); //$NON-NLS-1$ - + assertNotNull(dtor.getInitializer()); } - + // class D { /* ... */ }; // D d1; // const D d2; @@ -3732,46 +3746,38 @@ public class AST2CPPTests extends AST2BaseTest { // } public void testBug866274() throws Exception { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); - IASTFunctionDefinition foo = (IASTFunctionDefinition) tu - .getDeclarations()[3]; + IASTFunctionDefinition foo = (IASTFunctionDefinition) tu.getDeclarations()[3]; IASTCompoundStatement cs = (IASTCompoundStatement) foo.getBody(); IASTStatement[] subs = cs.getStatements(); for (int i = 0; i < subs.length; ++i) { - IASTBinaryExpression be = (IASTBinaryExpression) ((IASTExpressionStatement) subs[i]) - .getExpression(); + IASTBinaryExpression be = + (IASTBinaryExpression) ((IASTExpressionStatement) subs[i]).getExpression(); if (i == 1) { - IASTTypeIdExpression expression = (IASTTypeIdExpression) be - .getOperand1(); + IASTTypeIdExpression expression = (IASTTypeIdExpression) be.getOperand1(); IASTTypeId typeId = expression.getTypeId(); - assertTrue(((IASTNamedTypeSpecifier) typeId.getDeclSpecifier()) - .getName().resolveBinding() instanceof IType); + IASTName name = ((IASTNamedTypeSpecifier) typeId.getDeclSpecifier()).getName(); + assertTrue(name.resolveBinding() instanceof IType); } else { - IASTUnaryExpression expression = (IASTUnaryExpression) be - .getOperand1(); - IASTIdExpression idExpression = (IASTIdExpression) expression - .getOperand(); + IASTUnaryExpression expression = (IASTUnaryExpression) be.getOperand1(); + IASTIdExpression idExpression = (IASTIdExpression) expression.getOperand(); assertTrue(idExpression.getName().resolveBinding() instanceof IVariable); } - IASTUnaryExpression expression = (IASTUnaryExpression) be - .getOperand2(); - IASTIdExpression idExpression = (IASTIdExpression) expression - .getOperand(); + IASTUnaryExpression expression = (IASTUnaryExpression) be.getOperand2(); + IASTIdExpression idExpression = (IASTIdExpression) expression.getOperand(); assertTrue(idExpression.getName().resolveBinding() instanceof IVariable); - } } - + public void testTypedefFunction() throws Exception { - IASTTranslationUnit tu = parse( - "typedef int foo (int);", ParserLanguage.CPP); //$NON-NLS-1$ + IASTTranslationUnit tu = parse("typedef int foo (int);", ParserLanguage.CPP); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IBinding binding = col.getName(0).resolveBinding(); assertTrue(binding instanceof ITypedef); assertTrue(((ITypedef) binding).getType() instanceof IFunctionType); } - + // void f(int); // void foo(){ // f((1, 2)); @@ -3780,33 +3786,33 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IFunction f1 = (IFunction) col.getName(0).resolveBinding(); IFunction f2 = (IFunction) col.getName(3).resolveBinding(); assertSame(f1, f2); } - + public void testBug90603() throws Exception { IASTTranslationUnit tu = parse( "class X { void f(){} };", ParserLanguage.CPP); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPClassType X = (ICPPClassType) col.getName(0).resolveBinding(); ICPPMethod f1 = (ICPPMethod) col.getName(1).resolveBinding(); - + assertFalse(f1.isStatic()); - + String[] qns = f1.getQualifiedName(); assertEquals(qns.length, 2); assertEquals(qns[0], "X"); //$NON-NLS-1$ assertEquals(qns[1], "f"); //$NON-NLS-1$ assertTrue(f1.isGloballyQualified()); assertEquals(f1.getVisibility(), ICPPMember.v_private); - + assertSame(f1.getScope(), X.getCompositeScope()); } - + // class X { }; // X x; // class X { }; @@ -3814,16 +3820,15 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPClassType X = (ICPPClassType) col.getName(0).resolveBinding(); IVariable x = (IVariable) col.getName(2).resolveBinding(); - IProblemBinding problem = (IProblemBinding) col.getName(3) - .resolveBinding(); + IProblemBinding problem = (IProblemBinding) col.getName(3).resolveBinding(); assertSame(x.getType(), X); assertEquals(problem.getID(), IProblemBinding.SEMANTIC_INVALID_REDEFINITION); } - + // struct C { // void* operator new [ ] (unsigned int); // void* operator new (unsigned int); @@ -3865,7 +3870,7 @@ public class AST2CPPTests extends AST2BaseTest { // const C& operator &(const C&); // const C& operator |(const C&); // const C& operator ~ (const C&); - // const C& operator + // const C& operator // ! /**/ (const C&); // const C& operator <(const C&); // const C& operator>(const C&); @@ -3874,7 +3879,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + assertEquals(col.size(), 161); assertEquals(col.getName(1).toString(), "operator new[]"); //$NON-NLS-1$ assertEquals(col.getName(3).toString(), "operator new"); //$NON-NLS-1$ @@ -3919,7 +3924,7 @@ public class AST2CPPTests extends AST2BaseTest { assertEquals(col.getName(154).toString(), "operator <"); //$NON-NLS-1$ assertEquals(col.getName(158).toString(), "operator >"); //$NON-NLS-1$ } - + // typedef int I; // typedef int I; // typedef I I; @@ -3932,7 +3937,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ITypedef I1 = (ITypedef) col.getName(0).resolveBinding(); ITypedef I2 = (ITypedef) col.getName(1).resolveBinding(); ITypedef I3 = (ITypedef) col.getName(2).resolveBinding(); @@ -3942,7 +3947,7 @@ public class AST2CPPTests extends AST2BaseTest { ITypedef I6 = (ITypedef) col.getName(7).resolveBinding(); ITypedef I7 = (ITypedef) col.getName(6).resolveBinding(); // ITypedef I8 = (ITypedef) col.getName(5).resolveBinding(); - + assertSame(I1, I2); assertSame(I2, I3); assertSame(I3, I4); @@ -3950,14 +3955,14 @@ public class AST2CPPTests extends AST2BaseTest { assertSame(I5, I6); assertSame(I6, I7); assertSame(I7, I8); - + assertTrue(I1.getType() instanceof IBasicType); assertEquals(((IBasicType) I1.getType()).getType(), IBasicType.t_int); - + assertTrue(I8.getType() instanceof IBasicType); assertEquals(((IBasicType) I8.getType()).getType(), IBasicType.t_char); } - + // typedef int I; // void f11(I i); // void main(){ f a; } @@ -3965,11 +3970,11 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IASTName f = col.getName(5); f.getCompletionContext().findBindings(f, true); } - + // class X { // X(const X &); // }; @@ -3982,14 +3987,12 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - - ICPPConstructor ctor1 = (ICPPConstructor) col.getName(1) - .resolveBinding(); - ICPPConstructor ctor = (ICPPConstructor) col.getName(11) - .resolveBinding(); + + ICPPConstructor ctor1 = (ICPPConstructor) col.getName(1).resolveBinding(); + ICPPConstructor ctor = (ICPPConstructor) col.getName(11).resolveBinding(); assertSame(ctor, ctor1); } - + // struct A { // operator short(); // } a; @@ -4000,12 +4003,12 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IFunction f1 = (IFunction) col.getName(3).resolveBinding(); IFunction f2 = (IFunction) col.getName(8).resolveBinding(); assertSame(f1, f2); } - + // struct A {}; // struct B : public A { // B& operator = (const B &); @@ -4018,19 +4021,19 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); ICPPMethod implicit = A.getMethods()[2]; - + ICPPMethod op1 = (ICPPMethod) col.getName(4).resolveBinding(); ICPPMethod op2 = (ICPPMethod) col.getName(10).resolveBinding(); - + ICPPMethod op = (ICPPMethod) col.getName(15).resolveBinding(); - + assertSame(op1, op2); assertSame(op, implicit); } - + // void f(char *); // void foo() { // f("test"); @@ -4039,11 +4042,11 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IFunction f = (IFunction) col.getName(0).resolveBinding(); assertInstances(col, f, 2); } - + // void f(int (*pf) (char)); // int g(char); // void foo () { @@ -4053,17 +4056,17 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPFunction f1 = (ICPPFunction) col.getName(0).resolveBinding(); ICPPFunction g1 = (ICPPFunction) col.getName(3).resolveBinding(); - + IBinding f2 = col.getName(6).resolveBinding(); IBinding g2 = col.getName(7).resolveBinding(); - + assertSame(f1, f2); assertSame(g1, g2); } - + // class ABC { // class DEF { }; // static int GHI; @@ -4078,13 +4081,12 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); IASTDeclaration[] declarations = tu.getDeclarations(); assertEquals(3, declarations.length); - IASTCompoundStatement cs = (IASTCompoundStatement) ((IASTFunctionDefinition) declarations[2]) - .getBody(); + IASTCompoundStatement cs = (IASTCompoundStatement) ((IASTFunctionDefinition) declarations[2]).getBody(); assertTrue(cs.getStatements()[1] instanceof IASTDeclarationStatement); assertTrue(cs.getStatements()[2] instanceof IASTExpressionStatement); - + } - + // void f(){ // union { int a; char* p; }; // a = 1; @@ -4093,12 +4095,12 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPField a = (ICPPField) col.getName(2).resolveBinding(); ICPPField a2 = (ICPPField) col.getName(4).resolveBinding(); assertSame(a, a2); } - + // void f () { // int aa1, aa2; // a; @@ -4107,17 +4109,17 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IVariable a1 = (IVariable) col.getName(1).resolveBinding(); IVariable a2 = (IVariable) col.getName(2).resolveBinding(); - + IBinding[] bs = col.getName(3).getCompletionContext().findBindings( col.getName(3), true); assertEquals(bs.length, 2); assertSame(bs[0], a1); assertSame(bs[1], a2); } - + // struct Ex { // int d(); // int d() const; @@ -4132,25 +4134,25 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPFunction d1 = (ICPPFunction) col.getName(1).resolveBinding(); ICPPFunction d2 = (ICPPFunction) col.getName(2).resolveBinding(); - + assertNotSame(d1, d2); - + assertFalse(d1.getType().isConst()); assertTrue((d2.getType()).isConst()); - + ICPPFunction dr1 = (ICPPFunction) col.getName(5).resolveBinding(); ICPPFunction dr2 = (ICPPFunction) col.getName(8).resolveBinding(); - + assertSame(d1, dr1); assertSame(d2, dr2); - + IBinding r = col.getName(13).resolveBinding(); assertSame(d2, r); } - + // class Point { // Point() : xCoord(0) {} // int xCoord; @@ -4159,48 +4161,44 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPField x = (ICPPField) col.getName(2).resolveBinding(); ICPPField x2 = (ICPPField) col.getName(3).resolveBinding(); assertSame(x, x2); } - + public void testBug90648() throws ParserException { IASTTranslationUnit tu = parse( "int f() { int (&ra)[3] = a; }", ParserLanguage.CPP); //$NON-NLS-1$ - IASTFunctionDefinition f = (IASTFunctionDefinition) tu - .getDeclarations()[0]; + IASTFunctionDefinition f = (IASTFunctionDefinition) tu.getDeclarations()[0]; IASTCompoundStatement body = (IASTCompoundStatement) f.getBody(); - final IASTDeclarationStatement statement = (IASTDeclarationStatement) body - .getStatements()[0]; - IASTSimpleDeclaration d = (IASTSimpleDeclaration) statement - .getDeclaration(); - IASTSimpleDeclSpecifier declSpec = (IASTSimpleDeclSpecifier) d - .getDeclSpecifier(); + final IASTDeclarationStatement statement = (IASTDeclarationStatement) body.getStatements()[0]; + IASTSimpleDeclaration d = (IASTSimpleDeclaration) statement.getDeclaration(); + IASTSimpleDeclSpecifier declSpec = (IASTSimpleDeclSpecifier) d.getDeclSpecifier(); assertEquals(IASTSimpleDeclSpecifier.t_int, declSpec.getType()); final IASTDeclarator[] declarators = d.getDeclarators(); assertEquals(declarators.length, 1); assertTrue(declarators[0] instanceof IASTArrayDeclarator); } - + public void testBug92980() throws Exception { String code = "struct A { A(); A(const A&) throw(1); ~A() throw(X); };"; //$NON-NLS-1$ parse(code, ParserLanguage.CPP, true, false); } - + // class Dummy { int v(); int d; }; // void Dummy::v(int){ d++; } public void testBug92882() throws Exception { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + assertTrue(col.getName(5).resolveBinding() instanceof IProblemBinding); ICPPField d1 = (ICPPField) col.getName(2).resolveBinding(); ICPPField d2 = (ICPPField) col.getName(7).resolveBinding(); assertSame(d1, d2); } - + // void f(int, int); // void f(int, int = 3); // void f(int = 2, int); @@ -4212,16 +4210,16 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IFunction f1 = (IFunction) col.getName(0).resolveBinding(); assertInstances(col, f1, 5); } - + public void testBug90647() throws Exception { parse( "char msg[] = \"Syntax error on line %s\\n\";", ParserLanguage.CPP); //$NON-NLS-1$ } - + // int main(int argc, char **argv) // { // int sum=0; @@ -4241,7 +4239,7 @@ public class AST2CPPTests extends AST2BaseTest { tu.accept(col); assertNoProblemBindings(col); } - + // int main(int argc, char *argv[]) // { // unsigned long l = 0; @@ -4254,7 +4252,7 @@ public class AST2CPPTests extends AST2BaseTest { tu.accept(col); assertNoProblemBindings(col); } - + public void testBug83997() throws Exception { IASTTranslationUnit tu = parse( "namespace { int x; }", ParserLanguage.CPP); //$NON-NLS-1$ @@ -4262,32 +4260,7 @@ public class AST2CPPTests extends AST2BaseTest { tu.accept(col); assertNoProblemBindings(col); } - - protected void assertNoProblemBindings(CPPNameCollector col) { - Iterator i = col.nameList.iterator(); - while (i.hasNext()) { - IASTName n = (IASTName) i.next(); - assertFalse(n.resolveBinding() instanceof IProblemBinding); - } - } - - private void assertProblemBinding(int id, IBinding b) { - assertTrue(b instanceof IProblemBinding); - assertEquals(id, ((IProblemBinding) b).getID()); - } - protected void assertProblemBindings(CPPNameCollector col, int count) { - Iterator i = col.nameList.iterator(); - int sum = 0; - while (i.hasNext()) { - IASTName n = (IASTName) i.next(); - assertNotNull(n.resolveBinding()); - if (n.getBinding() instanceof IProblemBinding) - ++sum; - } - assertEquals(count, sum); - } - public void testBug85786() throws Exception { IASTTranslationUnit tu = parse( "void f(int); void foo () { void * p = &f; ((void (*) (int)) p) (1); }", ParserLanguage.C); //$NON-NLS-1$ @@ -4295,7 +4268,7 @@ public class AST2CPPTests extends AST2BaseTest { tu.accept(nameResolver); assertNoProblemBindings(nameResolver); } - + // class C { // static const int n = 1; // static int arr[ n ]; @@ -4305,13 +4278,13 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPField n = (ICPPField) col.getName(1).resolveBinding(); assertTrue(n.isStatic()); - + assertInstances(col, n, 3); } - + // int a; // extern int b; // extern int c = 1; @@ -4330,7 +4303,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + assertTrue(col.getName(0).isDefinition()); // a assertFalse(col.getName(1).isDefinition()); // b assertTrue(col.getName(2).isDefinition()); // c @@ -4347,7 +4320,7 @@ public class AST2CPPTests extends AST2BaseTest { assertFalse(col.getName(15).isDefinition()); // g assertTrue(col.getName(18).isDefinition()); // pf } - + // int f(double); // int f(int); // int (&rfi)(int) = f; @@ -4356,39 +4329,38 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPFunction f1 = (ICPPFunction) col.getName(0).resolveBinding(); ICPPFunction f2 = (ICPPFunction) col.getName(2).resolveBinding(); - + assertSame(col.getName(6).resolveBinding(), f2); assertSame(col.getName(9).resolveBinding(), f1); } - + public void testBug95425() throws Exception { IASTTranslationUnit tu = parse("class A { A(); };", ParserLanguage.CPP); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); - ICPPConstructor ctor = (ICPPConstructor) col.getName(1) - .resolveBinding(); - + ICPPConstructor ctor = (ICPPConstructor) col.getName(1).resolveBinding(); + ICPPConstructor[] ctors = A.getConstructors(); assertEquals(2, ctors.length); // one user declared constructor, one copy constructor assertSame(ctor, ctors[1]); - + tu = parse("class A { A(void); };", ParserLanguage.CPP); //$NON-NLS-1$ col = new CPPNameCollector(); tu.accept(col); - + A = (ICPPClassType) col.getName(0).resolveBinding(); ctor = (ICPPConstructor) col.getName(1).resolveBinding(); - + ctors = A.getConstructors(); assertEquals(2, ctors.length); // one user declared constructor, one copy constructor assertSame(ctor, ctors[1]); } - + // void f(char *); // void g(){ // char x[100]; @@ -4398,11 +4370,11 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPFunction f1 = (ICPPFunction) col.getName(0).resolveBinding(); assertSame(f1, col.getName(4).resolveBinding()); } - + // class A { }; // int f() { // A * b = 0; @@ -4411,20 +4383,17 @@ public class AST2CPPTests extends AST2BaseTest { public void testAmbiguity() throws Exception { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); IASTSimpleDeclaration A = (IASTSimpleDeclaration) tu.getDeclarations()[0]; - IASTFunctionDefinition f = (IASTFunctionDefinition) tu - .getDeclarations()[1]; + IASTFunctionDefinition f = (IASTFunctionDefinition) tu.getDeclarations()[1]; IASTCompoundStatement body = (IASTCompoundStatement) f.getBody(); for (int i = 0; i < 2; ++i) { - IASTDeclarationStatement ds = (IASTDeclarationStatement) body - .getStatements()[i]; - String s1 = ((IASTNamedTypeSpecifier) ((IASTSimpleDeclaration) ds - .getDeclaration()).getDeclSpecifier()).getName().toString(); - String s2 = ((IASTCompositeTypeSpecifier) A.getDeclSpecifier()) - .getName().toString(); + IASTDeclarationStatement ds = (IASTDeclarationStatement) body.getStatements()[i]; + String s1 = ((IASTNamedTypeSpecifier) ((IASTSimpleDeclaration) ds.getDeclaration()) + .getDeclSpecifier()).getName().toString(); + String s2 = ((IASTCompositeTypeSpecifier) A.getDeclSpecifier()).getName().toString(); assertEquals(s1, s2); } } - + // struct A { // int a; // }; @@ -4443,19 +4412,19 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + assertEquals(col.size(), 26); - + ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); ICPPClassType B = (ICPPClassType) col.getName(2).resolveBinding(); - + assertNotNull(A); assertNotNull(B); - + assertInstances(col, A, 4); assertInstances(col, B, 4); } - + // class X { // public: // void f(int); @@ -4465,14 +4434,12 @@ public class AST2CPPTests extends AST2BaseTest { public void testBasicPointerToMember() throws Exception { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); assertEquals(tu.getDeclarations().length, 2); - IASTSimpleDeclaration p2m = (IASTSimpleDeclaration) tu - .getDeclarations()[1]; + IASTSimpleDeclaration p2m = (IASTSimpleDeclaration) tu.getDeclarations()[1]; IASTDeclarator d = p2m.getDeclarators()[0]; - ICPPASTPointerToMember po = (ICPPASTPointerToMember) d - .getPointerOperators()[0]; + ICPPASTPointerToMember po = (ICPPASTPointerToMember) d.getPointerOperators()[0]; assertEquals("X::", po.getName().toString()); //$NON-NLS-1$ } - + // struct B {}; // struct D : B {}; // void foo(D* dp) @@ -4481,46 +4448,46 @@ public class AST2CPPTests extends AST2BaseTest { // } public void testBug84466() throws Exception { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); - ICPPASTCastExpression dynamic_cast = (ICPPASTCastExpression) ((IASTEqualsInitializer) ((IASTSimpleDeclaration) ((IASTDeclarationStatement) ((IASTCompoundStatement) ((IASTFunctionDefinition) tu + ICPPASTCastExpression dynamic_cast = + (ICPPASTCastExpression) ((IASTEqualsInitializer) ((IASTSimpleDeclaration) ((IASTDeclarationStatement) ((IASTCompoundStatement) ((IASTFunctionDefinition) tu .getDeclarations()[2]).getBody()).getStatements()[0]) .getDeclaration()).getDeclarators()[0].getInitializer()) .getInitializerClause(); - + assertEquals(dynamic_cast.getOperator(), ICPPASTCastExpression.op_dynamic_cast); } - + public void testBug88338_CPP() throws Exception { IASTTranslationUnit tu = parse( "struct A; struct A* a;", ParserLanguage.CPP); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + assertTrue(col.getName(0).isDeclaration()); assertFalse(col.getName(0).isReference()); assertTrue(col.getName(1).isReference()); assertFalse(col.getName(1).isDeclaration()); - + tu = parse("struct A* a;", ParserLanguage.CPP); //$NON-NLS-1$ col = new CPPNameCollector(); tu.accept(col); - + assertTrue(col.getName(0).isDeclaration()); assertFalse(col.getName(0).isReference()); } - + public void testPointerToFunction_CPP() throws Exception { IASTTranslationUnit tu = parse("int (*pfi)();", ParserLanguage.CPP); //$NON-NLS-1$ assertEquals(tu.getDeclarations().length, 1); IASTSimpleDeclaration d = (IASTSimpleDeclaration) tu.getDeclarations()[0]; assertEquals(d.getDeclarators().length, 1); - IASTStandardFunctionDeclarator f = (IASTStandardFunctionDeclarator) d - .getDeclarators()[0]; + IASTStandardFunctionDeclarator f = (IASTStandardFunctionDeclarator) d.getDeclarators()[0]; assertEquals(f.getName().toString(), ""); //$NON-NLS-1$ assertNotNull(f.getNestedDeclarator()); assertEquals(f.getNestedDeclarator().getName().toString(), "pfi"); //$NON-NLS-1$ } - + // class X { public: int bar; }; // void f(){ // X a[10]; @@ -4530,11 +4497,11 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPField bar = (ICPPField) col.getName(1).resolveBinding(); assertSame(bar, col.getName(6).resolveBinding()); } - + // int strcmp(const char *); // void f(const char * const * argv){ // strcmp(*argv); @@ -4543,11 +4510,11 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPFunction strcmp = (ICPPFunction) col.getName(0).resolveBinding(); assertSame(strcmp, col.getName(4).resolveBinding()); } - + // class Other; // class Base { // public: Base(Other *); @@ -4558,12 +4525,12 @@ public class AST2CPPTests extends AST2BaseTest { // Sub::Sub(Other * b) : Base(b) {} public void testBug95673() throws Exception { BindingAssertionHelper ba= getAssertionHelper(); - + ICPPConstructor ctor= ba.assertNonProblem("Base(Other", 4, ICPPConstructor.class); ICPPConstructor ctor2= ba.assertNonProblem("Base(b)", 4, ICPPConstructor.class); assertSame(ctor, ctor2); } - + // void mem(void *, const void *); // void f() { // char *x; int offset; @@ -4574,12 +4541,12 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPFunction mem = (ICPPFunction) col.getName(0).resolveBinding(); assertSame(mem, col.getName(6).resolveBinding()); assertSame(mem, col.getName(8).resolveBinding()); } - + // void trace(const void *); // class Foo { // public: int import(); @@ -4591,11 +4558,11 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPFunction trace = (ICPPFunction) col.getName(0).resolveBinding(); assertSame(trace, col.getName(7).resolveBinding()); } - + // class RTCharacter { // char value; // public: operator char (void) const; @@ -4607,11 +4574,11 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPMethod op = (ICPPMethod) col.getName(2).resolveBinding(); assertSame(op, col.getName(6).resolveBinding()); } - + // int str(const char *); // void f(){ // str(0); @@ -4621,13 +4588,13 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPFunction str = (ICPPFunction) col.getName(0).resolveBinding(); assertSame(str, col.getName(3).resolveBinding()); assertSame(str, col.getName(4).resolveBinding()); assertSame(str, col.getName(5).resolveBinding()); } - + // int str(bool); // enum { ONE }; // void f(char * p){ @@ -4638,26 +4605,26 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPFunction str = (ICPPFunction) col.getName(0).resolveBinding(); assertSame(str, col.getName(6).resolveBinding()); assertSame(str, col.getName(7).resolveBinding()); assertSame(str, col.getName(9).resolveBinding()); } - + // void f() { // char * value; // ::operator delete(value); // } public void testBug95786() throws Exception { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); - + CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + assertFalse(col.getName(2).resolveBinding() instanceof IProblemBinding); } - + // int foo() // try // { @@ -4670,19 +4637,19 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); assertEquals(tu.getDeclarations().length, 1); } - + // void f(int t){ // int s (t); // } public void testBug94779() throws Exception { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); - IASTDeclarationStatement ds = (IASTDeclarationStatement) ((IASTCompoundStatement) ((IASTFunctionDefinition) tu + IASTDeclarationStatement ds = + (IASTDeclarationStatement) ((IASTCompoundStatement) ((IASTFunctionDefinition) tu .getDeclarations()[0]).getBody()).getStatements()[0]; - IASTDeclarator d = ((IASTSimpleDeclaration) ds.getDeclaration()) - .getDeclarators()[0]; + IASTDeclarator d = ((IASTSimpleDeclaration) ds.getDeclaration()).getDeclarators()[0]; assertTrue(d.getName().resolveBinding() instanceof IVariable); } - + // int t= 0; // int s (t); public void testBug211756() throws Exception { @@ -4691,7 +4658,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTDeclarator d = sd.getDeclarators()[0]; assertTrue(d.getName().resolveBinding() instanceof IVariable); } - + // typedef struct xs { // int state; // } xs; @@ -4703,24 +4670,24 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPField state = (ICPPField) col.getName(1).resolveBinding(); assertSame(state, col.getName(7).resolveBinding()); assertSame(state, col.getName(9).resolveBinding()); } - + // float _Complex x; // double _Complex y; public void testBug95757() throws Exception { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP, true, true); IASTDeclaration[] decls = tu.getDeclarations(); - + assertTrue(((IASTSimpleDeclSpecifier)((IASTSimpleDeclaration)decls[0]).getDeclSpecifier()).isComplex()); assertEquals(((IASTSimpleDeclSpecifier)((IASTSimpleDeclaration)decls[0]).getDeclSpecifier()).getType(), IASTSimpleDeclSpecifier.t_float); assertTrue(((IASTSimpleDeclSpecifier)((IASTSimpleDeclaration)decls[1]).getDeclSpecifier()).isComplex()); assertEquals(((IASTSimpleDeclSpecifier)((IASTSimpleDeclaration)decls[1]).getDeclSpecifier()).getType(), IASTSimpleDeclSpecifier.t_double); } - + // class _A { // static int i; // }; @@ -4732,11 +4699,11 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPField i = (ICPPField) col.getName(1).resolveBinding(); assertSame(i, col.getName(7).resolveBinding()); } - + // int f() { // return 5; // } @@ -4751,7 +4718,7 @@ public class AST2CPPTests extends AST2BaseTest { tu.accept(col); assertNoProblemBindings(col); } - + // void copy(void *); // typedef struct {} A; // void f(A * a) { @@ -4761,15 +4728,15 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPFunction copy = (ICPPFunction) col.getName(0).resolveBinding(); assertSame(copy, col.getName(7).resolveBinding()); } - + public void testBug96678() throws Exception { parse("int x; // comment \r\n", ParserLanguage.CPP, false, true); //$NON-NLS-1$ } - + // struct A {}; // void copy(A *); // void f() { @@ -4779,11 +4746,11 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPFunction copy = (ICPPFunction) col.getName(1).resolveBinding(); assertSame(copy, col.getName(5).resolveBinding()); } - + // class A { // A(int i = 0); // }; @@ -4791,15 +4758,15 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); ICPPConstructor ctor = (ICPPConstructor) col.getName(1).resolveBinding(); - + ICPPConstructor [] cs = A.getConstructors(); assertTrue(cs.length == 2); assertSame(cs[1], ctor); } - + // class C { public: int foo; }; // class B { // C* operator ->(); @@ -4814,13 +4781,13 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPField foo = (ICPPField) col.getName(1).resolveBinding(); - + assertSame(foo, col.getName(12).resolveBinding()); assertSame(foo, col.getName(14).resolveBinding()); } - + // class A; // class A { // class B; @@ -4831,17 +4798,17 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPClassType A = (ICPPClassType) col.getName(0).resolveBinding(); ICPPClassType B = (ICPPClassType) col.getName(2).resolveBinding(); ICPPClassType C = (ICPPClassType) col.getName(3).resolveBinding(); - + ICPPClassType [] classes = A.getNestedClasses(); assertEquals(classes.length, 2); assertSame(classes[0], B); assertSame(classes[1], C); } - + // namespace A { // struct F {} f; // void f(int a) {} @@ -4850,7 +4817,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPNamespace A = (ICPPNamespace) col.getName(0).resolveBinding(); IBinding [] bindings = A.getMemberBindings(); assertEquals(bindings.length, 3); @@ -4858,26 +4825,26 @@ public class AST2CPPTests extends AST2BaseTest { assertSame(bindings[1], col.getName(2).resolveBinding()); assertSame(bindings[2], col.getName(3).resolveBinding()); } - + // A< B< C< D< E< F< G< H<int> > > > > > > > a; // int A::B<int>::* b; public void testBug98704() throws Exception { parse(getAboveComment(), ParserLanguage.CPP); } - + // void f(); // void f(void) {} public void testBug_AIOOBE() throws Exception { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IFunction f = (IFunction) col.getName(0).resolveBinding(); assertSame(f, col.getName(1).resolveBinding()); IParameter p = (IParameter) col.getName(2).resolveBinding(); assertNotNull(p); } - + // void f(const int); // void f(int); // void g() { f(1); } @@ -4885,10 +4852,10 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + assertSame(col.getName(2).resolveBinding(), col.getName(5).resolveBinding()); } - + // void f(const volatile int); // void f(const int); // void g() { f(1); } @@ -4896,10 +4863,10 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + assertSame(col.getName(2).resolveBinding(), col.getName(5).resolveBinding()); } - + // void f(const int&); // void f(int&); // void g(const int&); @@ -4931,7 +4898,7 @@ public class AST2CPPTests extends AST2BaseTest { ICPPFunction h2= bh.assertNonProblem("h(int *)", 1); ICPPFunction i1= bh.assertNonProblem("i(int * const &)", 1); ICPPFunction i2= bh.assertNonProblem("i(const int *)", 1); - + ICPPFunction ref; ref= bh.assertNonProblem("f(ca)", 1); assertSame(f1, ref); @@ -4948,7 +4915,7 @@ public class AST2CPPTests extends AST2BaseTest { ref= bh.assertNonProblem("i(&a)", 1); assertSame(i1, ref); } - + // namespace n { // namespace m { // class A; @@ -4968,21 +4935,21 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPNamespace n = (ICPPNamespace) col.getName(0).resolveBinding(); ICPPNamespace m = (ICPPNamespace) col.getName(1).resolveBinding(); assertSame(n, col.getName(3).resolveBinding()); assertSame(n, col.getName(7).resolveBinding()); assertSame(m, col.getName(4).resolveBinding()); assertSame(m, col.getName(8).resolveBinding()); - + ICPPClassType A = (ICPPClassType) col.getName(2).resolveBinding(); assertSame(A, col.getName(5).resolveBinding()); - + ICPPMethod f = (ICPPMethod) col.getName(9).resolveBinding(); assertSame(f, col.getName(11).resolveBinding()); } - + // struct A { // struct { int i; } B; // struct { int j; } C; @@ -4995,17 +4962,17 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPField i = (ICPPField) col.getName(12).resolveBinding(); ICPPField j = (ICPPField) col.getName(15).resolveBinding(); assertSame(i, col.getName(2).resolveBinding()); assertSame(j, col.getName(5).resolveBinding()); } - + public void testBug99262() throws Exception { parse("void foo() {void *f; f=__null;}", ParserLanguage.CPP, true, true); //$NON-NLS-1$ } - + // void f1(int*) { // } // void f2() { @@ -5015,14 +4982,14 @@ public class AST2CPPTests extends AST2BaseTest { BindingAssertionHelper bh= getAssertionHelper(); bh.assertNonProblem("f1(__null", 2, ICPPFunction.class); } - + public void testBug100408() throws Exception { IASTTranslationUnit tu = parse("int foo() { int x=1; (x)*3; }", ParserLanguage.CPP); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); tu.accept(col); assertNoProblemBindings(col); } - + public void testBug84478_3() throws Exception { IASTTranslationUnit tu = parse("void foo() { switch(int x = 4) { case 4: x++; break; default: break;} }", ParserLanguage.CPP); //$NON-NLS-1$ CPPNameCollector col = new CPPNameCollector(); @@ -5036,7 +5003,7 @@ public class AST2CPPTests extends AST2BaseTest { tu.accept(col); assertNoProblemBindings(col); } - + // void f(){ // if (int x = 1) x++; // else x--; @@ -5050,22 +5017,22 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP, true, true); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + assertNoProblemBindings(col); IVariable x = (IVariable) col.getName(1).resolveBinding(); assertSame(x, col.getName(2).resolveBinding()); assertSame(x, col.getName(3).resolveBinding()); - + IVariable y = (IVariable) col.getName(4).resolveBinding(); assertSame(y, col.getName(5).resolveBinding()); - + IVariable a = (IVariable) col.getName(6).resolveBinding(); IVariable b = (IVariable) col.getName(7).resolveBinding(); assertSame(b, col.getName(8).resolveBinding()); assertSame(a, col.getName(9).resolveBinding()); assertSame(b, col.getName(10).resolveBinding()); } - + // void free(void*); // void f(char** p) { // free(p); @@ -5074,11 +5041,11 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP, true, true); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IFunction free = (IFunction) col.getName(0).resolveBinding(); assertSame(free, col.getName(4).resolveBinding()); } - + // class X; // void f() { // class A { @@ -5094,13 +5061,13 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP, true, true); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPClassType X = (ICPPClassType) col.getName(0).resolveBinding(); assertNotSame(X, col.getName(3).resolveBinding()); assertTrue(col.getName(3).resolveBinding() instanceof ICPPClassType); assertSame(X, col.getName(6).resolveBinding()); } - + // class m { // int m::f(); // }; @@ -5109,11 +5076,11 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP, true, true); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPMethod f = (ICPPMethod) col.getName(3).resolveBinding(); assertSame(f, col.getName(6).resolveBinding()); } - + // struct A { // typedef int AT; // void f1(AT); @@ -5128,18 +5095,18 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP, true, true); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ITypedef AT = (ITypedef) col.getName(1).resolveBinding(); ICPPMethod f1 = (ICPPMethod) col.getName(2).resolveBinding(); ICPPMethod f2 = (ICPPMethod) col.getName(5).resolveBinding(); ITypedef BT = (ITypedef) col.getName(8).resolveBinding(); - + assertSame(f1, col.getName(11).resolveBinding()); assertSame(AT, col.getName(12).resolveBinding()); assertSame(f2, col.getName(16).resolveBinding()); assertSame(BT, col.getName(17).resolveBinding()); } - + // struct Except { int blah; }; // void f() { // try { } @@ -5151,18 +5118,18 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP, true, true); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + IField blah = (IField) col.getName(1).resolveBinding(); IVariable e = (IVariable) col.getName(4).resolveBinding(); - + assertSame(e, col.getName(5).resolveBinding()); assertSame(blah, col.getName(6).resolveBinding()); } - + public void testBug78800() throws Exception { parseAndCheckBindings("class Matrix { public: Matrix & operator *(Matrix &); }; Matrix rotate, translate; Matrix transform = rotate * translate;"); //$NON-NLS-1$ } - + // struct U { static int i; }; // struct V : U { }; // struct W : U { using U::i; }; @@ -5174,16 +5141,16 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP, true, true); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + ICPPField i = (ICPPField) col.getName(1).resolveBinding(); ICPPUsingDeclaration using = (ICPPUsingDeclaration) col.getName(6).resolveBinding(); IBinding[] delegates = using.getDelegates(); assertEquals(delegates.length, 1); assertSame(i, delegates[0]); - + assertSame(i, col.getName(16).resolveBinding()); } - + // int f() { // int x = 4; while(x < 10) blah: ++x; // } @@ -5197,7 +5164,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTExpressionStatement es = (IASTExpressionStatement) labelStmt.getNestedStatement(); assertTrue(es.getExpression() instanceof IASTUnaryExpression); } - + // int f() { // int i; // do { ++i; } while(i < 10); @@ -5209,7 +5176,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTCompoundStatement body = (IASTCompoundStatement) f.getBody(); assertEquals(body.getStatements().length, 3); } - + public void testBug107150() throws Exception { StringBuffer buffer = new StringBuffer(); buffer.append("#define FUNC_PROTOTYPE_PARAMS(list) list\r\n"); //$NON-NLS-1$ @@ -5222,7 +5189,7 @@ public class AST2CPPTests extends AST2BaseTest { buffer.append("}\r\n"); //$NON-NLS-1$ IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); assertFalse(tu.getDeclarations()[1] instanceof IASTProblemDeclaration); - + buffer = new StringBuffer(); buffer.append("#define FUNC_PROTOTYPE_PARAMS(list) list\n"); //$NON-NLS-1$ buffer.append("int func1 FUNC_PROTOTYPE_PARAMS((int arg1)){\n"); //$NON-NLS-1$ @@ -5235,7 +5202,7 @@ public class AST2CPPTests extends AST2BaseTest { tu = parse(buffer.toString(), ParserLanguage.CPP); assertFalse(tu.getDeclarations()[1] instanceof IASTProblemDeclaration); } - + // class __attribute__((visibility("default"))) FooClass // { // int foo(); @@ -5246,7 +5213,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testBug108202() throws Exception { parse(getAboveComment(), ParserLanguage.CPP, true, true); } - + // // Test redundant class specifiers // class MyClass { @@ -5256,11 +5223,11 @@ public class AST2CPPTests extends AST2BaseTest { // int MyClass::static_field; public void testBug174791() throws Exception { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP, true, true); - + // check class IASTSimpleDeclaration sd = (IASTSimpleDeclaration) tu.getDeclarations()[0]; ICPPASTCompositeTypeSpecifier cts = (ICPPASTCompositeTypeSpecifier) sd.getDeclSpecifier(); - + IASTSimpleDeclaration md = (IASTSimpleDeclaration) cts.getMembers()[0]; IASTName name = md.getDeclarators()[0].getName(); IField field = (IField) name.resolveBinding(); @@ -5269,7 +5236,7 @@ public class AST2CPPTests extends AST2BaseTest { assertFalse(field.isExtern()); assertFalse(field.isAuto()); assertFalse(field.isRegister()); - + md = (IASTSimpleDeclaration) cts.getMembers()[1]; name = md.getDeclarators()[0].getName(); field = (IField) name.resolveBinding(); @@ -5278,14 +5245,14 @@ public class AST2CPPTests extends AST2BaseTest { assertFalse(field.isExtern()); assertFalse(field.isAuto()); assertFalse(field.isRegister()); - + // check real static defn sd = (IASTSimpleDeclaration) tu.getDeclarations()[1]; name = sd.getDeclarators()[0].getName(); field = (IField) name.resolveBinding(); assertTrue(field.isStatic()); } - + // namespace nsSplit {} // namespace nsSplit { // void a(); @@ -5294,7 +5261,7 @@ public class AST2CPPTests extends AST2BaseTest { // } public void testBug180979() throws Exception { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP, true, true); - + // check class IASTFunctionDefinition fd = (IASTFunctionDefinition) tu.getDeclarations()[2]; IASTDeclarator fdecl= fd.getDeclarator(); @@ -5303,7 +5270,7 @@ public class AST2CPPTests extends AST2BaseTest { assertTrue(binding instanceof IFunction); assertFalse(binding instanceof IProblemBinding); } - + // #define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) // #define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY(default) { // _GLIBCXX_BEGIN_NAMESPACE(std) @@ -5311,7 +5278,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testBug195701() throws Exception { parse(getAboveComment(), ParserLanguage.CPP, true, true); } - + // class A { // double operator*(const A&); // }; @@ -5322,14 +5289,14 @@ public class AST2CPPTests extends AST2BaseTest { public void testBug178059() throws Exception { parse(getAboveComment(), ParserLanguage.CPP, true, true); } - + // void foo (void *p) throw () ; // void bar (void *p) __attribute__ ((__nonnull__(1))); // void zot (void *p) throw () __attribute__ ((__nonnull__(1))); public void testBug179712() throws Exception { parse(getAboveComment(), ParserLanguage.CPP, true, true); } - + // namespace outer { // namespace inner { // class foo{}; @@ -5341,7 +5308,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testAttributeInUsingDirective_351228() throws Exception { parseAndCheckBindings(); } - + // class C { // public: // int i; @@ -5374,31 +5341,31 @@ public class AST2CPPTests extends AST2BaseTest { // } public void testBug214335() throws Exception { BindingAssertionHelper bh= getAssertionHelper(); - + IBinding b00= bh.assertProblem("problem1(\"", 8); IBinding b01= bh.assertProblem("problem2(\"", 8); IBinding b02= bh.assertProblem("problem3(\"", 8); IBinding b03= bh.assertNonProblem("nonproblem1(\"", 11); IBinding b04= bh.assertProblem("problem4(\"", 8); IBinding b05= bh.assertProblem("problem5(\"", 8); - + IBinding b06= bh.assertProblem("problem1(ptm", 8); IBinding b07= bh.assertProblem("problem2(ptm", 8); IBinding b08= bh.assertProblem("problem3(ptm", 8); IBinding b09= bh.assertNonProblem("nonproblem1(ptm", 11); IBinding b10= bh.assertProblem("problem4(ptm", 8); IBinding b11= bh.assertProblem("problem5(ptm", 8); - + assertInstance(b03, ICPPFunction.class); assertInstance(b09, ICPPFunction.class); } - + // namespace source { // class cls { // }; // void fs(); // void fs(int a); - // + // // } // void test1() { // source::fs(); @@ -5416,29 +5383,29 @@ public class AST2CPPTests extends AST2BaseTest { // } public void testReferencesOfUsingDecls() throws Exception { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP, true, true); - + IASTDeclaration[] decls = tu.getDeclarations(); ICPPASTNamespaceDefinition nsdef= (ICPPASTNamespaceDefinition) decls[0]; ICPPASTUsingDeclaration udcl= (ICPPASTUsingDeclaration) decls[2]; ICPPASTUsingDeclaration udf= (ICPPASTUsingDeclaration) decls[3]; IASTFunctionDefinition fdef= (IASTFunctionDefinition) decls[4]; - + IASTDeclaration[] nsdecls= nsdef.getDeclarations(); ICPPASTCompositeTypeSpecifier cldef= (ICPPASTCompositeTypeSpecifier) ((IASTSimpleDeclaration) nsdecls[0]).getDeclSpecifier(); ICPPASTFunctionDeclarator fdecl1= (ICPPASTFunctionDeclarator) ((IASTSimpleDeclaration) nsdecls[1]).getDeclarators()[0]; ICPPASTFunctionDeclarator fdecl2= (ICPPASTFunctionDeclarator) ((IASTSimpleDeclaration) nsdecls[2]).getDeclarators()[0]; - + IASTStatement[] stmts= ((IASTCompoundStatement) fdef.getBody()).getStatements(); IASTName clname= ((IASTNamedTypeSpecifier) ((IASTSimpleDeclaration)((IASTDeclarationStatement) stmts[0]).getDeclaration()).getDeclSpecifier()).getName(); IASTName fnname1= ((IASTIdExpression) ((IASTFunctionCallExpression) ((IASTExpressionStatement) stmts[1]).getExpression()).getFunctionNameExpression()).getName(); IASTName fnname2= ((IASTIdExpression) ((IASTFunctionCallExpression) ((IASTExpressionStatement) stmts[2]).getExpression()).getFunctionNameExpression()).getName(); - + // check class IBinding b= cldef.getName().resolveBinding(); assertEquals(3, tu.getReferences(b).length); // 2 refs + using-decl assertEquals(1, tu.getDefinitionsInAST(b).length); // class-def assertEquals(2, tu.getDeclarationsInAST(b).length); // class-def + using-decl - + // check functions b= fdecl1.getName().resolveBinding(); assertEquals(3, tu.getReferences(b).length); // 2 refs + using-decl @@ -5448,27 +5415,27 @@ public class AST2CPPTests extends AST2BaseTest { assertEquals(3, tu.getReferences(b).length); // 2 refs + using-decl assertEquals(0, tu.getDefinitionsInAST(b).length); // function is not defined assertEquals(2, tu.getDeclarationsInAST(b).length); // func-decl + using-decl - + // check using declaration class b= udcl.getName().resolveBinding(); assertEquals(3, tu.getReferences(b).length); // 2 refs + using-decl assertEquals(1, tu.getDefinitionsInAST(b).length); // class-def assertEquals(2, tu.getDeclarationsInAST(b).length); // class-def + using-decl - + // check using declaration function b= udf.getName().resolveBinding(); assertEquals(5, tu.getReferences(b).length); // 4 refs + using-decl assertEquals(0, tu.getDefinitionsInAST(b).length); // function is not defined assertEquals(3, tu.getDeclarationsInAST(b).length); // using-decl + 2 func-decls - + // check class reference b= clname.resolveBinding(); assertEquals(3, tu.getReferences(b).length); // 2 refs + using-decl assertEquals(1, tu.getDefinitionsInAST(b).length); // class-def assertEquals(2, tu.getDeclarationsInAST(b).length); // class-def + using-decl - + // check function references - b= fnname1.resolveBinding(); + b= fnname1.resolveBinding(); assertEquals(3, tu.getReferences(b).length); // 2 refs + using-decl assertEquals(0, tu.getDefinitionsInAST(b).length); // function is not defined assertEquals(2, tu.getDeclarationsInAST(b).length); // using-decl + func-decl @@ -5477,7 +5444,7 @@ public class AST2CPPTests extends AST2BaseTest { assertEquals(0, tu.getDefinitionsInAST(b).length); // function is not defined assertEquals(2, tu.getDeclarationsInAST(b).length); // using-decl + func-decl } - + // namespace x { // int a; // } @@ -5492,11 +5459,11 @@ public class AST2CPPTests extends AST2BaseTest { // } public void testUsingDirectiveWithNestedClass_Bug209582() throws Exception { BindingAssertionHelper bh= getAssertionHelper(); - + IBinding b= bh.assertNonProblem("a=", 1); assertEquals("x", b.getScope().getScopeName().toString()); } - + // class Test { // public: // Test(int, int *) {} @@ -5511,12 +5478,12 @@ public class AST2CPPTests extends AST2BaseTest { // } public void testCastAmbiguity_Bug211756() throws Exception { BindingAssertionHelper bh= getAssertionHelper(); - + bh.assertNonProblem("foo1", 4); bh.assertNonProblem("foo2", 4); bh.assertNonProblem("foo3", 4); } - + // int foo2() { // int relayIndex = -1; // int numRelays = 0; @@ -5525,7 +5492,7 @@ public class AST2CPPTests extends AST2BaseTest { // } public void testTemplateIDAmbiguity_Bug104706() throws Exception { BindingAssertionHelper bh= getAssertionHelper(); - + bh.assertNonProblem("relayIndex <", 10); bh.assertNonProblem("relayIndex >", 10); bh.assertNonProblem("numRelays)", 9); @@ -5563,13 +5530,13 @@ public class AST2CPPTests extends AST2BaseTest { // } public void testScopeOfUsingDelegates_Bug219424() throws Exception { BindingAssertionHelper bh= getAssertionHelper(); - + bh.assertNonProblem("cl c", 2); bh.assertNonProblem("func(qualified)", 4); bh.assertNonProblem("func(unqualified)", 4); } - - + + // class Test { // void Test::member1(); // void Test::member2() {}; @@ -5580,7 +5547,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testQualifiedMemberDeclaration_Bug222026() throws Exception { final String code = getAboveComment(); BindingAssertionHelper bh= new BindingAssertionHelper(code, true); - + IBinding b= bh.assertNonProblem("member1", 7); IBinding b2= bh.assertNonProblem("member1(){", 7); assertTrue(b instanceof ICPPMethod); @@ -5588,7 +5555,7 @@ public class AST2CPPTests extends AST2BaseTest { assertEquals("member1", m1.getName()); assertEquals("Test", m1.getScope().getScopeName().toString()); assertSame(b, b2); - + bh= new BindingAssertionHelper(code, true); b= bh.assertNonProblem("member2", 7); b2= bh.assertNonProblem("member2();", 7); @@ -5597,7 +5564,7 @@ public class AST2CPPTests extends AST2BaseTest { assertEquals("member2", m1.getName()); assertEquals("Test", m1.getScope().getScopeName().toString()); assertSame(b, b2); - + // different resolution order bh= new BindingAssertionHelper(code, true); b2= bh.assertNonProblem("member1(){", 7); @@ -5607,7 +5574,7 @@ public class AST2CPPTests extends AST2BaseTest { assertEquals("member1", m1.getName()); assertEquals("Test", m1.getScope().getScopeName().toString()); assertSame(b, b2); - + bh= new BindingAssertionHelper(code, true); b2= bh.assertNonProblem("member2();", 7); b= bh.assertNonProblem("member2", 7); @@ -5617,7 +5584,7 @@ public class AST2CPPTests extends AST2BaseTest { assertEquals("Test", m1.getScope().getScopeName().toString()); assertSame(b, b2); } - + // namespace Test { // void Test::member1(); // void Test::member2() {}; @@ -5628,7 +5595,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testQualifiedMemberDeclarationInNamespace_Bug222026() throws Exception { final String code = getAboveComment(); BindingAssertionHelper bh= new BindingAssertionHelper(code, true); - + IBinding b= bh.assertNonProblem("member1", 7); IBinding b2= bh.assertNonProblem("member1(){", 7); assertTrue(b instanceof ICPPFunction); @@ -5636,7 +5603,7 @@ public class AST2CPPTests extends AST2BaseTest { assertEquals("member1", m1.getName()); assertEquals("Test", m1.getScope().getScopeName().toString()); assertSame(b, b2); - + bh= new BindingAssertionHelper(code, true); b= bh.assertNonProblem("member2", 7); b2= bh.assertNonProblem("member2();", 7); @@ -5645,7 +5612,7 @@ public class AST2CPPTests extends AST2BaseTest { assertEquals("member2", m1.getName()); assertEquals("Test", m1.getScope().getScopeName().toString()); assertSame(b, b2); - + // different resolution order bh= new BindingAssertionHelper(code, true); b2= bh.assertNonProblem("member1(){", 7); @@ -5655,7 +5622,7 @@ public class AST2CPPTests extends AST2BaseTest { assertEquals("member1", m1.getName()); assertEquals("Test", m1.getScope().getScopeName().toString()); assertSame(b, b2); - + bh= new BindingAssertionHelper(code, true); b2= bh.assertNonProblem("member2();", 7); b= bh.assertNonProblem("member2", 7); @@ -5665,14 +5632,14 @@ public class AST2CPPTests extends AST2BaseTest { assertEquals("Test", m1.getScope().getScopeName().toString()); assertSame(b, b2); } - + // namespace ns { typedef int ns::TINT; } // illegal, still no CCE is expected. public void testQualifiedTypedefs_Bug222093() throws Exception{ BindingAssertionHelper bh= getAssertionHelper(); IBinding td= bh.assertProblem("TINT", 4); bh.assertProblem("ns::", 2); } - + // void func() { // int a, b; // a < b || (a==b && a < b); @@ -5682,7 +5649,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testResettingTemplateIdScopesStack_Bug223777() throws Exception{ parseAndCheckBindings(getAboveComment()); } - + // long x= 10L; public void testLongLiteral_225534() throws Exception { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); @@ -5692,7 +5659,7 @@ public class AST2CPPTests extends AST2BaseTest { ICPPBasicType type= (ICPPBasicType) exp.getExpressionType(); assertTrue(type.isLong()); } - + // void foo/*_a*/(int x) {} // void foo/*_b*/(unsigned int) {} // void foo/*_c*/(short x) {} @@ -5734,10 +5701,10 @@ public class AST2CPPTests extends AST2BaseTest { // // foo/*i1*/(11.1F); // foo/*i2*/(11E1F); - // + // // foo/*j1*/(11.1); // foo/*j2*/(11.1E1); - // + // // foo/*k1*/(11.1L); // foo/*k2*/(11.1E1L); // } @@ -5752,7 +5719,7 @@ public class AST2CPPTests extends AST2BaseTest { } } } - + // class A { // public: // void doA() {} @@ -5788,7 +5755,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testBug235196() throws Exception { parseAndCheckBindings(getAboveComment()); } - + // typedef int tint; // class X { // typedef int xtint; @@ -5839,7 +5806,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testNewPlacement() throws Exception { IASTTranslationUnit tu= parseAndCheckBindings(getAboveComment()); IASTFunctionDefinition fdef= getDeclaration(tu, 3); - + checkNewExpression(fdef, 0, null, "int", null); checkNewExpression(fdef, 1, null, "int", IASTExpressionList.class); checkNewExpression(fdef, 2, null, "int", IASTIdExpression.class); @@ -5859,25 +5826,6 @@ public class AST2CPPTests extends AST2BaseTest { checkNewExpression(fdef, 15, IASTIdExpression.class, "int [][]", null); } - private void checkNewExpression(IASTFunctionDefinition fdef, int i_expr, Class<?> placement, String type, Class<?> init) { - IASTExpression expr; - ICPPASTNewExpression newExpr; - expr= getExpressionOfStatement(fdef, i_expr); - assertInstance(expr, ICPPASTNewExpression.class); - newExpr= (ICPPASTNewExpression) expr; - if (placement == null) { - assertNull(newExpr.getNewPlacement()); - } else { - assertInstance(newExpr.getNewPlacement(), placement); - } - if (init == null) { - assertNull(newExpr.getNewInitializer()); - } else { - assertInstance(newExpr.getNewInitializer(), init); - } - isTypeEqual(CPPVisitor.createType(newExpr.getTypeId()), type); - } - // namespace ns { // void test() {} // + @@ -5955,18 +5903,18 @@ public class AST2CPPTests extends AST2BaseTest { ICPPFunction pt2= ba.assertNonProblem("foo(this);/*2*/", 3, ICPPFunction.class); ICPPFunction pt3= ba.assertNonProblem("foo(this);/*3*/", 3, ICPPFunction.class); ICPPFunction pt4= ba.assertNonProblem("foo(this);/*4*/", 3, ICPPFunction.class); - + IType t1= ((IPointerType)pt1.getType().getParameterTypes()[0]).getType(); IQualifierType t2= (IQualifierType) ((IPointerType) pt2.getType().getParameterTypes()[0]).getType(); IQualifierType t3= (IQualifierType)((IPointerType) pt3.getType().getParameterTypes()[0]).getType(); IQualifierType t4= (IQualifierType)((IPointerType) pt4.getType().getParameterTypes()[0]).getType(); - + assertTrue(!(t1 instanceof IQualifierType)); assertTrue(t2.isConst()); assertTrue(!t2.isVolatile()); assertTrue(!t3.isConst()); assertTrue(t3.isVolatile()); assertTrue(t4.isConst()); assertTrue(t4.isVolatile()); } - + // class A { // public: // void foo() {} @@ -5983,7 +5931,7 @@ public class AST2CPPTests extends AST2BaseTest { ba.assertProblem("foo();/*1*/", 3); ba.assertNonProblem("foo();/*2*/", 3); } - + // class A { // public: // void foo() {}; @@ -6008,7 +5956,7 @@ public class AST2CPPTests extends AST2BaseTest { assertEquals(m1.getClassOwner().getName(), "A"); assertEquals(m2.getClassOwner().getName(), "B"); } - + // class A { public: void foo(); }; // class B { public: A* operator->() {return new A();} }; // class C { public: B operator->() {return *new B();} }; @@ -6021,7 +5969,7 @@ public class AST2CPPTests extends AST2BaseTest { BindingAssertionHelper ba= getAssertionHelper(); ba.assertNonProblem("foo();/**/", 3); } - + // class A { public: void foo(); }; // class B { public: A* operator->() {return new A();} }; // class C { public: B* operator->() {return new B();} }; @@ -6034,7 +5982,7 @@ public class AST2CPPTests extends AST2BaseTest { BindingAssertionHelper ba= getAssertionHelper(); ba.assertProblem("foo();/**/", 3); } - + // class A { public: void foo(); }; // typedef A A2; // class B { public: A2* operator->() {return new A();} }; @@ -6050,7 +5998,7 @@ public class AST2CPPTests extends AST2BaseTest { BindingAssertionHelper ba= getAssertionHelper(); ba.assertNonProblem("foo();/**/", 3); } - + // namespace std {class type_info{public: const char* name() const;};} // int main() { // int s; @@ -6125,14 +6073,14 @@ public class AST2CPPTests extends AST2BaseTest { public void testTypeIdForPtrToMember_Bug242197() throws Exception { parseAndCheckBindings(getAboveComment(), ParserLanguage.CPP); } - + // void restrict(); public void testRestrictIsNoCPPKeyword_Bug228826() throws Exception { final String code = getAboveComment(); parseAndCheckBindings(code, ParserLanguage.CPP, false); parseAndCheckBindings(getAboveComment(), ParserLanguage.CPP, true); // even with gnu extensions } - + // void test1(); // void test2() throw (); // void test3() throw (int); @@ -6156,7 +6104,7 @@ public class AST2CPPTests extends AST2BaseTest { specs= fdtor.getExceptionSpecification(); assertEquals(1, specs.length); } - + // int test() { // try { // } catch (const int &ex) { @@ -6185,7 +6133,7 @@ public class AST2CPPTests extends AST2BaseTest { // const char& operator[](int pos) const; // char& operator[](int pos); // }; - // + // // void func(const char& c); // void func(char& c); // @@ -6199,7 +6147,7 @@ public class AST2CPPTests extends AST2BaseTest { ICPPFunction func2= helper.assertNonProblem("func(y[0])", 4, ICPPFunction.class); assertNotSame(func1, func2); } - + // class NonVirt { // void m();//0 // }; @@ -6217,7 +6165,7 @@ public class AST2CPPTests extends AST2BaseTest { // }; // class C5 : C1 { // void m();//5 - // }; + // }; public void testOverridden_248846() throws Exception { BindingAssertionHelper helper= getAssertionHelper(); ICPPMethod m0= helper.assertNonProblem("m();//0", 1, ICPPMethod.class); @@ -6226,14 +6174,14 @@ public class AST2CPPTests extends AST2BaseTest { ICPPMethod m3= helper.assertNonProblem("m(int);", 1, ICPPMethod.class); ICPPMethod m4= helper.assertNonProblem("m();//4", 1, ICPPMethod.class); ICPPMethod m5= helper.assertNonProblem("m();//5", 1, ICPPMethod.class); - + assertFalse(ClassTypeHelper.isVirtual(m0)); assertFalse(ClassTypeHelper.isVirtual(m3)); assertTrue(ClassTypeHelper.isVirtual(m1)); assertTrue(ClassTypeHelper.isVirtual(m2)); assertTrue(ClassTypeHelper.isVirtual(m4)); assertTrue(ClassTypeHelper.isVirtual(m5)); - + assertFalse(ClassTypeHelper.isOverrider(m0, m0)); assertFalse(ClassTypeHelper.isOverrider(m1, m0)); assertFalse(ClassTypeHelper.isOverrider(m2, m0)); @@ -6254,7 +6202,7 @@ public class AST2CPPTests extends AST2BaseTest { assertFalse(ClassTypeHelper.isOverrider(m3, m2)); assertFalse(ClassTypeHelper.isOverrider(m5, m2)); assertTrue(ClassTypeHelper.isOverrider(m4, m2)); - + ICPPMethod[] ors= ClassTypeHelper.findOverridden(m0); assertEquals(0, ors.length); ors= ClassTypeHelper.findOverridden(m1); @@ -6312,7 +6260,7 @@ public class AST2CPPTests extends AST2BaseTest { } // void f(); - // + // // void test(int p) { // f(p); // } @@ -6322,7 +6270,7 @@ public class AST2CPPTests extends AST2BaseTest { } // void f(...); - // + // // void test(int* p) { // f(p); // } @@ -6673,7 +6621,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testOverloadedUnaryOperator_259927_6() throws Exception { BindingAssertionHelper ba= getAssertionHelper(); for(int i = 1; i <=6; i++) - ba.assertNonProblem("xx; // "+i, 2, ICPPField.class); + ba.assertNonProblem("xx; // "+i, 2, ICPPField.class); } @@ -6722,7 +6670,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testFriendFunctionResolution_86368_1() throws Exception { final String code= getAboveComment(); parseAndCheckBindings(code); - + BindingAssertionHelper bh= new BindingAssertionHelper(code, true); IFunction f1= bh.assertNonProblem("f(int)", 1); IFunction f2= bh.assertNonProblem("f(1)", 1); @@ -6757,7 +6705,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testFriendFunctionResolution_86368_2() throws Exception { final String code= getAboveComment(); parseAndCheckBindings(code); - + BindingAssertionHelper bh= new BindingAssertionHelper(code, true); IFunction f1= bh.assertNonProblem("f(int)", 1); IFunction f2= bh.assertNonProblem("f('i')", 1); @@ -6803,7 +6751,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testMemberFunctionDisambiguationByCVness_238409() throws Exception { final String code= getAboveComment(); BindingAssertionHelper bh= new BindingAssertionHelper(code, true); - + ICPPMethod bar_cv= bh.assertNonProblem("bar();/*1*/", 3, ICPPMethod.class); ICPPMethod bar_v= bh.assertNonProblem("bar();/*2*/", 3, ICPPMethod.class); ICPPMethod bar_c= bh.assertNonProblem("bar();/*3*/", 3, ICPPMethod.class); @@ -6812,7 +6760,7 @@ public class AST2CPPTests extends AST2BaseTest { ICPPFunctionType bar_v_ft= bar_v.getType(); ICPPFunctionType bar_c_ft= bar_c.getType(); ICPPFunctionType bar_ft= bar.getType(); - + assertTrue(bar_cv_ft.isConst()); assertTrue(bar_cv_ft.isVolatile()); assertTrue(!bar_v_ft.isConst()); assertTrue(bar_v_ft.isVolatile()); assertTrue(bar_c_ft.isConst()); assertTrue(!bar_c_ft.isVolatile()); @@ -6826,7 +6774,7 @@ public class AST2CPPTests extends AST2BaseTest { bar_v_ft= bar_v.getType(); bar_c_ft= bar_c.getType(); bar_ft= bar.getType(); - + assertTrue(bar_cv_ft.isConst()); assertTrue(bar_cv_ft.isVolatile()); assertTrue(!bar_v_ft.isConst()); assertTrue(bar_v_ft.isVolatile()); assertTrue(bar_c_ft.isConst()); assertTrue(!bar_c_ft.isVolatile()); @@ -6863,7 +6811,7 @@ public class AST2CPPTests extends AST2BaseTest { final String code= getAboveComment(); parseAndCheckBindings(code); } - + // struct A {}; // A a(); // @@ -6923,7 +6871,7 @@ public class AST2CPPTests extends AST2BaseTest { ba.assertNonProblem("A*", 1, ICPPClassType.class); ba.assertNonProblem("a", 1, ICPPVariable.class); ba.assertNonProblem("B*", 1, ICPPVariable.class); - + parseAndCheckBindings(code, ParserLanguage.CPP); } @@ -6959,7 +6907,7 @@ public class AST2CPPTests extends AST2BaseTest { ba.assertNonProblem("fip(0)", 3, ICPPFunction.class); ba.assertNonProblem("fia(0)", 3, ICPPFunction.class); } - + // class cl {}; // typedef cl tl; // void reset(cl* ptr){}; @@ -6972,7 +6920,7 @@ public class AST2CPPTests extends AST2BaseTest { String code= getAboveComment(); parseAndCheckBindings(code, ParserLanguage.CPP); } - + // template<typename IteratorT> class range { // public: // template<class Range> range(const Range& r) {} @@ -6988,7 +6936,7 @@ public class AST2CPPTests extends AST2BaseTest { ba.assertNonProblem("onRange(ir)", 7); parseAndCheckBindings(code, ParserLanguage.CPP); } - + // typedef int * pi; // typedef int *const* pcpi; // typedef const pi* pcpi2; @@ -7009,10 +6957,10 @@ public class AST2CPPTests extends AST2BaseTest { IBinding ct1= ba.assertNonProblem("CT<pcpi>", 8); IBinding ct2= ba.assertNonProblem("CT<pcpi2>", 9); assertSame(ct1, ct2); - + parseAndCheckBindings(code, ParserLanguage.CPP); } - + // class X { // public: // int f; @@ -7078,7 +7026,7 @@ public class AST2CPPTests extends AST2BaseTest { BindingAssertionHelper ba= getAssertionHelper(); ba.assertNonProblem("f(!p)", 1); } - + // class S { // S(int); // }; @@ -7094,7 +7042,7 @@ public class AST2CPPTests extends AST2BaseTest { final String code = getAboveComment(); parseAndCheckBindings(code, ParserLanguage.CPP); } - + // void f(char *(names[2])= 0); // void f2(const char *(n[])) { // if (n && 1){} @@ -7110,10 +7058,10 @@ public class AST2CPPTests extends AST2BaseTest { assertInstance(t, IPointerType.class); t= ((IPointerType) t).getType(); assertInstance(t, IBasicType.class); - + parseAndCheckBindings(code, ParserLanguage.CPP); } - + // class X { // virtual void pv() = 0; // void (*ptrToFunc) ()= 0; @@ -7134,7 +7082,7 @@ public class AST2CPPTests extends AST2BaseTest { parseAndCheckBindings(code, ParserLanguage.CPP); } - + // namespace ns { // struct S { // int a; @@ -7154,8 +7102,8 @@ public class AST2CPPTests extends AST2BaseTest { final String code = getAboveComment(); parseAndCheckBindings(code, ParserLanguage.CPP); } - - + + // struct A {int a;}; // // int foo(); @@ -7168,19 +7116,19 @@ public class AST2CPPTests extends AST2BaseTest { final String code = getAboveComment(); parseAndCheckBindings(code, ParserLanguage.CPP); } - + // void f(int volatile * const *) {} // void f(int const volatile * const *) {} // void test() { // int ** x; // f(x); // problem binding here // } - public void testRankingOfQualificationConversion_Bug269321() throws Exception { + public void testRankingOfQualificationConversion_Bug269321() throws Exception { final String code = getAboveComment(); parseAndCheckBindings(code, ParserLanguage.CPP); } - - + + // struct A { int a; }; // struct B { int b; }; // @@ -7203,8 +7151,8 @@ public class AST2CPPTests extends AST2BaseTest { ba.assertNonProblem("a; //2", 1, ICPPField.class); ba.assertNonProblem("b; //3", 1, ICPPField.class); } - - + + // struct A { int a; }; // struct X { // A operator+(X); @@ -7236,7 +7184,7 @@ public class AST2CPPTests extends AST2BaseTest { BindingAssertionHelper ba= getAssertionHelper(); ba.assertProblem("test(c)", 4); } - + // int foo(char * x); // int foo(wchar_t * x); @@ -7253,7 +7201,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu = parse(getAboveComment(), ParserLanguage.CPP); CPPNameCollector col = new CPPNameCollector(); tu.accept(col); - + assertSame(col.getName(0).resolveBinding(), col.getName(9).resolveBinding()); assertSame(col.getName(2).resolveBinding(), col.getName(10).resolveBinding()); assertSame(col.getName(4).resolveBinding(), col.getName(11).resolveBinding()); @@ -7270,7 +7218,7 @@ public class AST2CPPTests extends AST2BaseTest { BindingAssertionHelper ba= getAssertionHelper(); ba.assertNonProblem("A a;", 1, ICPPClassType.class); } - + // template <class T> class Moo; // bool getFile(Moo <class Foo> & res); public void testScopeOfClassFwdDecl_270831() throws Exception { @@ -7279,7 +7227,7 @@ public class AST2CPPTests extends AST2BaseTest { IScope scope= t.getScope(); assertEquals(EScopeKind.eGlobal, scope.getKind()); } - + // class C {}; // class D : public C {}; // class E { @@ -7307,7 +7255,7 @@ public class AST2CPPTests extends AST2BaseTest { parseAndCheckBindings(code, ParserLanguage.CPP); } - + // int foo(int x); // int bar(int x); // @@ -7341,8 +7289,8 @@ public class AST2CPPTests extends AST2BaseTest { ICPPField[] fields= c.getDeclaredFields(); assertEquals(1, fields.length); assertEquals("s", fields[0].getName()); - } - + } + // class C3 { // C3(int); // }; @@ -7353,7 +7301,7 @@ public class AST2CPPTests extends AST2BaseTest { final String code = getAboveComment(); parseAndCheckBindings(code, ParserLanguage.CPP); } - + // template<class T> class Compare { // Compare(); // ~Compare(); @@ -7365,7 +7313,7 @@ public class AST2CPPTests extends AST2BaseTest { final String code = getAboveComment(); parseAndCheckBindings(code, ParserLanguage.CPP); } - + // class IBase { // public: // virtual void base() = 0; @@ -7395,7 +7343,7 @@ public class AST2CPPTests extends AST2BaseTest { final String code = getAboveComment(); parseAndCheckBindings(code, ParserLanguage.CPP); } - + // class C { // C& operator()() {return *this;} // }; @@ -7465,7 +7413,7 @@ public class AST2CPPTests extends AST2BaseTest { BindingAssertionHelper ba= getAssertionHelper(); ba.assertProblem("enum_name", 9); } - + // class CL { // typedef int x; // friend void test() { @@ -7475,7 +7423,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testLookupFromInlineFriend_284690() throws Exception { parseAndCheckBindings(getAboveComment(), ParserLanguage.CPP); } - + // class XInterface {}; // class OWeakObject : public XInterface{}; // class XTypeProvider : public XInterface{}; @@ -7492,7 +7440,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testTypeLookupWithMultipleInheritance_286213() throws Exception { parseAndCheckBindings(getAboveComment(), ParserLanguage.CPP); } - + // int v1; // static int v2; // extern int v3; @@ -7533,33 +7481,6 @@ public class AST2CPPTests extends AST2BaseTest { checkDeclDef(declNames, defNames, cls.getMembers()); } - private void checkDeclDef(String[] declNames, String[] defNames, IASTDeclaration[] decls) { - int i= 0, j= 0; - for (IASTDeclaration decl : decls) { - if (decl instanceof ICPPASTLinkageSpecification) { - decl= ((ICPPASTLinkageSpecification) decl).getDeclarations()[0]; - } - final IASTDeclarator[] dtors = ((IASTSimpleDeclaration) decl).getDeclarators(); - for (IASTDeclarator dtor : dtors) { - final String name = dtor.getName().toString(); - switch (dtor.getRoleForName(dtor.getName())) { - case IASTNameOwner.r_declaration: - assertTrue("Unexpected decl " + name, i < declNames.length); - assertEquals(declNames[i++], name); - break; - case IASTNameOwner.r_definition: - assertTrue("Unexpected decl " + name, j < defNames.length); - assertEquals(defNames[j++], name); - break; - default: - assertTrue(name, false); - } - } - } - assertEquals(declNames.length, i); - assertEquals(defNames.length, j); - } - // class X { // struct S* m1; // struct T; @@ -7598,7 +7519,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTImplicitNameOwner expr= (IASTImplicitNameOwner) rstmt.getReturnValue(); assertEquals(0, expr.getImplicitNames().length); } - + // class Test { // template <int T> void t() {} // inline void t(); @@ -7614,7 +7535,7 @@ public class AST2CPPTests extends AST2BaseTest { ICPPMethod m= bh.assertNonProblem("t<1>", 1); assertTrue(m.isInline()); } - + // class B {}; // class A { // public: @@ -7635,7 +7556,7 @@ public class AST2CPPTests extends AST2BaseTest { final String code = getAboveComment(); parseAndCheckBindings(code, ParserLanguage.CPP); } - + // class From {}; // class To1 { // public: @@ -7663,7 +7584,7 @@ public class AST2CPPTests extends AST2BaseTest { final String code = getAboveComment(); parseAndCheckBindings(code, ParserLanguage.CPP); } - + // class A {}; // class B : public A {}; // @@ -7686,7 +7607,7 @@ public class AST2CPPTests extends AST2BaseTest { bh.assertNonProblem("foo(c);", 3); bh.assertProblem("foo(cc);", 3); } - + // class ULONGLONG { // public : // ULONGLONG (unsigned long long val) {} @@ -7704,7 +7625,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTImplicitNameOwner no= (IASTImplicitNameOwner) stmt.getReturnValue(); assertEquals(0, no.getImplicitNames().length); } - + // typedef int Fixed_Array[20]; // void f(const ::Fixed_Array message) {} // @@ -7716,7 +7637,7 @@ public class AST2CPPTests extends AST2BaseTest { final String code = getAboveComment(); parseAndCheckBindings(code, ParserLanguage.CPP); } - + // template <typename T> struct CT { // CT(int) {} // }; @@ -7735,7 +7656,7 @@ public class AST2CPPTests extends AST2BaseTest { bh.assertNonProblem("B>(1)", 1); parseAndCheckBindings(code, ParserLanguage.CPP); } - + // namespace ns { // enum E { e1, e2 }; // E operator|(E __a, E __b) { return e1; } @@ -7781,7 +7702,7 @@ public class AST2CPPTests extends AST2BaseTest { assertNotNull(methodTemplate.getType()); assertEquals(1, methodTemplate.getParameters().length); } - + // void x(const char (&)[1]) {}; // // typedef char Array[12]; @@ -7798,8 +7719,8 @@ public class AST2CPPTests extends AST2BaseTest { public void testCVQualifiersWithArrays_293982() throws Exception { final String code = getAboveComment(); parseAndCheckBindings(code, ParserLanguage.CPP); - } - + } + // template <typename T, int N> char (&func(T (&array)[N]))[N]; // void f(const int (&a)[1]) {} // typedef int TA[]; @@ -7813,8 +7734,8 @@ public class AST2CPPTests extends AST2BaseTest { public void testArrayTypeSizeFromInitializer_294144() throws Exception { final String code = getAboveComment(); parseAndCheckBindings(code, ParserLanguage.CPP); - } - + } + // struct A { // template<typename T> void m() { // C<T> c; @@ -7823,9 +7744,9 @@ public class AST2CPPTests extends AST2BaseTest { // }; public void testLookupInClassScopeForTemplateIDs_294904() throws Exception { final String code = getAboveComment(); - parseAndCheckBindings(code, ParserLanguage.CPP); + parseAndCheckBindings(code, ParserLanguage.CPP); } - + // template <typename T, int N> char (&func(T (&array)[N]))[N]; // struct A { // static int array[]; @@ -7837,18 +7758,18 @@ public class AST2CPPTests extends AST2BaseTest { // } public void testCompleteArrayTypeWithIncompleteDeclaration_294144() throws Exception { final String code = getAboveComment(); - parseAndCheckBindings(code, ParserLanguage.CPP); + parseAndCheckBindings(code, ParserLanguage.CPP); } - + // void test() { // int x,y; // return y < x ? -1 : y > x ? 1 : 0; // } public void testSyntax1_295064() throws Exception { final String code = getAboveComment(); - parseAndCheckBindings(code, ParserLanguage.CPP); + parseAndCheckBindings(code, ParserLanguage.CPP); } - + // typedef int TInt; // template <typename T> class CT { // CT(TInt); @@ -7856,7 +7777,7 @@ public class AST2CPPTests extends AST2BaseTest { // template <typename T> inline CT<T>::CT(TInt) {} public void testSyntax2_295064() throws Exception { final String code = getAboveComment(); - parseAndCheckBindings(code, ParserLanguage.CPP); + parseAndCheckBindings(code, ParserLanguage.CPP); } // const unsigned int EIGHT= 8; @@ -7876,7 +7797,7 @@ public class AST2CPPTests extends AST2BaseTest { final String code= getAboveComment(); parseAndCheckBindings(code, ParserLanguage.CPP); } - + // struct A {}; // // void foo(const A&); // #1 @@ -7942,7 +7863,7 @@ public class AST2CPPTests extends AST2BaseTest { b= bh.assertNonProblem("foo(source_const_rvalue_ref())", 3); assertSame(b, foo1); } - + // int i; // typedef int& LRI; @@ -7967,7 +7888,7 @@ public class AST2CPPTests extends AST2BaseTest { v= bh.assertNonProblem("r5", 2); assertEquals("int &&", ASTTypeUtil.getType(v.getType())); } - + // void dref(double&); // void drref(double&&); // void cdref(const double&); @@ -7985,7 +7906,7 @@ public class AST2CPPTests extends AST2BaseTest { // double d = 2.0; // const volatile double cvd = 1; // int i = 2; - // dref(d); + // dref(d); // cdref(d); // aref(b); // caref(b); @@ -8028,7 +7949,7 @@ public class AST2CPPTests extends AST2BaseTest { final String code= getAboveComment(); parseAndCheckBindings(code, ParserLanguage.CPP); } - + // template <class T, class X> struct enable_if_same {}; // template <class X> struct enable_if_same<X, X> { // typedef char type; @@ -8078,7 +7999,7 @@ public class AST2CPPTests extends AST2BaseTest { // sink3(source()); // sink3(csource()); // sink3(z7); - + // } public void testInitOfClassObjectsByRValues_294730() throws Exception { final CharSequence[] contents = getContents(3); @@ -8110,7 +8031,7 @@ public class AST2CPPTests extends AST2BaseTest { String code= getAboveComment(); parseAndCheckBindings(code, ParserLanguage.CPP); } - + // namespace ns { // struct A{}; // void f(ns::A, char) {} @@ -8128,14 +8049,14 @@ public class AST2CPPTests extends AST2BaseTest { BindingAssertionHelper bh= new BindingAssertionHelper(code, true); IFunction inns= bh.assertNonProblem("f(ns::A, char)", 1); IFunction glob= bh.assertNonProblem("f(ns::A, int)", 1); - + IBinding b= bh.assertNonProblem("f(a, '1')", 1); assertSame(b, inns); - + b= bh.assertNonProblem("f(a, 1)", 1); assertSame(b, glob); } - + // const int&& foo(); // int i; // struct A { double x; }; @@ -8171,7 +8092,7 @@ public class AST2CPPTests extends AST2BaseTest { f= bh.assertNonProblem("t8", 2); assertEquals("const double", ASTTypeUtil.getType(f.getType().getReturnType())); } - + // typedef int TInt; // void test() { // int a1= {}, a2{}; // Initializer for declarator @@ -8243,7 +8164,7 @@ public class AST2CPPTests extends AST2BaseTest { String code= getAboveComment(); parseAndCheckBindings(code, ParserLanguage.CPP); } - + // namespace std { // template<typename T> class initializer_list; // } @@ -8271,7 +8192,7 @@ public class AST2CPPTests extends AST2BaseTest { bh.assertProblem("f({1.0})", 1); bh.assertNonProblem("g({ \"foo\", \"bar\" })", 1); } - + // namespace std { // template<typename T> class initializer_list; // } @@ -8344,7 +8265,7 @@ public class AST2CPPTests extends AST2BaseTest { // not detected by CDT // bh.assertProblem("f({1.0})", 1); } - + // namespace std { // template<typename T> class initializer_list; // } @@ -8387,7 +8308,7 @@ public class AST2CPPTests extends AST2BaseTest { // // fG(1); // G(1) // fG({1}); // G(1) - // + // // new H(1); // H(G(1)) // new H({1}); // H(G(1)) or H(H(G(1))) // fH(1); // no conversion from int to H @@ -8475,10 +8396,10 @@ public class AST2CPPTests extends AST2BaseTest { public void testNewFunctionDeclaratorSyntax_305972() throws Exception { String code= getAboveComment(); BindingAssertionHelper bh= new BindingAssertionHelper(code, true); - + ICPPFunction f= bh.assertNonProblem("fpif1", 0); assertEquals("int (* (int))(int)", ASTTypeUtil.getType(f.getType())); - + f= bh.assertNonProblem("fpif2", 0); assertEquals("int (* (int))(int)", ASTTypeUtil.getType(f.getType())); } @@ -8492,7 +8413,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testScopedEnums_305975a() throws Exception { String code= getAboveComment(); BindingAssertionHelper bh= new BindingAssertionHelper(code, true); - + ICPPEnumeration e; ICPPBinding ei; e= bh.assertNonProblem("EScoped1", 0); @@ -8502,7 +8423,7 @@ public class AST2CPPTests extends AST2BaseTest { ei= bh.assertNonProblem("a1", 0); assertSame(e, ei.getOwner()); assertEquals(2, ei.getQualifiedName().length); - + e= bh.assertNonProblem("EScoped2", 0); assertTrue(e.isScoped()); assertEquals("short int", ASTTypeUtil.getType(e.getFixedType())); @@ -8510,7 +8431,7 @@ public class AST2CPPTests extends AST2BaseTest { ei= bh.assertNonProblem("a2", 0); assertSame(e, ei.getOwner()); assertEquals(2, ei.getQualifiedName().length); - + e= bh.assertNonProblem("EScoped3", 0); assertTrue(e.isScoped()); assertEquals("int", ASTTypeUtil.getType(e.getFixedType())); @@ -8538,14 +8459,6 @@ public class AST2CPPTests extends AST2BaseTest { assertDeclaration(e); } - private void assertDefinition(ICPPBinding b) { - assertTrue(((IASTName)((ICPPInternalBinding) b).getDefinition()).isDefinition()); - } - - private void assertDeclaration(ICPPBinding b) { - assertTrue(((IASTName)((ICPPInternalBinding) b).getDeclarations()[0]).isDeclaration()); - } - // enum class E { a, b }; // enum E x1 = E::a; // OK // enum F { a, b }; @@ -8583,7 +8496,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testScopedEnums_305975d() throws Exception { String code= getAboveComment(); BindingAssertionHelper bh= new BindingAssertionHelper(code, true); - + bh.assertNonProblem("fCol(Col::red)", 4); bh.assertProblem("fint(Col::red)", 4); bh.assertProblem("fbool(Col::red)", 5); @@ -8629,7 +8542,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testScopedEnums_305975f() throws Exception { String code= getAboveComment(); BindingAssertionHelper bh= new BindingAssertionHelper(code, true); - + bh.assertProblem("high;", -1); bh.assertProblem("xdir d", -2); bh.assertProblem("xl;", -1); @@ -8657,7 +8570,7 @@ public class AST2CPPTests extends AST2BaseTest { String code= getAboveComment(); parseAndCheckBindings(code); } - + // void f(int); // void f(unsigned int); // void test() { @@ -8676,7 +8589,7 @@ public class AST2CPPTests extends AST2BaseTest { b= bh.assertNonProblem("f(c32)", 1); assertSame(f2, b); } - + // int test() { // void (11); // return 42; @@ -8684,16 +8597,16 @@ public class AST2CPPTests extends AST2BaseTest { public void testCastToVoid_309155() throws Exception { String code= getAboveComment(); parseAndCheckBindings(code); - } - + } + // void test() { // void *libHandle (0); // } public void testCTorInitializerForVoidPtr_314113() throws Exception { String code= getAboveComment(); parseAndCheckBindings(code); - } - + } + // struct D {}; // struct C { // operator D(); @@ -8713,8 +8626,8 @@ public class AST2CPPTests extends AST2BaseTest { IFunction fint= bh.assertNonProblem("f(int)", 1); IFunction f= bh.assertNonProblem("f(c+1)", 1); assertSame(fint, f); - } - + } + // struct A { // operator long& (); // }; @@ -8732,10 +8645,10 @@ public class AST2CPPTests extends AST2BaseTest { IFunction f= bh.assertNonProblem("f(a= 1)", 1); assertSame(fA, f); } - - - - + + + + // struct X {}; // struct Y : X {}; // struct A { @@ -8752,24 +8665,24 @@ public class AST2CPPTests extends AST2BaseTest { ICPPMethod m1= helper.assertNonProblem("m(X*);//1", 1, ICPPMethod.class); ICPPMethod m2= helper.assertNonProblem("m();//2", 1, ICPPMethod.class); ICPPMethod m3= helper.assertNonProblem("m(Y*);//3", 1, ICPPMethod.class); - + assertTrue(ClassTypeHelper.isVirtual(m0)); assertTrue(ClassTypeHelper.isVirtual(m1)); assertTrue(ClassTypeHelper.isVirtual(m2)); assertFalse(ClassTypeHelper.isVirtual(m3)); - + assertFalse(ClassTypeHelper.isOverrider(m0, m0)); assertFalse(ClassTypeHelper.isOverrider(m0, m1)); - + assertFalse(ClassTypeHelper.isOverrider(m1, m0)); assertFalse(ClassTypeHelper.isOverrider(m1, m1)); - + assertTrue(ClassTypeHelper.isOverrider(m2, m0)); assertFalse(ClassTypeHelper.isOverrider(m2, m1)); - + assertFalse(ClassTypeHelper.isOverrider(m3, m0)); assertFalse(ClassTypeHelper.isOverrider(m3, m1)); - + ICPPMethod[] ors= ClassTypeHelper.findOverridden(m0); assertEquals(0, ors.length); ors= ClassTypeHelper.findOverridden(m1); @@ -8780,7 +8693,7 @@ public class AST2CPPTests extends AST2BaseTest { ors= ClassTypeHelper.findOverridden(m3); assertEquals(0, ors.length); } - + // struct X { // X(); // }; @@ -8790,11 +8703,11 @@ public class AST2CPPTests extends AST2BaseTest { public void testDefaultedAndDeletedFunctions_305978() throws Exception { String code= getAboveComment(); IASTTranslationUnit tu= parseAndCheckBindings(code); - + ICPPASTFunctionDefinition f= getDeclaration(tu, 1); assertTrue(f.isDefaulted()); assertFalse(f.isDeleted()); - + f= getDeclaration(tu, 2); assertFalse(f.isDefaulted()); assertTrue(f.isDeleted()); @@ -8802,7 +8715,7 @@ public class AST2CPPTests extends AST2BaseTest { f= getDeclaration(tu, 3); assertFalse(f.isDefaulted()); assertTrue(f.isDeleted()); - + BindingAssertionHelper bh= new BindingAssertionHelper(code, true); ICPPFunction fb= bh.assertNonProblem("X() =", 1); assertFalse(fb.isDeleted()); @@ -8813,14 +8726,14 @@ public class AST2CPPTests extends AST2BaseTest { fb= bh.assertNonProblem("g()", 1); assertTrue(fb.isDeleted()); } - + // const int b=12; // void f(int a= b) = delete ; public void testDefaultedAndDeletedFunctions_305978b() throws Exception { String code= getAboveComment(); parseAndCheckBindings(code); } - + // namespace ns { // struct S {}; // } @@ -8861,7 +8774,7 @@ public class AST2CPPTests extends AST2BaseTest { String code= getAboveComment(); parseAndCheckBindings(code); } - + // namespace ns { // inline namespace m { // int a; @@ -8875,7 +8788,7 @@ public class AST2CPPTests extends AST2BaseTest { String code= getAboveComment(); parseAndCheckBindings(code); } - + // namespace out { // void f(int); // } @@ -8901,7 +8814,7 @@ public class AST2CPPTests extends AST2BaseTest { IFunction fo= bh.assertNonProblem("f(int)", 1); IFunction g= bh.assertNonProblem("g(int)", 1); IFunction fi= bh.assertNonProblem("f(char)", 1); - + IFunction ref= bh.assertNonProblem("f(1)", 1); assertSame(fi, ref); ref= bh.assertNonProblem("g(1)", 1); @@ -8923,7 +8836,7 @@ public class AST2CPPTests extends AST2BaseTest { IFunction f2= bh.assertNonProblem("f() {", 1); assertSame(f1, f2); } - + // struct C { // void test() { // int a; @@ -8950,7 +8863,7 @@ public class AST2CPPTests extends AST2BaseTest { parseAndCheckBindings(code); } - + // template <typename T, typename C> void sort(T from, T to, C compare) {} // float abs(float f); // @@ -8963,7 +8876,7 @@ public class AST2CPPTests extends AST2BaseTest { String code= getAboveComment(); parseAndCheckBindings(code); } - + // typedef int MyType; // // void f(const MyType& val); @@ -8979,7 +8892,7 @@ public class AST2CPPTests extends AST2BaseTest { assertEquals("MyType &", ASTTypeUtil.getType(g.getType().getParameterTypes()[0], false)); assertEquals("int &", ASTTypeUtil.getType(g.getType().getParameterTypes()[0], true)); } - + // class container { // public: // void constBegin() const; @@ -8998,7 +8911,7 @@ public class AST2CPPTests extends AST2BaseTest { IFunction f= bh.assertNonProblem("constBegin(); //ref", 10); bh.assertProblem("begin(); //ref", 5); } - + // template <class T> class PE { // explicit operator bool() const; // }; @@ -9018,7 +8931,7 @@ public class AST2CPPTests extends AST2BaseTest { bh.assertProblem("fint(pe + pe);", 4); bh.assertNonProblem("fint(p + p);", 4); } - + // struct C { // C(const C& c) {} // }; @@ -9039,26 +8952,26 @@ public class AST2CPPTests extends AST2BaseTest { assertEquals(1, names.length); assertTrue(names[0].resolveBinding() instanceof ICPPConstructor); } - + // void g(char *); // void f(char *); // void f(const char *); // void testa() { // f("abc"); - // g("abc"); + // g("abc"); // } public void testRankingOfDeprecatedConversionOnStringLiteral() throws Exception { String code= getAboveComment(); BindingAssertionHelper bh= new BindingAssertionHelper(code, true); IFunction g= bh.assertNonProblem("g(char *)", 1); IFunction fconst= bh.assertNonProblem("f(const char *)", 1); - + IBinding ref= bh.assertNonProblem("f(\"abc\")", 1); assertSame(fconst, ref); ref= bh.assertNonProblem("g(\"abc\")", 1); assertSame(g, ref); } - + // struct A { // int m; // }; @@ -9078,7 +8991,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTTranslationUnit tu= parseAndCheckBindings(code); ICPPASTFunctionDefinition fdef= getDeclaration(tu, 5); IASTExpression expr; - + expr= getExpressionOfStatement(fdef, 0); assertEquals(XVALUE, expr.getValueCategory()); assertEquals("A", ASTTypeUtil.getType(expr.getExpressionType())); @@ -9100,7 +9013,7 @@ public class AST2CPPTests extends AST2BaseTest { assertEquals(LVALUE, expr.getValueCategory()); assertEquals("A", ASTTypeUtil.getType(expr.getExpressionType())); } - + // void f() { // int i; // int f1(); @@ -9116,7 +9029,7 @@ public class AST2CPPTests extends AST2BaseTest { BindingAssertionHelper bh= new BindingAssertionHelper(code, true); IFunction g1= bh.assertNonProblem("g(const int&)", 1); IFunction g2= bh.assertNonProblem("g(const int&&)", 1); - + IFunction ref; ref= bh.assertNonProblem("g(i);", 1); assertSame(g1, ref); @@ -9125,7 +9038,7 @@ public class AST2CPPTests extends AST2BaseTest { ref= bh.assertNonProblem("g(f2());", 1); assertSame(g2, ref); } - + // namespace std { // template<typename T> class initializer_list; // } @@ -9143,7 +9056,7 @@ public class AST2CPPTests extends AST2BaseTest { IFunction ctor1= bh.assertNonProblem("S(std::initializer_list<double>);", 1); IFunction ctor2= bh.assertNonProblem("S(std::initializer_list<int>);", 1); IFunction ctor3= bh.assertNonProblem("S();", 1); - + IASTName name; IASTImplicitNameOwner dtor; name= bh.findName("s1", 2); @@ -9156,7 +9069,7 @@ public class AST2CPPTests extends AST2BaseTest { dtor= (IASTImplicitNameOwner) name.getParent(); assertSame(ctor3, dtor.getImplicitNames()[0].resolveBinding()); } - + // namespace A { // inline namespace B { // namespace C { @@ -9170,7 +9083,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testInlineNamespaceLookup_324096() throws Exception { parseAndCheckBindings(); } - + // struct C { // operator int(); // }; @@ -9186,7 +9099,7 @@ public class AST2CPPTests extends AST2BaseTest { IBinding ref= bh.assertNonProblem("f(true ? c : 1)", 1); assertSame(f, ref); } - + // void f(char*); // void f(const char*); // void g(char*); @@ -9205,7 +9118,7 @@ public class AST2CPPTests extends AST2BaseTest { assertSame(fc, ref); bh.assertNonProblem("g(0 ? p : \"\")", 1); // } - + // struct C { // C(); // C(int a, int b); @@ -9221,7 +9134,7 @@ public class AST2CPPTests extends AST2BaseTest { BindingAssertionHelper bh= new BindingAssertionHelper(code, true); IFunction ctor1= bh.assertNonProblem("C();", 1); IFunction ctor2= bh.assertNonProblem("C(int a, int b);", 1); - + IASTName name; IASTImplicitNameOwner dtor; name= bh.findName("c1", 2); @@ -9258,7 +9171,7 @@ public class AST2CPPTests extends AST2BaseTest { ref= bh.assertNonProblem("g(&number)", 1); assertSame(g, ref); } - + // void f(int * __restrict* a) {} // void f(int ** a) {} // different function // @@ -9279,7 +9192,7 @@ public class AST2CPPTests extends AST2BaseTest { ref= bh.assertNonProblem("f(&number)", 1); assertSame(f2, ref); } - + // struct S { // class C {}; // }; @@ -9288,7 +9201,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testCVQualifiedClassName_328063() throws Exception { parseAndCheckBindings(); } - + // void test() { // int array[5] = { 1, 2, 3, 4, 5 }; // for (int& x : array) @@ -9297,7 +9210,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testRangeBasedForLoop_327223() throws Exception { parseAndCheckBindings(); } - + // struct A{}; // struct B : A {}; // struct C { @@ -9315,7 +9228,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testOverrideUsingDeclaredMethod_328802() throws Exception { parseAndCheckBindings(); } - + // class A { // A(int a = f()); // problem on f // static int f(); @@ -9323,7 +9236,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testFwdLookupForDefaultArgument() throws Exception { parseAndCheckBindings(); } - + // auto f2 (); // missing late return type. public void testBug332114a() throws Exception { BindingAssertionHelper bh= new BindingAssertionHelper(getAboveComment(), true); @@ -9331,7 +9244,7 @@ public class AST2CPPTests extends AST2BaseTest { // Must not throw a NPE IndexCPPSignatureUtil.getSignature(b); } - + // enum E: short; // enum E: short; // enum E: short {e1, e2}; @@ -9350,7 +9263,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testAutoTypeInRangeBasedFor_332883a() throws Exception { parseAndCheckBindings(); } - + // struct S { // void f(); // }; @@ -9367,7 +9280,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testAutoTypeInRangeBasedFor_332883b() throws Exception { parseAndCheckBindings(); } - + // namespace std { // template <class T1, class T2> struct pair { // T1 first; @@ -9419,7 +9332,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testMemberInitializer_333200() throws Exception { parseAndCheckBindings(); } - + // template <typename T, typename U> auto add(T t, U u) -> decltype(t + u); // template <typename T, typename U> auto add(T t, U u) -> decltype(t + u) { // return t + u; @@ -9427,7 +9340,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testResolutionInTrailingReturnType_333256() throws Exception { parseAndCheckBindings(); } - + // struct CHAINER { // CHAINER const & operator,(int x) const; // }; @@ -9438,7 +9351,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testOverloadedCommaOpWithConstClassRef_334955() throws Exception { parseAndCheckBindings(); } - + // struct OK {int ok;}; // struct NOK {}; // @@ -9455,7 +9368,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testOverloadedOperatorWithInheritanceDistance_335387() throws Exception { parseAndCheckBindings(); } - + // namespace ns {int a;} // using ns::a; public void testPropertyOfUsingDeclaration() throws Exception { @@ -9467,7 +9380,7 @@ public class AST2CPPTests extends AST2BaseTest { assertTrue(qn.isDeclaration()); assertTrue(qn.getLastName().isDeclaration()); } - + // struct S{ // void foo(){} // }; @@ -9478,7 +9391,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testMemberAccessForArray_347298() throws Exception { parseAndCheckBindings(); } - + // struct X {}; // struct Y : X { // Y(){} @@ -9492,26 +9405,26 @@ public class AST2CPPTests extends AST2BaseTest { public void testReferenceToCopyConstructor() throws Exception { IASTTranslationUnit tu= parseAndCheckBindings(); ICPPASTFunctionDefinition fdef= getDeclaration(tu, 2); - - IASTDeclarationStatement dst= getStatement(fdef, 0); + + IASTDeclarationStatement dst= getStatement(fdef, 0); IASTDeclarator dtor= ((IASTSimpleDeclaration) dst.getDeclaration()).getDeclarators()[0]; IBinding ctor= ((IASTImplicitNameOwner) dtor).getImplicitNames()[0].resolveBinding(); assertTrue(ctor instanceof ICPPConstructor); assertEquals(0, ((ICPPConstructor) ctor).getType().getParameterTypes().length); - dst= getStatement(fdef, 1); + dst= getStatement(fdef, 1); dtor= ((IASTSimpleDeclaration) dst.getDeclaration()).getDeclarators()[0]; ctor= ((IASTImplicitNameOwner) dtor).getImplicitNames()[0].resolveBinding(); assertTrue(ctor instanceof ICPPConstructor); assertEquals(1, ((ICPPConstructor) ctor).getType().getParameterTypes().length); - dst= getStatement(fdef, 2); + dst= getStatement(fdef, 2); dtor= ((IASTSimpleDeclaration) dst.getDeclaration()).getDeclarators()[0]; ctor= ((IASTImplicitNameOwner) dtor).getImplicitNames()[0].resolveBinding(); assertTrue(ctor instanceof ICPPConstructor); assertEquals(1, ((ICPPConstructor) ctor).getType().getParameterTypes().length); } - + // struct Foo { // void Method(int) {} // void Method() const {} @@ -9527,7 +9440,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testTypedefAsClassNameWithFunctionPtrArgument_350345() throws Exception { parseAndCheckBindings(); } - + // int func1(int input) { // return input; // } @@ -9577,7 +9490,7 @@ public class AST2CPPTests extends AST2BaseTest { assertNotSame(g1, g2); assertSame(g2, g3); } - + // class A : A { // }; @@ -9586,7 +9499,7 @@ public class AST2CPPTests extends AST2BaseTest { ICPPClassType c= bh.assertNonProblem("A", 1); assertEquals(0, ClassTypeHelper.getPureVirtualMethods(c).length); } - + // template <typename T> struct CT1 {}; // template <typename T> struct CT2 {}; // typedef char Tdef; @@ -9598,7 +9511,7 @@ public class AST2CPPTests extends AST2BaseTest { public void testAmbiguityResolution_Bug359364() throws Exception { parseAndCheckBindings(); } - + // template<typename T> struct C { // C(const C<T>& c) {} // }; @@ -9622,11 +9535,11 @@ public class AST2CPPTests extends AST2BaseTest { ctors = c.getConstructors(); assertEquals(1, ctors.length); assertFalse(ctors[0].isImplicit()); - + IBinding ctor= bh.assertNonProblem("E(){}", 1); assertTrue(ctor instanceof ICPPConstructor); } - + // struct S; // struct S { // S(); @@ -9639,7 +9552,7 @@ public class AST2CPPTests extends AST2BaseTest { IASTCompositeTypeSpecifier S; IASTProblemDeclaration p; IASTSimpleDeclaration s; - + S= getCompositeType(tu, 1); s= getDeclaration(S, 0); s= getDeclaration(S, 1); |