diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPSpecFailingTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPSpecFailingTest.java index f3152eacb42..c87c6af041f 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPSpecFailingTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPSpecFailingTest.java @@ -28,7 +28,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { #define arraycheck(a,b) a[b] || b[a] --End Example] */ - public void test2_3s2() { // TODO Devin exists bug 64993 + public void test2_3s2() { // TODO exists bug 64993 StringBuffer buffer = new StringBuffer(); buffer.append("??=define arraycheck(a,b) a??(b??) ??!??! b??(a??)\n"); //$NON-NLS-1$ buffer.append("// becomes\n"); //$NON-NLS-1$ @@ -62,7 +62,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { // violates the ODR --End Example] */ - public void test3_2s5() { // TODO Devin raised bug 90602 + public void test3_2s5() { // TODO raised bug 90602 StringBuffer buffer = new StringBuffer(); buffer.append("// translation unit 1:\n"); //$NON-NLS-1$ buffer.append("struct X {\n"); //$NON-NLS-1$ @@ -110,7 +110,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { }; --End Example] */ - public void test3_3_6s5() { // TODO Devin raised bug 90606 + public void test3_3_6s5() { // TODO raised bug 90606 StringBuffer buffer = new StringBuffer(); buffer.append("typedef int c;\n"); //$NON-NLS-1$ buffer.append("enum { i = 1 };\n"); //$NON-NLS-1$ @@ -151,7 +151,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { }; --End Example] */ - public void test3_4_1s10() { // TODO Devin raised bug 90609 + public void test3_4_1s10() { // TODO raised bug 90609 StringBuffer buffer = new StringBuffer(); buffer.append("struct A {\n"); //$NON-NLS-1$ buffer.append("typedef int AT;\n"); //$NON-NLS-1$ @@ -183,7 +183,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { // not to: C::X C::arr[C::number]; --End Example] */ - public void test3_4_3s3() { // TODO Devin raised bug 90610 + public void test3_4_3s3() { // TODO raised bug 90610 StringBuffer buffer = new StringBuffer(); buffer.append("class X { };\n"); //$NON-NLS-1$ buffer.append("class C {\n"); //$NON-NLS-1$ @@ -233,7 +233,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { } --End Example] */ - public void test3_4_3_2s3() { // TODO Devin raised bug 90611 + public void test3_4_3_2s3() { // TODO raised bug 90611 StringBuffer buffer = new StringBuffer(); buffer.append("namespace A {\n"); //$NON-NLS-1$ buffer.append("int a;\n"); //$NON-NLS-1$ @@ -282,7 +282,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { } --End Example] */ - public void test6_4s3() { // TODO Devin raised bug 90618 + public void test6_4s3() { // TODO raised bug 90618 StringBuffer buffer = new StringBuffer(); buffer.append("int foo() {\n"); //$NON-NLS-1$ buffer.append("if (int x = f()) {\n"); //$NON-NLS-1$ @@ -316,7 +316,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { T(g)(h,2); //declaration --End Example] */ - public void test6_8s2() { // TODO Devin raised bug 90622 + public void test6_8s2() { // TODO raised bug 90622 StringBuffer buffer = new StringBuffer(); buffer.append("class T {\n"); //$NON-NLS-1$ buffer.append("// ...\n"); //$NON-NLS-1$ @@ -347,7 +347,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { typedef I I; --End Example] */ - public void test7_1_3s2() { // TODO Devin raised bug 90623 + public void test7_1_3s2() { // TODO raised bug 90623 StringBuffer buffer = new StringBuffer(); buffer.append("typedef struct s { //\n"); //$NON-NLS-1$ buffer.append("} s;\n"); //$NON-NLS-1$ @@ -391,7 +391,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { } --End Example] */ - public void test7_3_3s10() { // TODO Devin raised bug 90626 + public void test7_3_3s10() { // TODO raised bug 90626 StringBuffer buffer = new StringBuffer(); buffer.append("namespace A {\n"); //$NON-NLS-1$ buffer.append("int x;\n"); //$NON-NLS-1$ @@ -438,7 +438,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { } --End Example] */ - public void test8_2s3() { // TODO Devin raised bug 90640 + public void test8_2s3() { // TODO raised bug 90640 StringBuffer buffer = new StringBuffer(); buffer.append("// #include \n"); //$NON-NLS-1$ buffer.append("char *p;\n"); //$NON-NLS-1$ @@ -465,7 +465,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { S y; // expression (illformed) --End Example] */ - public void test8_2s4() { // TODO Devin raised bug 90632 + public void test8_2s4() { // TODO raised bug 90632 StringBuffer buffer = new StringBuffer(); buffer.append("template \n"); //$NON-NLS-1$ buffer.append("struct S {\n"); //$NON-NLS-1$ @@ -492,7 +492,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { } --End Example] */ - public void test8_2s7a() { // TODO Devin raised bug 90633 + public void test8_2s7a() { // TODO raised bug 90633 StringBuffer buffer = new StringBuffer(); buffer.append("class C { };\n"); //$NON-NLS-1$ buffer.append("void f(int(C)) { } // void f(int (*fp)(C c)) { }\n"); //$NON-NLS-1$ @@ -517,7 +517,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { int c(b); --End Example] */ - public void test8_5s2() { // TODO Devin raised bug 90641 + public void test8_5s2() { // TODO raised bug 90641 StringBuffer buffer = new StringBuffer(); buffer.append("int f(int);\n"); //$NON-NLS-1$ buffer.append("int a = 2;\n"); //$NON-NLS-1$ @@ -535,7 +535,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { char msg[] = "Syntax error on line %s\n"; --End Example] */ - public void test8_5_2s1() { // TODO Devin raised bug 90647 + public void test8_5_2s1() { // TODO raised bug 90647 StringBuffer buffer = new StringBuffer(); buffer.append("char msg[] = \"Syntax error on line %s\n\";\n"); //$NON-NLS-1$ try { @@ -563,7 +563,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { } --End Example] */ - public void test8_5_3s1() { // TODO Devin raised bug 90648 + public void test8_5_3s1() { // TODO raised bug 90648 StringBuffer buffer = new StringBuffer(); buffer.append("int g(int);\n"); //$NON-NLS-1$ buffer.append("void f()\n"); //$NON-NLS-1$ @@ -598,7 +598,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { } --End Example] */ - public void test9_5s2() { // TODO Devin raised bug 90650 + public void test9_5s2() { // TODO raised bug 90650 StringBuffer buffer = new StringBuffer(); buffer.append("void f()\n"); //$NON-NLS-1$ buffer.append("{\n"); //$NON-NLS-1$ @@ -627,7 +627,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { } --End Example] */ - public void test10_2s3b() { // TODO Devin raised bug 90652 + public void test10_2s3b() { // TODO raised bug 90652 StringBuffer buffer = new StringBuffer(); buffer.append("struct U { static int i; };\n"); //$NON-NLS-1$ buffer.append("struct V : U { };\n"); //$NON-NLS-1$ @@ -656,7 +656,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { } --End Example] */ - public void test12s1() { // TODO Devin raised bug 90653 + public void test12s1() { // TODO raised bug 90653 StringBuffer buffer = new StringBuffer(); buffer.append("struct A { }; // implicitlydeclared A::operator=\n"); //$NON-NLS-1$ buffer.append("struct B : A {\n"); //$NON-NLS-1$ @@ -691,7 +691,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { int c = X(a); // OK: a.operator X().operator int() --End Example] */ - public void test12_3s4() { // TODO Devin raised bug 90654 + public void test12_3s4() { // TODO raised bug 90654 StringBuffer buffer = new StringBuffer(); buffer.append("class X {\n"); //$NON-NLS-1$ buffer.append("// ...\n"); //$NON-NLS-1$ @@ -735,7 +735,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { }; --End Example] */ - public void test12_7s2() { // TODO Devin raised bug 90664 + public void test12_7s2() { // TODO raised bug 90664 StringBuffer buffer = new StringBuffer(); buffer.append("struct A { };\n"); //$NON-NLS-1$ buffer.append("struct B : virtual A { };\n"); //$NON-NLS-1$ @@ -772,7 +772,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { // better than short ® float. --End Example] */ - public void test13_3_3_2s3c() { // TODO Devin raised bug 90667 + public void test13_3_3_2s3c() { // TODO raised bug 90667 StringBuffer buffer = new StringBuffer(); buffer.append("struct A {\n"); //$NON-NLS-1$ buffer.append("operator short();\n"); //$NON-NLS-1$ @@ -802,7 +802,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { } --End Example] */ - public void test13_4s5a() { // TODO Devin raised bug 90674 + public void test13_4s5a() { // TODO raised bug 90674 StringBuffer buffer = new StringBuffer(); buffer.append("int f(double);\n"); //$NON-NLS-1$ buffer.append("int f(int);\n"); //$NON-NLS-1$ @@ -833,7 +833,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { S z; // OK due to both adjustment and conversion --End Example] */ - public void test14_1s8() { // TODO Devin raised bug 90668 + public void test14_1s8() { // TODO raised bug 90668 StringBuffer buffer = new StringBuffer(); buffer.append("template struct R { };\n"); //$NON-NLS-1$ buffer.append("template struct S { };\n"); //$NON-NLS-1$ @@ -856,7 +856,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { template void f(T* p = new T); --End Example] */ - public void test14_1s13() { // TODO Devin raised bug 60670 + public void test14_1s13() { // TODO raised bug 60670 StringBuffer buffer = new StringBuffer(); buffer.append("template class X { };\n"); //$NON-NLS-1$ buffer.append("template void f(T* p = new T);\n"); //$NON-NLS-1$ @@ -877,7 +877,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { } --End Example] */ - public void test14_3s2() { // TODO Devin raised bug 90671 + public void test14_3s2() { // TODO raised bug 90671 StringBuffer buffer = new StringBuffer(); buffer.append("template void f();\n"); //$NON-NLS-1$ buffer.append("template void f();\n"); //$NON-NLS-1$ @@ -903,7 +903,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { } --End Example] */ - public void test14_3s5() { // TODO Devin raised bug 90672 + public void test14_3s5() { // TODO raised bug 90672 StringBuffer buffer = new StringBuffer(); buffer.append("template struct A {\n"); //$NON-NLS-1$ buffer.append("~A();\n"); //$NON-NLS-1$ @@ -937,7 +937,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { A<&f> a; // selects f(int) --End Example] */ - public void test14_3_2s5() { // TODO Devin raised bug 90673 + public void test14_3_2s5() { // TODO raised bug 90673 StringBuffer buffer = new StringBuffer(); buffer.append("template struct X { };\n"); //$NON-NLS-1$ buffer.append("int ai[10];\n"); //$NON-NLS-1$ @@ -968,7 +968,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { template T X::s = 0; --End Example] */ - public void test14_5_1_3s1() { // TODO Devin no bug raised on this, can't reproduce in AST View + public void test14_5_1_3s1() { // TODO no bug raised on this, can't reproduce in AST View StringBuffer buffer = new StringBuffer(); buffer.append("template class X {\n"); //$NON-NLS-1$ buffer.append("static T s;\n"); //$NON-NLS-1$ @@ -997,7 +997,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { }; --End Example] */ - public void test14_5_3s1() { // TODO Devin raised bug 90678 + public void test14_5_3s1() { // TODO raised bug 90678 StringBuffer buffer = new StringBuffer(); buffer.append("template class task;\n"); //$NON-NLS-1$ buffer.append("template task* preempt(task*);\n"); //$NON-NLS-1$ @@ -1030,7 +1030,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { }; --End Example] */ - public void test14_5_3s6() { // TODO Devin raised bug 90678 + public void test14_5_3s6() { // TODO raised bug 90678 StringBuffer buffer = new StringBuffer(); buffer.append("template struct A {\n"); //$NON-NLS-1$ buffer.append("struct B { };\n"); //$NON-NLS-1$ @@ -1060,7 +1060,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { A::C::B absip; // uses partial specialization --End Example] */ - public void test14_5_4s6() { // TODO Devin raised bug 90678 + public void test14_5_4s6() { // TODO raised bug 90678 StringBuffer buffer = new StringBuffer(); buffer.append("template struct A {\n"); //$NON-NLS-1$ buffer.append("class C {\n"); //$NON-NLS-1$ @@ -1091,7 +1091,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { // the using declaration which refers to the primary template --End Example] */ - public void test14_5_4s7() { // TODO Devin raised bug 90678 + public void test14_5_4s7() { // TODO raised bug 90678 StringBuffer buffer = new StringBuffer(); buffer.append("namespace N {\n"); //$NON-NLS-1$ buffer.append("template class A { }; // primary template\n"); //$NON-NLS-1$ @@ -1121,7 +1121,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { A::B abci; // uses #1 --End Example] */ - public void test14_5_4_3s2() { // TODO Devin raised bug 90681 + public void test14_5_4_3s2() { // TODO raised bug 90681 StringBuffer buffer = new StringBuffer(); buffer.append("template struct A {\n"); //$NON-NLS-1$ buffer.append("template struct B {}; // #1\n"); //$NON-NLS-1$ @@ -1156,7 +1156,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { } --End Example] */ - public void test14_5_5_1s1() { // TODO Devin raised bug 90682 + public void test14_5_5_1s1() { // TODO raised bug 90682 StringBuffer buffer = new StringBuffer(); buffer.append("// file1.c \n"); //$NON-NLS-1$ buffer.append("template\n"); //$NON-NLS-1$ @@ -1186,7 +1186,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { template A f(A, A); // different from #1 --End Example] */ - public void test14_5_5_1s5() { // TODO Devin raised bug 90683 + public void test14_5_5_1s5() { // TODO raised bug 90683 StringBuffer buffer = new StringBuffer(); buffer.append("template A f(A, A); // #1\n"); //$NON-NLS-1$ buffer.append("template A f(A, A); // same as #1\n"); //$NON-NLS-1$ @@ -1204,7 +1204,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { template void f(A); // same as #1 --End Example] */ - public void test14_5_5_1s6() { // TODO Devin raised bug 90683 + public void test14_5_5_1s6() { // TODO raised bug 90683 StringBuffer buffer = new StringBuffer(); buffer.append("template void f(A); // #1\n"); //$NON-NLS-1$ buffer.append("template void f(A); // same as #1\n"); //$NON-NLS-1$ @@ -1228,7 +1228,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { } --End Example] */ - public void test14_5_5_2s6() { // TODO Devin raised bug 90684 + public void test14_5_5_2s6() { // TODO raised bug 90684 StringBuffer buffer = new StringBuffer(); buffer.append("template void f(T); // #1\n"); //$NON-NLS-1$ buffer.append("template void f(T*, int=1); // #2\n"); //$NON-NLS-1$ @@ -1255,7 +1255,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { }; --End Example] */ - public void test14_6_1s1() { // TODO Devin can not reproduce IProblemBinding via DOMAST View + public void test14_6_1s1() { // TODO can not reproduce IProblemBinding via DOMAST View StringBuffer buffer = new StringBuffer(); buffer.append("template class X {\n"); //$NON-NLS-1$ buffer.append("X* p; // meaning X\n"); //$NON-NLS-1$ @@ -1275,7 +1275,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { template void f(T* p = new T); --End Example] */ - public void test14_6_1s3a() { // TODO Devin already have bug on this one + public void test14_6_1s3a() { // TODO already have bug on this one StringBuffer buffer = new StringBuffer(); buffer.append("template class X { };\n"); //$NON-NLS-1$ buffer.append("template void f(T* p = new T);\n"); //$NON-NLS-1$ @@ -1299,7 +1299,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { } --End Example] */ - public void test14_6_1s6() { // TODO Devin raised bug 90686 + public void test14_6_1s6() { // TODO raised bug 90686 StringBuffer buffer = new StringBuffer(); buffer.append("namespace N {\n"); //$NON-NLS-1$ buffer.append("class C { };\n"); //$NON-NLS-1$ @@ -1328,7 +1328,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { }; --End Example] */ - public void test14_6_2s3() { // TODO Devin this doesn't compile via g++ ? + public void test14_6_2s3() { // TODO this doesn't compile via g++ ? StringBuffer buffer = new StringBuffer(); buffer.append("typedef double A;\n"); //$NON-NLS-1$ buffer.append("template B {\n"); //$NON-NLS-1$ @@ -1355,7 +1355,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { X bb; --End Example] */ - public void test14_7s6() { // TODO Devin can't reproduce via ASTDOM View + public void test14_7s6() { // TODO can't reproduce via ASTDOM View StringBuffer buffer = new StringBuffer(); buffer.append("template class X {\n"); //$NON-NLS-1$ buffer.append("static T s;\n"); //$NON-NLS-1$ @@ -1385,7 +1385,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { }; --End Example] */ - public void test14_7_1s5() { // TODO Devin already have similar bug + public void test14_7_1s5() { // TODO already have similar bug StringBuffer buffer = new StringBuffer(); buffer.append("template struct S {\n"); //$NON-NLS-1$ buffer.append("operator int();\n"); //$NON-NLS-1$ @@ -1425,7 +1425,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { } --End Example] */ - public void test14_7_1s10() { // TODO Devin already have similar bug + public void test14_7_1s10() { // TODO already have similar bug StringBuffer buffer = new StringBuffer(); buffer.append("namespace N {\n"); //$NON-NLS-1$ buffer.append("template class List {\n"); //$NON-NLS-1$ @@ -1461,7 +1461,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { }; --End Example] */ - public void test14_7_1s14() { // TODO Devin can't reproduce via DOMAST View + public void test14_7_1s14() { // TODO can't reproduce via DOMAST View StringBuffer buffer = new StringBuffer(); buffer.append("template class X {\n"); //$NON-NLS-1$ buffer.append("X* p; // OK\n"); //$NON-NLS-1$ @@ -1484,7 +1484,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { template void sort<>(Array&); --End Example] */ - public void test14_7_2s6() { // TODO Devin raised bug 90689 + public void test14_7_2s6() { // TODO raised bug 90689 StringBuffer buffer = new StringBuffer(); buffer.append("template class Array { };\n"); //$NON-NLS-1$ buffer.append("template void sort(Array& v);\n"); //$NON-NLS-1$ @@ -1506,7 +1506,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { template<> void sort(Array&) ; --End Example] */ - public void test14_7_3s1() { // TODO Devin have similar bug + public void test14_7_3s1() { // TODO have similar bug StringBuffer buffer = new StringBuffer(); buffer.append("template class stream;\n"); //$NON-NLS-1$ buffer.append("template<> class stream { };\n"); //$NON-NLS-1$ @@ -1528,7 +1528,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { template<> int g<>(int) { } // OK: not inline --End Example] */ - public void test14_7_3s14() { // TODO Devin similar bug already + public void test14_7_3s14() { // TODO similar bug already StringBuffer buffer = new StringBuffer(); buffer.append("template void f(T) { }\n"); //$NON-NLS-1$ buffer.append("template inline T g(T) { }\n"); //$NON-NLS-1$ @@ -1563,7 +1563,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { template<> void A::h(int) { } --End Example] */ - public void test14_7_3s16() { // TODO Devin similar bug already + public void test14_7_3s16() { // TODO similar bug already StringBuffer buffer = new StringBuffer(); buffer.append("template struct A {\n"); //$NON-NLS-1$ buffer.append("void f(T);\n"); //$NON-NLS-1$ @@ -1601,7 +1601,7 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { template<> template<> void A::B::mf() { }; --End Example] */ - public void test14_7_3s17() { // TODO Devin doesn't compile via g++ + public void test14_7_3s17() { // TODO doesn't compile via g++ StringBuffer buffer = new StringBuffer(); buffer.append("template class A {\n"); //$NON-NLS-1$ buffer.append("template class B {\n"); //$NON-NLS-1$ 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 b8a4c867934..0d6260be676 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 @@ -3413,5 +3413,101 @@ public class AST2CPPTests extends AST2BaseTest { assertSame( x.getType(), X ); assertEquals( problem.getID(), IProblemBinding.SEMANTIC_INVALID_REDEFINITION ); } + + public void testOperatorNames() throws Exception { + StringBuffer buffer = new StringBuffer(); + buffer.append("struct C { \n"); //$NON-NLS-1$ + buffer.append(" void* operator new [ ] (unsigned int);\n"); //$NON-NLS-1$ + buffer.append(" void* operator new (unsigned int);\n"); //$NON-NLS-1$ + buffer.append(" void operator delete [ ] ( void * ); \n"); //$NON-NLS-1$ + buffer.append(" void operator delete (void *);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator+=(const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator -= (const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator *= (const C&);\n"); //$NON-NLS-1$ + buffer.append(" cosnt C& operator /= (const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator %= (const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator^=(const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator&= (const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator |= (const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator >>=(const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator<<= (const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator<<(const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator>>(const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator /**/ == /**/ (const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator != /**/ (const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator <= (const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator /**/ >=(const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator =(const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator&& (const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator ||(const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator ++(const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator-- (const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator/**/,/**/(const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator->*\n(const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator -> (const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator /**/ ( /**/ ) /**/ (const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator /**/ [ /**/ ] /**/ (const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator + (const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator- (const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator *(const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator /(const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator % /**/(const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator ^(const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator &(const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator |(const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator ~ (const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator \t\r\n ! /**/ (const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator <(const C&);\n"); //$NON-NLS-1$ + buffer.append(" const C& operator>(const C&);\n"); //$NON-NLS-1$ + buffer.append("}; \n"); //$NON-NLS-1$ + + IASTTranslationUnit tu = parse(buffer.toString(), 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$ + assertEquals(col.getName(5).toString(), "operator delete[]"); //$NON-NLS-1$ + assertEquals(col.getName(7).toString(), "operator delete"); //$NON-NLS-1$ + assertEquals(col.getName(10).toString(), "operator +="); //$NON-NLS-1$ + assertEquals(col.getName(14).toString(), "operator -="); //$NON-NLS-1$ + assertEquals(col.getName(18).toString(), "operator *="); //$NON-NLS-1$ + assertEquals(col.getName(22).toString(), "operator /="); //$NON-NLS-1$ + assertEquals(col.getName(26).toString(), "operator %="); //$NON-NLS-1$ + assertEquals(col.getName(30).toString(), "operator ^="); //$NON-NLS-1$ + assertEquals(col.getName(34).toString(), "operator &="); //$NON-NLS-1$ + assertEquals(col.getName(38).toString(), "operator |="); //$NON-NLS-1$ + assertEquals(col.getName(42).toString(), "operator >>="); //$NON-NLS-1$ + assertEquals(col.getName(46).toString(), "operator <<="); //$NON-NLS-1$ + assertEquals(col.getName(50).toString(), "operator <<"); //$NON-NLS-1$ + assertEquals(col.getName(54).toString(), "operator >>"); //$NON-NLS-1$ + assertEquals(col.getName(58).toString(), "operator =="); //$NON-NLS-1$ + assertEquals(col.getName(62).toString(), "operator !="); //$NON-NLS-1$ + assertEquals(col.getName(66).toString(), "operator <="); //$NON-NLS-1$ + assertEquals(col.getName(70).toString(), "operator >="); //$NON-NLS-1$ + assertEquals(col.getName(74).toString(), "operator ="); //$NON-NLS-1$ + assertEquals(col.getName(78).toString(), "operator &&"); //$NON-NLS-1$ + assertEquals(col.getName(82).toString(), "operator ||"); //$NON-NLS-1$ + assertEquals(col.getName(86).toString(), "operator ++"); //$NON-NLS-1$ + assertEquals(col.getName(90).toString(), "operator --"); //$NON-NLS-1$ + assertEquals(col.getName(94).toString(), "operator ,"); //$NON-NLS-1$ + assertEquals(col.getName(98).toString(), "operator ->*"); //$NON-NLS-1$ + assertEquals(col.getName(102).toString(), "operator ->"); //$NON-NLS-1$ + assertEquals(col.getName(106).toString(), "operator ()"); //$NON-NLS-1$ + assertEquals(col.getName(110).toString(), "operator []"); //$NON-NLS-1$ + assertEquals(col.getName(114).toString(), "operator +"); //$NON-NLS-1$ + assertEquals(col.getName(118).toString(), "operator -"); //$NON-NLS-1$ + assertEquals(col.getName(122).toString(), "operator *"); //$NON-NLS-1$ + assertEquals(col.getName(126).toString(), "operator /"); //$NON-NLS-1$ + assertEquals(col.getName(130).toString(), "operator %"); //$NON-NLS-1$ + assertEquals(col.getName(134).toString(), "operator ^"); //$NON-NLS-1$ + assertEquals(col.getName(138).toString(), "operator &"); //$NON-NLS-1$ + assertEquals(col.getName(142).toString(), "operator |"); //$NON-NLS-1$ + assertEquals(col.getName(146).toString(), "operator ~"); //$NON-NLS-1$ + assertEquals(col.getName(150).toString(), "operator !"); //$NON-NLS-1$ + assertEquals(col.getName(154).toString(), "operator <"); //$NON-NLS-1$ + assertEquals(col.getName(158).toString(), "operator >"); //$NON-NLS-1$ + } } diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2SpecBaseTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2SpecBaseTest.java index a4fb2e31705..a2de5eeeb0b 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2SpecBaseTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2SpecBaseTest.java @@ -26,7 +26,6 @@ import org.eclipse.cdt.core.parser.NullLogService; import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserMode; import org.eclipse.cdt.core.parser.ScannerInfo; -import org.eclipse.cdt.core.parser.tests.ast2.AST2BaseTest.CPPNameCollector; import org.eclipse.cdt.internal.core.dom.parser.ISourceCodeParser; import org.eclipse.cdt.internal.core.dom.parser.c.ANSICParserExtensionConfiguration; import org.eclipse.cdt.internal.core.dom.parser.c.CVisitor; @@ -72,8 +71,8 @@ public class AST2SpecBaseTest extends TestCase { } private IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems, boolean checkSemantics, boolean checkBindings ) throws ParserException { - // TODO Devin beef this up with tests... i.e. run once with \n, and then run again with \r\n replacing \n ... etc - // TODO Devin another example might be to replace all characters with corresponding trigraph/digraph tests... + // TODO beef this up with tests... i.e. run once with \n, and then run again with \r\n replacing \n ... etc + // TODO another example might be to replace all characters with corresponding trigraph/digraph tests... CodeReader codeReader = new CodeReader(code.toCharArray()); return parse(codeReader, lang, useGNUExtensions, expectNoProblems, checkSemantics, checkBindings); @@ -134,12 +133,12 @@ public class AST2SpecBaseTest extends TestCase { CPPNameResolver res = new CPPNameResolver(); tu.accept( res ); if (res.foundProblemBinding) - throw new ParserException("found IProblemBinding"); + throw new ParserException("found IProblemBinding"); //$NON-NLS-1$ } else if (lang == ParserLanguage.C ) { CNameResolver res = new CNameResolver(); tu.accept( res ); if (res.foundProblemBinding) - throw new ParserException("found IProblemBinding"); + throw new ParserException("found IProblemBinding"); //$NON-NLS-1$ } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTOperatorName.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTOperatorName.java index 39895ba541e..282632f3c35 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTOperatorName.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTOperatorName.java @@ -18,5 +18,90 @@ import org.eclipse.cdt.core.dom.ast.IASTName; * @author dsteffle */ public interface ICPPASTOperatorName extends IASTName { - + public static final String OPERATOR = "operator "; //$NON-NLS-1$ + + public static final String OP_GT = ">"; //$NON-NLS-1$ + public static final char[] OPERATOR_GT = new String(OPERATOR + OP_GT).toCharArray(); + public static final String OP_LT = "<"; //$NON-NLS-1$ + public static final char[] OPERATOR_LT = new String(OPERATOR + OP_LT).toCharArray(); + public static final String OP_NOT = "!"; //$NON-NLS-1$ + public static final char[] OPERATOR_NOT = new String(OPERATOR + OP_NOT).toCharArray(); + public static final String OP_COMPL = "~"; //$NON-NLS-1$ + public static final char[] OPERATOR_COMPL = new String(OPERATOR + OP_COMPL).toCharArray(); + public static final String OP_BITOR = "|"; //$NON-NLS-1$ + public static final char[] OPERATOR_BITOR = new String(OPERATOR + OP_BITOR).toCharArray(); + public static final String OP_AMPER = "&"; //$NON-NLS-1$ + public static final char[] OPERATOR_AMPER = new String(OPERATOR + OP_AMPER).toCharArray(); + public static final String OP_XOR = "^"; //$NON-NLS-1$ + public static final char[] OPERATOR_XOR = new String(OPERATOR + OP_XOR).toCharArray(); + public static final String OP_MOD = "%"; //$NON-NLS-1$ + public static final char[] OPERATOR_MOD = new String(OPERATOR + OP_MOD).toCharArray(); + public static final String OP_DIV = "/"; //$NON-NLS-1$ + public static final char[] OPERATOR_DIV = new String(OPERATOR + OP_DIV).toCharArray(); + public static final String OP_STAR = "*"; //$NON-NLS-1$ + public static final char[] OPERATOR_STAR = new String(OPERATOR + OP_STAR).toCharArray(); + public static final String OP_PLUS = "+"; //$NON-NLS-1$ + public static final char[] OPERATOR_PLUS = new String(OPERATOR + OP_PLUS).toCharArray(); + public static final String OP_BRACKET = "[]"; //$NON-NLS-1$ + public static final char[] OPERATOR_BRACKET = new String(OPERATOR + OP_BRACKET).toCharArray(); + public static final String OP_PAREN = "()"; //$NON-NLS-1$ + public static final char[] OPERATOR_PAREN = new String(OPERATOR + OP_PAREN).toCharArray(); + public static final String OP_ARROW = "->"; //$NON-NLS-1$ + public static final char[] OPERATOR_ARROW = new String(OPERATOR + OP_ARROW).toCharArray(); + public static final String OP_ARROWSTAR = "->*"; //$NON-NLS-1$ + public static final char[] OPERATOR_ARROWSTAR = new String(OPERATOR + OP_ARROWSTAR).toCharArray(); + public static final String OP_COMMA = ","; //$NON-NLS-1$ + public static final char[] OPERATOR_COMMA = new String(OPERATOR + OP_COMMA).toCharArray(); + public static final String OP_MINUS = "-"; //$NON-NLS-1$ + public static final char[] OPERATOR_MINUS = new String(OPERATOR + OP_MINUS).toCharArray(); + public static final String OP_DECR = "--"; //$NON-NLS-1$ + public static final char[] OPERATOR_DECR = new String(OPERATOR + OP_DECR).toCharArray(); + public static final String OP_INCR = "++"; //$NON-NLS-1$ + public static final char[] OPERATOR_INCR = new String(OPERATOR + OP_INCR).toCharArray(); + public static final String OP_OR = "||"; //$NON-NLS-1$ + public static final char[] OPERATOR_OR = new String(OPERATOR + OP_OR).toCharArray(); + public static final String OP_AND = "&&"; //$NON-NLS-1$ + public static final char[] OPERATOR_AND = new String(OPERATOR + OP_AND).toCharArray(); + public static final String OP_ASSIGN = "="; //$NON-NLS-1$ + public static final char[] OPERATOR_ASSIGN = new String(OPERATOR + OP_ASSIGN).toCharArray(); + public static final String OP_GTEQUAL = ">="; //$NON-NLS-1$ + public static final char[] OPERATOR_GTEQUAL = new String(OPERATOR + OP_GTEQUAL).toCharArray(); + public static final String OP_LTEQUAL = "<="; //$NON-NLS-1$ + public static final char[] OPERATOR_LTEQUAL = new String(OPERATOR + OP_LTEQUAL).toCharArray(); + public static final String OP_NOTEQUAL = "!="; //$NON-NLS-1$ + public static final char[] OPERATOR_NOTEQUAL = new String(OPERATOR + OP_NOTEQUAL).toCharArray(); + public static final String OP_EQUAL = "=="; //$NON-NLS-1$ + public static final char[] OPERATOR_EQUAL = new String(OPERATOR + OP_EQUAL).toCharArray(); + public static final String OP_SHIFTR = ">>"; //$NON-NLS-1$ + public static final char[] OPERATOR_SHIFTR = new String(OPERATOR + OP_SHIFTR).toCharArray(); + public static final String OP_SHIFTL = "<<"; //$NON-NLS-1$ + public static final char[] OPERATOR_SHIFTL = new String(OPERATOR + OP_SHIFTL).toCharArray(); + public static final String OP_SHIFTL_ASSIGN = "<<="; //$NON-NLS-1$ + public static final char[] OPERATOR_SHIFTL_ASSIGN = new String(OPERATOR + OP_SHIFTL_ASSIGN).toCharArray(); + public static final String OP_SHIFTR_ASSIGN = ">>="; //$NON-NLS-1$ + public static final char[] OPERATOR_SHIFTR_ASSIGN = new String(OPERATOR + OP_SHIFTR_ASSIGN).toCharArray(); + public static final String OP_BITOR_ASSIGN = "|="; //$NON-NLS-1$ + public static final char[] OPERATOR_BITOR_ASSIGN = new String(OPERATOR + OP_BITOR_ASSIGN).toCharArray(); + public static final String OP_AMPER_ASSIGN = "&="; //$NON-NLS-1$ + public static final char[] OPERATOR_AMPER_ASSIGN = new String(OPERATOR + OP_AMPER_ASSIGN).toCharArray(); + public static final String OP_XOR_ASSIGN = "^="; //$NON-NLS-1$ + public static final char[] OPERATOR_XOR_ASSIGN = new String(OPERATOR + OP_XOR_ASSIGN).toCharArray(); + public static final String OP_MOD_ASSIGN = "%="; //$NON-NLS-1$ + public static final char[] OPERATOR_MOD_ASSIGN = new String(OPERATOR + OP_MOD_ASSIGN).toCharArray(); + public static final String OP_DIV_ASSIGN = "/="; //$NON-NLS-1$ + public static final char[] OPERATOR_DIV_ASSIGN = new String(OPERATOR + OP_DIV_ASSIGN).toCharArray(); + public static final String OP_STAR_ASSIGN = "*="; //$NON-NLS-1$ + public static final char[] OPERATOR_STAR_ASSIGN = new String(OPERATOR + OP_STAR_ASSIGN).toCharArray(); + public static final String OP_MINUS_ASSIGN = "-="; //$NON-NLS-1$ + public static final char[] OPERATOR_MINUS_ASSIGN = new String(OPERATOR + OP_MINUS_ASSIGN).toCharArray(); + public static final String OP_PLUS_ASSIGN = "+="; //$NON-NLS-1$ + public static final char[] OPERATOR_PLUS_ASSIGN = new String(OPERATOR + OP_PLUS_ASSIGN).toCharArray(); + public static final String OP_NEW = "new"; //$NON-NLS-1$ + public static final char[] OPERATOR_NEW = new String(OPERATOR + OP_NEW).toCharArray(); + public static final String OP_DELETE_ARRAY = "delete[]"; //$NON-NLS-1$ + public static final char[] OPERATOR_DELETE_ARRAY = new String(OPERATOR + OP_DELETE_ARRAY).toCharArray(); + public static final String OP_DELETE = "delete"; //$NON-NLS-1$ + public static final char[] OPERATOR_DELETE = new String(OPERATOR + OP_DELETE).toCharArray(); + public static final String OP_NEW_ARRAY = "new[]"; //$NON-NLS-1$ + public static final char[] OPERATOR_NEW_ARRAY = new String(OPERATOR + OP_NEW_ARRAY).toCharArray(); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTOperatorName.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTOperatorName.java index af3a5d21628..4201ef54f2b 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTOperatorName.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTOperatorName.java @@ -18,11 +18,159 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTOperatorName; * @author dsteffle */ public class CPPASTOperatorName extends CPPASTName implements ICPPASTOperatorName { + private static final int FIRST_CHAR_AFTER_OPERATOR = 8; + + private static final String LBRACKET = "["; //$NON-NLS-1$ + private static final String RBRACKET = "]"; //$NON-NLS-1$ + private static final String LPAREN = "("; //$NON-NLS-1$ + private static final String RPAREN = ")"; //$NON-NLS-1$ + + private boolean wasSet=false; + + /** + * Default constructor. + * + */ public CPPASTOperatorName() { super(); } + /** + * Primary consturctor that should be used to initialize the CPPASTOperatorName. + * @param name the char[] name to initialize to + */ public CPPASTOperatorName(char[] name) { super(name); + wasSet=true; + super.setName(enforceOpStandard(super.toString())); + } + + /** + * Returns the char[] of the name and ensures that the name will be standardized + * so that it will be of the form "operator op". + * @return + */ + public char[] toCharArray() { + if (!wasSet) { + super.setName(enforceOpStandard(super.toString())); + wasSet=true; + } + + return super.toCharArray(); + } + + /** + * Returns the String of the name and ensures that the name will be standardized + * so that it will be of the form "operator op". + * @return + */ + public String toString() { + if (!wasSet) { + super.setName(enforceOpStandard(super.toString())); + wasSet=true; + } + + return super.toString(); + } + + /** + * Sets the name of this CPPASTOperatorName and ensures that the name follows + * the standard "operator op". + * @param name + */ + public void setName(char[] name) { + super.setName(enforceOpStandard(new String(name))); + wasSet=true; + } + + private char[] enforceOpStandard(String name) { + // need to use indexOf (could optimize by skipping the first 8 chars?) + if (name.indexOf(OP_NEW, FIRST_CHAR_AFTER_OPERATOR) >=FIRST_CHAR_AFTER_OPERATOR && name.indexOf(LBRACKET, FIRST_CHAR_AFTER_OPERATOR) >=FIRST_CHAR_AFTER_OPERATOR && name.indexOf(RBRACKET, FIRST_CHAR_AFTER_OPERATOR) >=FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_NEW_ARRAY; + } else if (name.indexOf(OP_DELETE, FIRST_CHAR_AFTER_OPERATOR) >=FIRST_CHAR_AFTER_OPERATOR && name.indexOf(LBRACKET, FIRST_CHAR_AFTER_OPERATOR) >=FIRST_CHAR_AFTER_OPERATOR && name.indexOf(RBRACKET, FIRST_CHAR_AFTER_OPERATOR) >=FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_DELETE_ARRAY; + } else if (name.indexOf(OP_NEW, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_NEW; + } else if (name.indexOf(OP_DELETE, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_DELETE; + } else if (name.indexOf(OP_PLUS_ASSIGN, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_PLUS_ASSIGN; + } else if (name.indexOf(OP_MINUS_ASSIGN, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_MINUS_ASSIGN; + } else if (name.indexOf(OP_STAR_ASSIGN, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_STAR_ASSIGN; + } else if (name.indexOf(OP_DIV_ASSIGN, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_DIV_ASSIGN; + } else if (name.indexOf(OP_MOD_ASSIGN, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_MOD_ASSIGN; + } else if (name.indexOf(OP_XOR_ASSIGN, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_XOR_ASSIGN; + } else if (name.indexOf(OP_AMPER_ASSIGN, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_AMPER_ASSIGN; + } else if (name.indexOf(OP_BITOR_ASSIGN, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_BITOR_ASSIGN; + } else if (name.indexOf(OP_SHIFTR_ASSIGN, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_SHIFTR_ASSIGN; + } else if (name.indexOf(OP_SHIFTL_ASSIGN, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_SHIFTL_ASSIGN; + } else if (name.indexOf(OP_SHIFTL, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_SHIFTL; + } else if (name.indexOf(OP_SHIFTR, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_SHIFTR; + } else if (name.indexOf(OP_EQUAL, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_EQUAL; + } else if (name.indexOf(OP_NOTEQUAL, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_NOTEQUAL; + } else if (name.indexOf(OP_LTEQUAL, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_LTEQUAL; + } else if (name.indexOf(OP_GTEQUAL, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_GTEQUAL; + } else if (name.indexOf(OP_ASSIGN, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_ASSIGN; + } else if (name.indexOf(OP_AND, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_AND; + } else if (name.indexOf(OP_OR, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_OR; + } else if (name.indexOf(OP_INCR, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_INCR; + } else if (name.indexOf(OP_DECR, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_DECR; + } else if (name.indexOf(OP_COMMA, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_COMMA; + } else if (name.indexOf(OP_ARROWSTAR, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_ARROWSTAR; + } else if (name.indexOf(OP_ARROW, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_ARROW; + } else if (name.indexOf(LPAREN, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR && name.indexOf(RPAREN, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_PAREN; + } else if (name.indexOf(LBRACKET, FIRST_CHAR_AFTER_OPERATOR) >=FIRST_CHAR_AFTER_OPERATOR && name.indexOf(RBRACKET, FIRST_CHAR_AFTER_OPERATOR) >=FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_BRACKET; + } else if (name.indexOf(OP_PLUS, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_PLUS; + } else if (name.indexOf(OP_MINUS, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_MINUS; + } else if (name.indexOf(OP_STAR, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_STAR; + } else if (name.indexOf(OP_DIV, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_DIV; + } else if (name.indexOf(OP_MOD, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_MOD; + } else if (name.indexOf(OP_XOR, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_XOR; + } else if (name.indexOf(OP_AMPER, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_AMPER; + } else if (name.indexOf(OP_BITOR, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_BITOR; + } else if (name.indexOf(OP_COMPL, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_COMPL; + } else if (name.indexOf(OP_NOT, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_NOT; + } else if (name.indexOf(OP_LT, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_LT; + } else if (name.indexOf(OP_GT, FIRST_CHAR_AFTER_OPERATOR) >= FIRST_CHAR_AFTER_OPERATOR) { + return OPERATOR_GT; + } + + return name.toCharArray(); } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassScope.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassScope.java index f4a3b691a41..ac98c321865 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassScope.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassScope.java @@ -26,6 +26,7 @@ import org.eclipse.cdt.core.dom.ast.IProblemBinding; import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNewExpression; +import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTOperatorName; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTQualifiedName; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateId; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassScope; @@ -93,7 +94,7 @@ public class CPPClassScope extends CPPScope implements ICPPClassScope { //copy assignment operator: A& operator = ( const A & ) IType refType = new CPPReferenceType( clsType ); - m = new CPPImplicitMethod( this, "operator =".toCharArray(), refType, ps ); //$NON-NLS-1$ + m = new CPPImplicitMethod( this, ICPPASTOperatorName.OPERATOR_ASSIGN, refType, ps ); //$NON-NLS-1$ implicits[2] = m; addBinding( m );