mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-24 09:25:31 +02:00
Replaced StringBuffer with StringBuilder.
This commit is contained in:
parent
36442384d4
commit
64f529b3ec
3 changed files with 1099 additions and 1102 deletions
|
@ -32,7 +32,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test4s6() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("#ifdef __STDC_IEC_559__ /* FE_UPWARD defined */\n"); //$NON-NLS-1$
|
||||
buffer.append("fesetround(FE_UPWARD);\n"); //$NON-NLS-1$
|
||||
buffer.append("#endif\n"); //$NON-NLS-1$
|
||||
|
@ -46,7 +46,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test5_1_1_3s2() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("char i;\n"); //$NON-NLS-1$
|
||||
buffer.append("int i;\n"); //$NON-NLS-1$
|
||||
parseCandCPP(buffer.toString(), false, 0);
|
||||
|
@ -61,7 +61,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test5_1_2_3s10() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f() {\n"); //$NON-NLS-1$
|
||||
buffer.append("char c1, c2;\n"); //$NON-NLS-1$
|
||||
buffer.append("c1 = c1 + c2;\n"); //$NON-NLS-1$
|
||||
|
@ -79,7 +79,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test5_1_2_3s11() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f() {\n"); //$NON-NLS-1$
|
||||
buffer.append("float f1, f2;\n"); //$NON-NLS-1$
|
||||
buffer.append("double d;\n"); //$NON-NLS-1$
|
||||
|
@ -99,7 +99,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test5_1_2_3s12() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f() {\n"); //$NON-NLS-1$
|
||||
buffer.append("double d1, d2;\n"); //$NON-NLS-1$
|
||||
buffer.append("float f;\n"); //$NON-NLS-1$
|
||||
|
@ -121,7 +121,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test5_1_2_3s13() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f() {\n"); //$NON-NLS-1$
|
||||
buffer.append("double x, y, z;\n"); //$NON-NLS-1$
|
||||
buffer.append("x = (x * y) * z; // not equivalent tox *= y * z;\n"); //$NON-NLS-1$
|
||||
|
@ -145,7 +145,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test5_1_2_3s14() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f() {\n"); //$NON-NLS-1$
|
||||
buffer.append("int a, b;\n"); //$NON-NLS-1$
|
||||
buffer.append("a = a + 32760 + b + 5;\n"); //$NON-NLS-1$
|
||||
|
@ -169,7 +169,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test5_1_2_3s15() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("//#include <stdio.h>\n"); //$NON-NLS-1$
|
||||
buffer.append("int f() {");
|
||||
buffer.append("int sum;\n"); //$NON-NLS-1$
|
||||
|
@ -186,7 +186,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_2_5s28() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("struct tag (* a[5])(float);\n"); //$NON-NLS-1$
|
||||
parseCandCPP(buffer.toString(), false, 0);
|
||||
}
|
||||
|
@ -199,7 +199,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_2_7s5() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f(int (*)(), double (*)[3]);\n"); //$NON-NLS-1$
|
||||
buffer.append("int f(int (*)(char *), double (*)[]);\n"); //$NON-NLS-1$
|
||||
buffer.append("int f(int (*)(char *), double (*)[3]);\n"); //$NON-NLS-1$
|
||||
|
@ -214,7 +214,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_4_4_4s12() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("char x='\\023';\n"); //$NON-NLS-1$
|
||||
buffer.append("char y='\\0';\n"); //$NON-NLS-1$
|
||||
buffer.append("char z='\\x13';\n"); //$NON-NLS-1$
|
||||
|
@ -234,7 +234,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_5_2_2s12() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f1() {}\n"); //$NON-NLS-1$
|
||||
buffer.append("int f2() {}\n"); //$NON-NLS-1$
|
||||
buffer.append("int f3() {}\n"); //$NON-NLS-1$
|
||||
|
@ -263,7 +263,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_5_2_3s7() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("struct s { int i; const int ci; };\n"); //$NON-NLS-1$
|
||||
buffer.append("struct s s;\n"); //$NON-NLS-1$
|
||||
buffer.append("const struct s cs;\n"); //$NON-NLS-1$
|
||||
|
@ -305,7 +305,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_5_2_3s8a() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("union {\n"); //$NON-NLS-1$
|
||||
buffer.append("struct {\n"); //$NON-NLS-1$
|
||||
buffer.append("int alltypes;\n"); //$NON-NLS-1$
|
||||
|
@ -351,7 +351,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_5_2_3s8b() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("struct t1 { int m; };\n"); //$NON-NLS-1$
|
||||
buffer.append("struct t2 { int m; };\n"); //$NON-NLS-1$
|
||||
buffer.append("int f(struct t1 * p1, struct t2 * p2)\n"); //$NON-NLS-1$
|
||||
|
@ -377,7 +377,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_5_2_5s9() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int *p = (int []){2, 4};\n"); //$NON-NLS-1$
|
||||
parse(buffer.toString(), ParserLanguage.C, true, 0);
|
||||
}
|
||||
|
@ -392,7 +392,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_5_2_5s10() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("void f(void)\n"); //$NON-NLS-1$
|
||||
buffer.append("{\n"); //$NON-NLS-1$
|
||||
buffer.append("int *p;\n"); //$NON-NLS-1$
|
||||
|
@ -412,7 +412,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_5_2_5s11() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f(){\n"); //$NON-NLS-1$
|
||||
buffer.append("drawline((struct point){.x=1, .y=1},\n"); //$NON-NLS-1$
|
||||
buffer.append("(struct point){.x=3, .y=4});\n"); //$NON-NLS-1$
|
||||
|
@ -430,7 +430,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_5_2_5s12() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f() {\n"); //$NON-NLS-1$
|
||||
buffer.append("(const float []){1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6};\n"); //$NON-NLS-1$
|
||||
buffer.append("}\n"); //$NON-NLS-1$
|
||||
|
@ -447,7 +447,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_5_2_5s13() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f() {\n"); //$NON-NLS-1$
|
||||
buffer.append("\"/tmp/fileXXXXXX\";\n"); //$NON-NLS-1$
|
||||
buffer.append("(char []){\"/tmp/fileXXXXXX\"};\n"); //$NON-NLS-1$
|
||||
|
@ -464,7 +464,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_5_2_5s14() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f() {\n"); //$NON-NLS-1$
|
||||
buffer.append("(const char []){\"abc\"} == \"abc\";\n"); //$NON-NLS-1$
|
||||
buffer.append("}\n"); //$NON-NLS-1$
|
||||
|
@ -481,7 +481,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_5_2_5s15() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f() {\n"); //$NON-NLS-1$
|
||||
buffer.append("struct int_list { int car; struct int_list *cdr; };\n"); //$NON-NLS-1$
|
||||
buffer.append("struct int_list endless_zeros = {0, &endless_zeros};\n"); //$NON-NLS-1$
|
||||
|
@ -505,7 +505,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_5_2_5s16() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("struct s { int i; };\n"); //$NON-NLS-1$
|
||||
buffer.append("int f (void)\n"); //$NON-NLS-1$
|
||||
buffer.append("{\n"); //$NON-NLS-1$
|
||||
|
@ -526,7 +526,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_5_3_4s5() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("extern void *alloc(size_t);\n"); //$NON-NLS-1$
|
||||
buffer.append("double *dp = alloc(sizeof *dp);\n"); //$NON-NLS-1$
|
||||
parseCandCPP(buffer.toString(), false, 0);
|
||||
|
@ -541,7 +541,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_5_3_4s6() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f() {\n"); //$NON-NLS-1$
|
||||
buffer.append("int array[5];\n"); //$NON-NLS-1$
|
||||
buffer.append("int x = sizeof array / sizeof array[0];\n"); //$NON-NLS-1$
|
||||
|
@ -562,7 +562,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_5_6s10() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f() {\n"); //$NON-NLS-1$
|
||||
buffer.append("int n = 4, m = 3;\n"); //$NON-NLS-1$
|
||||
buffer.append("int a[n][m];\n"); //$NON-NLS-1$
|
||||
|
@ -587,7 +587,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_5_15s8() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f() {\n"); //$NON-NLS-1$
|
||||
buffer.append("const void *c_vp;\n"); //$NON-NLS-1$
|
||||
buffer.append("void *vp;\n"); //$NON-NLS-1$
|
||||
|
@ -610,7 +610,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_5_16_1s5() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f() {\n"); //$NON-NLS-1$
|
||||
buffer.append("char c;\n"); //$NON-NLS-1$
|
||||
buffer.append("int i;\n"); //$NON-NLS-1$
|
||||
|
@ -633,7 +633,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_5_16_1s6() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f() {\n"); //$NON-NLS-1$
|
||||
buffer.append("const char **cpp;\n"); //$NON-NLS-1$
|
||||
buffer.append("char *p;\n"); //$NON-NLS-1$
|
||||
|
@ -657,7 +657,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_2_1s17() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
// offsetoff is a macro defined in stddef.h, using GNU definition
|
||||
buffer.append("#define offsetof(TYPE, MEMBER) ((size_t) (&((TYPE *)0)->MEMBER))\n");
|
||||
|
||||
|
@ -682,7 +682,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_2_1s18a() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f() {\n"); //$NON-NLS-1$
|
||||
buffer.append("struct s *s1;\n"); //$NON-NLS-1$
|
||||
buffer.append("struct s *s2;\n"); //$NON-NLS-1$
|
||||
|
@ -699,7 +699,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_2_1s18b() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("struct { int n; double d[8]; } *s1;\n"); //$NON-NLS-1$
|
||||
buffer.append("struct { int n; double d[5]; } *s2;\n"); //$NON-NLS-1$
|
||||
parseCandCPP(buffer.toString(), true, 0);
|
||||
|
@ -718,7 +718,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_2_2s5() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f() {\n"); //$NON-NLS-1$
|
||||
buffer.append("enum hue { chartreuse, burgundy, claret=20, winedark };\n"); //$NON-NLS-1$
|
||||
buffer.append("enum hue col, *cp;\n"); //$NON-NLS-1$
|
||||
|
@ -740,7 +740,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_2_3s9() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("struct tnode {\n"); //$NON-NLS-1$
|
||||
buffer.append("int count;\n"); //$NON-NLS-1$
|
||||
buffer.append("struct tnode *left, *right;\n"); //$NON-NLS-1$
|
||||
|
@ -760,7 +760,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_2_3s10() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("typedef struct tnode TNODE;\n"); //$NON-NLS-1$
|
||||
buffer.append("struct tnode {\n"); //$NON-NLS-1$
|
||||
buffer.append("int count;\n"); //$NON-NLS-1$
|
||||
|
@ -778,7 +778,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_2_3s11() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("struct s2;\n"); //$NON-NLS-1$
|
||||
buffer.append("struct s1 { struct s2 *s2p; }; // D1\n"); //$NON-NLS-1$
|
||||
buffer.append("struct s2 { struct s1 *s1p; }; // D2\n"); //$NON-NLS-1$
|
||||
|
@ -791,7 +791,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_3s10() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("extern const volatile int real_time_clock;\n"); //$NON-NLS-1$
|
||||
parseCandCPP(buffer.toString(), true, 0);
|
||||
}
|
||||
|
@ -815,7 +815,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_3s11() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f() {\n"); //$NON-NLS-1$
|
||||
buffer.append("const struct s { int mem; } cs = { 1 };\n"); //$NON-NLS-1$
|
||||
buffer.append("struct s ncs; // the object ncs is modifiable\n"); //$NON-NLS-1$
|
||||
|
@ -841,7 +841,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_3_1s7() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int * restrict a;\n"); //$NON-NLS-1$
|
||||
buffer.append("int * restrict b;\n"); //$NON-NLS-1$
|
||||
buffer.append("extern int c[];\n"); //$NON-NLS-1$
|
||||
|
@ -858,7 +858,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_3_1s8() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("void f(int n, int * restrict p, int * restrict q)\n"); //$NON-NLS-1$
|
||||
buffer.append("{\n"); //$NON-NLS-1$
|
||||
buffer.append("while (n-- > 0)\n"); //$NON-NLS-1$
|
||||
|
@ -883,7 +883,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_3_1s9() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("void f(int n, int * restrict p, int * restrict q)\n"); //$NON-NLS-1$
|
||||
buffer.append("{\n"); //$NON-NLS-1$
|
||||
buffer.append("while (n-- > 0)\n"); //$NON-NLS-1$
|
||||
|
@ -909,7 +909,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_3_1s10() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("void h(int n, int * restrict p, int * restrict q, int * restrict r)\n"); //$NON-NLS-1$
|
||||
buffer.append("{\n"); //$NON-NLS-1$
|
||||
buffer.append("int i;\n"); //$NON-NLS-1$
|
||||
|
@ -936,7 +936,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_3_1s11() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f()\n"); //$NON-NLS-1$
|
||||
buffer.append("{\n"); //$NON-NLS-1$
|
||||
buffer.append("int * restrict p1;\n"); //$NON-NLS-1$
|
||||
|
@ -965,7 +965,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_3_1s12() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("typedef struct { int n; float * restrict v; } vector;\n"); //$NON-NLS-1$
|
||||
buffer.append("vector new_vector(int n)\n"); //$NON-NLS-1$
|
||||
buffer.append("{\n"); //$NON-NLS-1$
|
||||
|
@ -995,7 +995,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_4s7() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("inline double fahr(double t)\n"); //$NON-NLS-1$
|
||||
buffer.append("{\n"); //$NON-NLS-1$
|
||||
buffer.append("return (9.0 * t) / 5.0 + 32.0;\n"); //$NON-NLS-1$
|
||||
|
@ -1021,7 +1021,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_5_1s4() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("const int *ptr_to_constant;\n"); //$NON-NLS-1$
|
||||
buffer.append("int *const constant_ptr1;\n"); //$NON-NLS-1$
|
||||
buffer.append("typedef int *int_ptr;\n"); //$NON-NLS-1$
|
||||
|
@ -1035,7 +1035,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_5_2s7() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("float fa[11], *afp[17];\n"); //$NON-NLS-1$
|
||||
parseCandCPP(buffer.toString(), true, 0);
|
||||
}
|
||||
|
@ -1047,7 +1047,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_5_2s8() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("extern int *x;\n"); //$NON-NLS-1$
|
||||
buffer.append("extern int y[];\n"); //$NON-NLS-1$
|
||||
parseCandCPP(buffer.toString(), true, 0);
|
||||
|
@ -1070,7 +1070,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_5_2s9() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("extern int n;\n"); //$NON-NLS-1$
|
||||
buffer.append("extern int m;\n"); //$NON-NLS-1$
|
||||
buffer.append("void fcompat(void)\n"); //$NON-NLS-1$
|
||||
|
@ -1110,7 +1110,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_5_2s10() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("extern int n;\n"); //$NON-NLS-1$
|
||||
buffer.append("int A[n]; // invalid: file scope VLA\n"); //$NON-NLS-1$
|
||||
buffer.append("extern int (*p2)[n]; // invalid: file scope VM\n"); //$NON-NLS-1$
|
||||
|
@ -1139,7 +1139,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_5_3s16() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f(void), *fip(), (*pfi)();\n"); //$NON-NLS-1$
|
||||
parseCandCPP(buffer.toString(), true, 0);
|
||||
}
|
||||
|
@ -1150,7 +1150,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_5_3s18() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int (*apfi[3])(int *x, int *y);\n"); //$NON-NLS-1$
|
||||
parseCandCPP(buffer.toString(), true, 0);
|
||||
}
|
||||
|
@ -1161,7 +1161,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_5_3s19() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int (*fpfi(int (*)(long), int))(int, ...);\n"); //$NON-NLS-1$
|
||||
parseCandCPP(buffer.toString(), true, 0);
|
||||
}
|
||||
|
@ -1187,7 +1187,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_5_3s20() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("void addscalar(int n, int m,\n"); //$NON-NLS-1$
|
||||
buffer.append("double a[n][n*m+300], double x);\n"); //$NON-NLS-1$
|
||||
buffer.append("int main()\n"); //$NON-NLS-1$
|
||||
|
@ -1222,7 +1222,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_5_3s21() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("double maximum1(int n, int m, double a[n][m]);\n"); //$NON-NLS-1$
|
||||
buffer.append("double maximum2(int n, int m, double a[*][*]);\n"); //$NON-NLS-1$
|
||||
buffer.append("double maximum3(int n, int m, double a[ ][*]);\n"); //$NON-NLS-1$
|
||||
|
@ -1245,7 +1245,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_7s4() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("typedef int MILES, KLICKSP();\n"); //$NON-NLS-1$
|
||||
buffer.append("typedef struct { double hi, lo; } range;\n"); //$NON-NLS-1$
|
||||
buffer.append("MILES distance;\n"); //$NON-NLS-1$
|
||||
|
@ -1262,7 +1262,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_7s5() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("typedef struct s1 { int x; } t1, *tp1;\n"); //$NON-NLS-1$
|
||||
buffer.append("typedef struct s2 { int x; } t2, *tp2;\n"); //$NON-NLS-1$
|
||||
parseCandCPP(buffer.toString(), true, 0);
|
||||
|
@ -1277,7 +1277,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_7s7() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("typedef void fv(int), (*pfv)(int);\n"); //$NON-NLS-1$
|
||||
buffer.append("void (*signal(int, void (*)(int)))(int);\n"); //$NON-NLS-1$
|
||||
buffer.append("fv *signal(int, fv *);\n"); //$NON-NLS-1$
|
||||
|
@ -1299,7 +1299,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_7s8() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("void copyt(int n)\n"); //$NON-NLS-1$
|
||||
buffer.append("{\n"); //$NON-NLS-1$
|
||||
buffer.append("typedef int B[n]; // B is n ints, n evaluated now\n"); //$NON-NLS-1$
|
||||
|
@ -1319,7 +1319,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_8s24() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int i = 3.5;\n"); //$NON-NLS-1$
|
||||
buffer.append("complex c = 5 + 3 * I;\n"); //$NON-NLS-1$
|
||||
parseCandCPP(buffer.toString(), false, 0);
|
||||
|
@ -1331,7 +1331,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_8s25() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int x[] = { 1, 3, 5 };\n"); //$NON-NLS-1$
|
||||
parseCandCPP(buffer.toString(), true, 0);
|
||||
}
|
||||
|
@ -1346,7 +1346,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_8s26a() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int y[4][3] = {\n"); //$NON-NLS-1$
|
||||
buffer.append("{ 1, 3, 5 },\n"); //$NON-NLS-1$
|
||||
buffer.append("{ 2, 4, 6 },\n"); //$NON-NLS-1$
|
||||
|
@ -1363,7 +1363,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_8s26b() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int y[4][3] = {\n"); //$NON-NLS-1$
|
||||
buffer.append("1, 3, 5, 2, 4, 6, 3, 5, 7\n"); //$NON-NLS-1$
|
||||
buffer.append("};\n"); //$NON-NLS-1$
|
||||
|
@ -1378,7 +1378,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_8s27() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int z[4][3] = {\n"); //$NON-NLS-1$
|
||||
buffer.append("{ 1 }, { 2 }, { 3 }, { 4 }\n"); //$NON-NLS-1$
|
||||
buffer.append("};\n"); //$NON-NLS-1$
|
||||
|
@ -1391,7 +1391,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_8s28() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("struct { int a[3], b; } w[] = { { 1 }, 2 };\n"); //$NON-NLS-1$
|
||||
parseCandCPP(buffer.toString(), true, 0);
|
||||
}
|
||||
|
@ -1423,7 +1423,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_8s29() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("short q1[4][3][2] = {\n"); //$NON-NLS-1$
|
||||
buffer.append("{ 1 },\n"); //$NON-NLS-1$
|
||||
buffer.append("{ 2, 3 },\n"); //$NON-NLS-1$
|
||||
|
@ -1457,7 +1457,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_8s31() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("typedef int A[]; // OK - declared with block scope\n"); //$NON-NLS-1$
|
||||
buffer.append("A a1 = { 1, 2 }, b1 = { 3, 4, 5 };\n"); //$NON-NLS-1$
|
||||
buffer.append("int a2[] = { 1, 2 }, b2[] = { 3, 4, 5 };\n"); //$NON-NLS-1$
|
||||
|
@ -1475,7 +1475,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_8s32() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int foo() {\n"); //$NON-NLS-1$
|
||||
buffer.append("char s1[] = \"abc\", t1[3] = \"abc\";\n"); //$NON-NLS-1$
|
||||
buffer.append("char s2[] = { 'a', 'b', 'c', '\0' },\n"); //$NON-NLS-1$
|
||||
|
@ -1495,7 +1495,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_8s33() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("enum { member_one, member_two };\n"); //$NON-NLS-1$
|
||||
buffer.append("const char *nm[] = {\n"); //$NON-NLS-1$
|
||||
buffer.append("[member_two] = \"member two\",\n"); //$NON-NLS-1$
|
||||
|
@ -1510,7 +1510,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_8s34() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("div_t answer = { .quot = 2, .rem = -1 };\n"); //$NON-NLS-1$
|
||||
parse(buffer.toString(), ParserLanguage.C, true, 1); // div_t (correctly) cannot be resolved
|
||||
}
|
||||
|
@ -1522,7 +1522,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_8s35() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("struct { int a[3], b; } w[] =\n"); //$NON-NLS-1$
|
||||
buffer.append("{ [0].a = {1}, [1].a[0] = 2 };\n"); //$NON-NLS-1$
|
||||
parse(buffer.toString(), ParserLanguage.C, true, 0);
|
||||
|
@ -1537,7 +1537,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_8s36() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int MAX=15;\n"); //$NON-NLS-1$
|
||||
buffer.append("int a[MAX] = {\n"); //$NON-NLS-1$
|
||||
buffer.append("1, 3, 5, 7, 9, [MAX-5] = 8, 6, 4, 2, 0\n"); //$NON-NLS-1$
|
||||
|
@ -1551,7 +1551,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_8s38() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("union { int any_member; } u = { .any_member = 42 };\n"); //$NON-NLS-1$
|
||||
parse(buffer.toString(), ParserLanguage.C, true, 0);
|
||||
}
|
||||
|
@ -1565,7 +1565,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_8_3s4() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int p(int);\n"); //$NON-NLS-1$
|
||||
buffer.append("int f() {\n"); //$NON-NLS-1$
|
||||
buffer.append("(void)p(0);\n"); //$NON-NLS-1$
|
||||
|
@ -1583,7 +1583,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_8_3s5() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f() {\n"); //$NON-NLS-1$
|
||||
buffer.append("char *s;\n"); //$NON-NLS-1$
|
||||
buffer.append("while (*s++ != '\0')\n"); //$NON-NLS-1$
|
||||
|
@ -1608,7 +1608,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_8_3s6() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f() {\n"); //$NON-NLS-1$
|
||||
buffer.append("int i=1;\n"); //$NON-NLS-1$
|
||||
buffer.append("while (i) {\n"); //$NON-NLS-1$
|
||||
|
@ -1640,7 +1640,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_8_4s7() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f(int a) {}\n"); //$NON-NLS-1$
|
||||
buffer.append("int g(int expr) {\n"); //$NON-NLS-1$
|
||||
buffer.append("switch (expr)\n"); //$NON-NLS-1$
|
||||
|
@ -1674,7 +1674,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_8_6_1s3() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f() {\n"); //$NON-NLS-1$
|
||||
buffer.append("goto first_time;\n"); //$NON-NLS-1$
|
||||
buffer.append("for (;;) {\n"); //$NON-NLS-1$
|
||||
|
@ -1710,7 +1710,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_8_6_1s4() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f() {\n"); //$NON-NLS-1$
|
||||
buffer.append("goto lab3; // invalid: going INTO scope of VLA.\n"); //$NON-NLS-1$
|
||||
buffer.append("{\n"); //$NON-NLS-1$
|
||||
|
@ -1751,7 +1751,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_8_6_4s4() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("struct s { double i; } f(void);\n"); //$NON-NLS-1$
|
||||
buffer.append("union {\n"); //$NON-NLS-1$
|
||||
buffer.append("struct {\n"); //$NON-NLS-1$
|
||||
|
@ -1782,7 +1782,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_9_1s13() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("extern int max(int a, int b)\n"); //$NON-NLS-1$
|
||||
buffer.append("{\n"); //$NON-NLS-1$
|
||||
buffer.append("return a > b ? a : b;\n"); //$NON-NLS-1$
|
||||
|
@ -1800,7 +1800,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_9_1s14() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("void g(int (*funcp)(void))\n"); //$NON-NLS-1$
|
||||
buffer.append("{\n"); //$NON-NLS-1$
|
||||
buffer.append("(*funcp)();\n"); //$NON-NLS-1$
|
||||
|
@ -1829,7 +1829,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_9_2s4() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int i1 = 1; // definition, external linkage\n"); //$NON-NLS-1$
|
||||
buffer.append("static int i2 = 2; // definition, internal linkage\n"); //$NON-NLS-1$
|
||||
buffer.append("extern int i3 = 3; // definition, external linkage\n"); //$NON-NLS-1$
|
||||
|
@ -1861,7 +1861,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_10_1s4() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int g() {}\n"); //$NON-NLS-1$
|
||||
buffer.append("int f() {\n"); //$NON-NLS-1$
|
||||
buffer.append("#if 'z' - 'a' == 25\n"); //$NON-NLS-1$
|
||||
|
@ -1884,7 +1884,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_10_3_3s4() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("#define hash_hash # ## #\n"); //$NON-NLS-1$
|
||||
buffer.append("#define mkstr(a) # a\n"); //$NON-NLS-1$
|
||||
buffer.append("#define in_between(a) mkstr(a)\n"); //$NON-NLS-1$
|
||||
|
@ -1901,7 +1901,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_10_3_5s3() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("#define TABSIZE 100\n"); //$NON-NLS-1$
|
||||
buffer.append("int table[TABSIZE];\n"); //$NON-NLS-1$
|
||||
parseCandCPP(buffer.toString(), true, 0);
|
||||
|
@ -1913,7 +1913,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_10_3_5s4() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("#define max(a, b) ((a) > (b) ? (a) : (b))\n"); //$NON-NLS-1$
|
||||
parseCandCPP(buffer.toString(), true, 0);
|
||||
}
|
||||
|
@ -1941,7 +1941,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_10_3_5s5() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("#define x 3\n"); //$NON-NLS-1$
|
||||
buffer.append("#define f(a) f(x * (a))\n"); //$NON-NLS-1$
|
||||
buffer.append("#undef x\n"); //$NON-NLS-1$
|
||||
|
@ -1985,7 +1985,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_10_3_5s6() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("#define str(s) # s \n"); //$NON-NLS-1$
|
||||
buffer.append("#define xstr(s) str(s) \n"); //$NON-NLS-1$
|
||||
buffer.append("#define debug(s, t) printf(\"x\" # s \"= %d, x\" # t \"= %s\", \\\n"); //$NON-NLS-1$
|
||||
|
@ -2017,7 +2017,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_10_3_5s7() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("#define t(x,y,z) x ## y ## z\n"); //$NON-NLS-1$
|
||||
buffer.append("int j[] = { t(1,2,3), t(,4,5), t(6,,7), t(8,9,),\n"); //$NON-NLS-1$
|
||||
buffer.append("t(10,,), t(,11,), t(,,12), t(,,) };\n"); //$NON-NLS-1$
|
||||
|
@ -2036,7 +2036,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_10_3_5s8() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("#define OBJ_LIKE1 (1-1)\n"); //$NON-NLS-1$
|
||||
buffer.append("#define OBJ_LIKE2 \\n"); //$NON-NLS-1$
|
||||
buffer.append(" (1-1) \\n"); //$NON-NLS-1$
|
||||
|
@ -2062,7 +2062,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_10_3_5s9() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("#define debug(...) fprintf(stderr, __VA_ARGS__)\n"); //$NON-NLS-1$
|
||||
buffer.append("#define showlist(...) puts(#__VA_ARGS__)\n"); //$NON-NLS-1$
|
||||
buffer.append("#define report(test, ...) ((test)?puts(#test):\\\n"); //$NON-NLS-1$
|
||||
|
@ -2095,7 +2095,7 @@ public class AST2CSpecTest extends AST2SpecBaseTest {
|
|||
--End Example]
|
||||
*/
|
||||
public void test6_7_7s6() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("typedef signed int t;\n"); //$NON-NLS-1$
|
||||
buffer.append("typedef int plain;\n"); //$NON-NLS-1$
|
||||
buffer.append("struct tag {\n"); //$NON-NLS-1$
|
||||
|
|
|
@ -69,161 +69,161 @@ public class AST2KnRTests extends AST2BaseTest {
|
|||
}
|
||||
|
||||
public void testSimpleKRCTest1() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
buffer.append( "int f(char x);\n" ); //$NON-NLS-1$
|
||||
buffer.append( "int f(x) char x;\n" ); //$NON-NLS-1$
|
||||
buffer.append( "{ return x == 0; }\n" ); //$NON-NLS-1$
|
||||
IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C, true );
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f(char x);\n"); //$NON-NLS-1$
|
||||
buffer.append("int f(x) char x;\n"); //$NON-NLS-1$
|
||||
buffer.append("{ return x == 0; }\n"); //$NON-NLS-1$
|
||||
IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.C, true);
|
||||
|
||||
IASTSimpleDeclaration f1 = (IASTSimpleDeclaration)tu.getDeclarations()[0];
|
||||
IASTFunctionDefinition f2 = (IASTFunctionDefinition)tu.getDeclarations()[1];
|
||||
IASTSimpleDeclaration f1 = (IASTSimpleDeclaration) tu.getDeclarations()[0];
|
||||
IASTFunctionDefinition f2 = (IASTFunctionDefinition) tu.getDeclarations()[1];
|
||||
|
||||
assertTrue( f1.getDeclarators()[0] instanceof IASTStandardFunctionDeclarator );
|
||||
assertTrue(f1.getDeclarators()[0] instanceof IASTStandardFunctionDeclarator);
|
||||
|
||||
IParameter x4 = (IParameter)((IASTIdExpression)((IASTBinaryExpression)((IASTReturnStatement)((IASTCompoundStatement)f2.getBody()).getStatements()[0]).getReturnValue()).getOperand1()).getName().resolveBinding();
|
||||
IParameter x3 = (IParameter)((IASTSimpleDeclaration)((ICASTKnRFunctionDeclarator)f2.getDeclarator()).getParameterDeclarations()[0]).getDeclarators()[0].getName().resolveBinding();
|
||||
IParameter x2 = (IParameter)((ICASTKnRFunctionDeclarator)f2.getDeclarator()).getParameterNames()[0].resolveBinding();
|
||||
IParameter x1 = (IParameter)((IASTStandardFunctionDeclarator)f1.getDeclarators()[0]).getParameters()[0].getDeclarator().getName().resolveBinding();
|
||||
IParameter x4 = (IParameter) ((IASTIdExpression) ((IASTBinaryExpression) ((IASTReturnStatement) ((IASTCompoundStatement) f2.getBody()).getStatements()[0]).getReturnValue()).getOperand1()).getName().resolveBinding();
|
||||
IParameter x3 = (IParameter) ((IASTSimpleDeclaration) ((ICASTKnRFunctionDeclarator) f2.getDeclarator()).getParameterDeclarations()[0]).getDeclarators()[0].getName().resolveBinding();
|
||||
IParameter x2 = (IParameter) ((ICASTKnRFunctionDeclarator) f2.getDeclarator()).getParameterNames()[0].resolveBinding();
|
||||
IParameter x1 = (IParameter) ((IASTStandardFunctionDeclarator) f1.getDeclarators()[0]).getParameters()[0].getDeclarator().getName().resolveBinding();
|
||||
|
||||
assertNotNull( x1 );
|
||||
assertNotNull( x2 );
|
||||
assertNotNull( x3 );
|
||||
assertNotNull( x4 );
|
||||
assertEquals( x1, x2 );
|
||||
assertEquals( x2, x3 );
|
||||
assertEquals( x3, x4 );
|
||||
assertNotNull(x1);
|
||||
assertNotNull(x2);
|
||||
assertNotNull(x3);
|
||||
assertNotNull(x4);
|
||||
assertEquals(x1, x2);
|
||||
assertEquals(x2, x3);
|
||||
assertEquals(x3, x4);
|
||||
|
||||
// test tu.getDeclarationsInAST(IBinding)
|
||||
IASTName[] decls = tu.getDeclarationsInAST(x1);
|
||||
assertEquals( decls.length, 2 );
|
||||
assertEquals( decls[0], ((IASTStandardFunctionDeclarator)f1.getDeclarators()[0]).getParameters()[0].getDeclarator().getName() );
|
||||
assertEquals( decls[1], ((IASTSimpleDeclaration)((ICASTKnRFunctionDeclarator)f2.getDeclarator()).getParameterDeclarations()[0]).getDeclarators()[0].getName() );
|
||||
assertEquals(decls.length, 2);
|
||||
assertEquals(decls[0], ((IASTStandardFunctionDeclarator) f1.getDeclarators()[0]).getParameters()[0].getDeclarator().getName());
|
||||
assertEquals(decls[1], ((IASTSimpleDeclaration) ((ICASTKnRFunctionDeclarator) f2.getDeclarator()).getParameterDeclarations()[0]).getDeclarators()[0].getName());
|
||||
|
||||
assertNotNull( ((CScope)tu.getScope()).getBinding(CScope.NAMESPACE_TYPE_OTHER, new String("f").toCharArray()) ); //$NON-NLS-1$
|
||||
assertNotNull( ((CScope)((IASTCompoundStatement)f2.getBody()).getScope()).getBinding(CScope.NAMESPACE_TYPE_OTHER, new String("x").toCharArray()) ); //$NON-NLS-1$
|
||||
assertNotNull(((CScope) tu.getScope()).getBinding(CScope.NAMESPACE_TYPE_OTHER, new String("f").toCharArray())); //$NON-NLS-1$
|
||||
assertNotNull(((CScope) ((IASTCompoundStatement) f2.getBody()).getScope()).getBinding(CScope.NAMESPACE_TYPE_OTHER, new String("x").toCharArray())); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
public void testSimpleKRCTest2() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
buffer.append( "int f();\n" ); //$NON-NLS-1$
|
||||
buffer.append( "int f(x) char x;\n" ); //$NON-NLS-1$
|
||||
buffer.append( "{ return x == 0; }\n" ); //$NON-NLS-1$
|
||||
IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C, true );
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f();\n"); //$NON-NLS-1$
|
||||
buffer.append("int f(x) char x;\n"); //$NON-NLS-1$
|
||||
buffer.append("{ return x == 0; }\n"); //$NON-NLS-1$
|
||||
IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.C, true);
|
||||
|
||||
IASTSimpleDeclaration f1 = (IASTSimpleDeclaration)tu.getDeclarations()[0];
|
||||
IASTFunctionDefinition f2 = (IASTFunctionDefinition)tu.getDeclarations()[1];
|
||||
IASTSimpleDeclaration f1 = (IASTSimpleDeclaration) tu.getDeclarations()[0];
|
||||
IASTFunctionDefinition f2 = (IASTFunctionDefinition) tu.getDeclarations()[1];
|
||||
|
||||
assertTrue( f1.getDeclarators()[0] instanceof IASTStandardFunctionDeclarator );
|
||||
assertTrue(f1.getDeclarators()[0] instanceof IASTStandardFunctionDeclarator);
|
||||
|
||||
IParameter x4 = (IParameter)((IASTIdExpression)((IASTBinaryExpression)((IASTReturnStatement)((IASTCompoundStatement)f2.getBody()).getStatements()[0]).getReturnValue()).getOperand1()).getName().resolveBinding();
|
||||
IParameter x3 = (IParameter)((IASTSimpleDeclaration)((ICASTKnRFunctionDeclarator)f2.getDeclarator()).getParameterDeclarations()[0]).getDeclarators()[0].getName().resolveBinding();
|
||||
IParameter x2 = (IParameter)((ICASTKnRFunctionDeclarator)f2.getDeclarator()).getParameterNames()[0].resolveBinding();
|
||||
IParameter x4 = (IParameter) ((IASTIdExpression) ((IASTBinaryExpression) ((IASTReturnStatement) ((IASTCompoundStatement) f2.getBody()).getStatements()[0]).getReturnValue()).getOperand1()).getName().resolveBinding();
|
||||
IParameter x3 = (IParameter) ((IASTSimpleDeclaration) ((ICASTKnRFunctionDeclarator) f2.getDeclarator()).getParameterDeclarations()[0]).getDeclarators()[0].getName().resolveBinding();
|
||||
IParameter x2 = (IParameter) ((ICASTKnRFunctionDeclarator) f2.getDeclarator()).getParameterNames()[0].resolveBinding();
|
||||
|
||||
assertNotNull( x2 );
|
||||
assertNotNull( x3 );
|
||||
assertNotNull( x4 );
|
||||
assertEquals( x2, x3 );
|
||||
assertEquals( x3, x4 );
|
||||
assertNotNull(x2);
|
||||
assertNotNull(x3);
|
||||
assertNotNull(x4);
|
||||
assertEquals(x2, x3);
|
||||
assertEquals(x3, x4);
|
||||
|
||||
// test tu.getDeclarationsInAST(IBinding)
|
||||
IASTName[] decls = tu.getDeclarationsInAST(x2);
|
||||
assertEquals( decls.length, 1 );
|
||||
assertEquals( decls[0], ((IASTSimpleDeclaration)((ICASTKnRFunctionDeclarator)f2.getDeclarator()).getParameterDeclarations()[0]).getDeclarators()[0].getName() );
|
||||
assertEquals(decls.length, 1);
|
||||
assertEquals(decls[0], ((IASTSimpleDeclaration) ((ICASTKnRFunctionDeclarator) f2.getDeclarator()).getParameterDeclarations()[0]).getDeclarators()[0].getName());
|
||||
|
||||
assertNotNull( ((CScope)tu.getScope()).getBinding(CScope.NAMESPACE_TYPE_OTHER, new String("f").toCharArray()) ); //$NON-NLS-1$
|
||||
assertNotNull( ((CScope)((IASTCompoundStatement)f2.getBody()).getScope()).getBinding(CScope.NAMESPACE_TYPE_OTHER, new String("x").toCharArray()) ); //$NON-NLS-1$
|
||||
assertNotNull(((CScope) tu.getScope()).getBinding(CScope.NAMESPACE_TYPE_OTHER, new String("f").toCharArray())); //$NON-NLS-1$
|
||||
assertNotNull(((CScope) ((IASTCompoundStatement) f2.getBody()).getScope()).getBinding(CScope.NAMESPACE_TYPE_OTHER, new String("x").toCharArray())); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
public void testSimpleKRCTest3() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
buffer.append( "int const *f();\n" ); //$NON-NLS-1$
|
||||
buffer.append( "int const *f(x) char x;\n" ); //$NON-NLS-1$
|
||||
buffer.append( "{ return x == 0; }\n" ); //$NON-NLS-1$
|
||||
IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C, true );
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int const *f();\n"); //$NON-NLS-1$
|
||||
buffer.append("int const *f(x) char x;\n"); //$NON-NLS-1$
|
||||
buffer.append("{ return x == 0; }\n"); //$NON-NLS-1$
|
||||
IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.C, true);
|
||||
|
||||
IASTSimpleDeclaration f1 = (IASTSimpleDeclaration)tu.getDeclarations()[0];
|
||||
IASTFunctionDefinition f2 = (IASTFunctionDefinition)tu.getDeclarations()[1];
|
||||
IASTSimpleDeclaration f1 = (IASTSimpleDeclaration) tu.getDeclarations()[0];
|
||||
IASTFunctionDefinition f2 = (IASTFunctionDefinition) tu.getDeclarations()[1];
|
||||
|
||||
assertTrue( f1.getDeclarators()[0] instanceof IASTStandardFunctionDeclarator );
|
||||
assertTrue(f1.getDeclarators()[0] instanceof IASTStandardFunctionDeclarator);
|
||||
|
||||
IParameter x4 = (IParameter)((IASTIdExpression)((IASTBinaryExpression)((IASTReturnStatement)((IASTCompoundStatement)f2.getBody()).getStatements()[0]).getReturnValue()).getOperand1()).getName().resolveBinding();
|
||||
IParameter x3 = (IParameter)((IASTSimpleDeclaration)((ICASTKnRFunctionDeclarator)f2.getDeclarator()).getParameterDeclarations()[0]).getDeclarators()[0].getName().resolveBinding();
|
||||
IParameter x2 = (IParameter)((ICASTKnRFunctionDeclarator)f2.getDeclarator()).getParameterNames()[0].resolveBinding();
|
||||
IParameter x4 = (IParameter) ((IASTIdExpression) ((IASTBinaryExpression) ((IASTReturnStatement) ((IASTCompoundStatement) f2.getBody()).getStatements()[0]).getReturnValue()).getOperand1()).getName().resolveBinding();
|
||||
IParameter x3 = (IParameter) ((IASTSimpleDeclaration) ((ICASTKnRFunctionDeclarator) f2.getDeclarator()).getParameterDeclarations()[0]).getDeclarators()[0].getName().resolveBinding();
|
||||
IParameter x2 = (IParameter) ((ICASTKnRFunctionDeclarator) f2.getDeclarator()).getParameterNames()[0].resolveBinding();
|
||||
|
||||
assertNotNull( x2 );
|
||||
assertNotNull( x3 );
|
||||
assertNotNull( x4 );
|
||||
assertEquals( x2, x3 );
|
||||
assertEquals( x3, x4 );
|
||||
assertNotNull(x2);
|
||||
assertNotNull(x3);
|
||||
assertNotNull(x4);
|
||||
assertEquals(x2, x3);
|
||||
assertEquals(x3, x4);
|
||||
}
|
||||
|
||||
public void testKRC_1() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
buffer.append( "int isroot (x, y) /* comment */ \n" ); //$NON-NLS-1$
|
||||
buffer.append( "int x;\n" ); //$NON-NLS-1$
|
||||
buffer.append( "int y;\n" ); //$NON-NLS-1$
|
||||
buffer.append( "{ return x == 0; }\n" ); //$NON-NLS-1$
|
||||
IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C, true );
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int isroot (x, y) /* comment */ \n"); //$NON-NLS-1$
|
||||
buffer.append("int x;\n"); //$NON-NLS-1$
|
||||
buffer.append("int y;\n"); //$NON-NLS-1$
|
||||
buffer.append("{ return x == 0; }\n"); //$NON-NLS-1$
|
||||
IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.C, true);
|
||||
|
||||
IASTFunctionDefinition isroot_def = (IASTFunctionDefinition)tu.getDeclarations()[0];
|
||||
IASTFunctionDefinition isroot_def = (IASTFunctionDefinition) tu.getDeclarations()[0];
|
||||
|
||||
IASTName ret_x = ((IASTIdExpression)((IASTBinaryExpression)((IASTReturnStatement)((IASTCompoundStatement)isroot_def.getBody()).getStatements()[0]).getReturnValue()).getOperand1()).getName();
|
||||
IASTName ret_x = ((IASTIdExpression) ((IASTBinaryExpression) ((IASTReturnStatement) ((IASTCompoundStatement) isroot_def.getBody()).getStatements()[0]).getReturnValue()).getOperand1()).getName();
|
||||
IASTDeclarator isroot_decltor = isroot_def.getDeclarator();
|
||||
|
||||
assertTrue( isroot_decltor instanceof ICASTKnRFunctionDeclarator );
|
||||
IASTDeclarator x1 = ((IASTSimpleDeclaration)((ICASTKnRFunctionDeclarator)isroot_decltor).getParameterDeclarations()[0]).getDeclarators()[0];
|
||||
IASTDeclarator y1 = ((IASTSimpleDeclaration)((ICASTKnRFunctionDeclarator)isroot_decltor).getParameterDeclarations()[1]).getDeclarators()[0];
|
||||
assertTrue(isroot_decltor instanceof ICASTKnRFunctionDeclarator);
|
||||
IASTDeclarator x1 = ((IASTSimpleDeclaration) ((ICASTKnRFunctionDeclarator) isroot_decltor).getParameterDeclarations()[0]).getDeclarators()[0];
|
||||
IASTDeclarator y1 = ((IASTSimpleDeclaration) ((ICASTKnRFunctionDeclarator) isroot_decltor).getParameterDeclarations()[1]).getDeclarators()[0];
|
||||
|
||||
IParameter x_parm = (IParameter)x1.getName().resolveBinding();
|
||||
IParameter y_parm = (IParameter)y1.getName().resolveBinding();
|
||||
assertNotNull( x_parm );
|
||||
assertNotNull( y_parm );
|
||||
IParameter x_parm = (IParameter) x1.getName().resolveBinding();
|
||||
IParameter y_parm = (IParameter) y1.getName().resolveBinding();
|
||||
assertNotNull(x_parm);
|
||||
assertNotNull(y_parm);
|
||||
|
||||
IASTDeclarator x2 = ((IASTSimpleDeclaration)((ICASTKnRFunctionDeclarator)isroot_decltor).getParameterDeclarations()[0]).getDeclarators()[0];
|
||||
IASTDeclarator y2 = ((IASTSimpleDeclaration)((ICASTKnRFunctionDeclarator)isroot_decltor).getParameterDeclarations()[1]).getDeclarators()[0];
|
||||
IASTDeclarator x2 = ((IASTSimpleDeclaration) ((ICASTKnRFunctionDeclarator) isroot_decltor).getParameterDeclarations()[0]).getDeclarators()[0];
|
||||
IASTDeclarator y2 = ((IASTSimpleDeclaration) ((ICASTKnRFunctionDeclarator) isroot_decltor).getParameterDeclarations()[1]).getDeclarators()[0];
|
||||
|
||||
IParameter x_parm2 = (IParameter)x2.getName().resolveBinding();
|
||||
IParameter y_parm2 = (IParameter)y2.getName().resolveBinding();
|
||||
IParameter x_parm2 = (IParameter) x2.getName().resolveBinding();
|
||||
IParameter y_parm2 = (IParameter) y2.getName().resolveBinding();
|
||||
|
||||
assertNotNull( x_parm2 );
|
||||
assertNotNull( y_parm2 );
|
||||
assertNotNull( ret_x.resolveBinding() );
|
||||
assertNotNull(x_parm2);
|
||||
assertNotNull(y_parm2);
|
||||
assertNotNull(ret_x.resolveBinding());
|
||||
|
||||
assertEquals( x_parm, x_parm2 );
|
||||
assertEquals( y_parm, y_parm2 );
|
||||
assertEquals( ret_x.resolveBinding(), x_parm );
|
||||
assertEquals(x_parm, x_parm2);
|
||||
assertEquals(y_parm, y_parm2);
|
||||
assertEquals(ret_x.resolveBinding(), x_parm);
|
||||
|
||||
// test tu.getDeclarationsInAST(IBinding)
|
||||
IASTName[] decls = tu.getDeclarationsInAST(ret_x.resolveBinding());
|
||||
assertEquals( decls.length, 1 );
|
||||
assertEquals( decls[0], x1.getName() );
|
||||
assertEquals(decls.length, 1);
|
||||
assertEquals(decls[0], x1.getName());
|
||||
|
||||
assertNotNull( ((CScope)tu.getScope()).getBinding(CScope.NAMESPACE_TYPE_OTHER, new String("isroot").toCharArray()) ); //$NON-NLS-1$
|
||||
assertNotNull( ((CScope)((IASTCompoundStatement)isroot_def.getBody()).getScope()).getBinding(CScope.NAMESPACE_TYPE_OTHER, new String("x").toCharArray()) ); //$NON-NLS-1$
|
||||
assertNotNull( ((CScope)((IASTCompoundStatement)isroot_def.getBody()).getScope()).getBinding(CScope.NAMESPACE_TYPE_OTHER, new String("y").toCharArray()) ); //$NON-NLS-1$
|
||||
assertNotNull(((CScope) tu.getScope()).getBinding(CScope.NAMESPACE_TYPE_OTHER, new String("isroot").toCharArray())); //$NON-NLS-1$
|
||||
assertNotNull(((CScope) ((IASTCompoundStatement) isroot_def.getBody()).getScope()).getBinding(CScope.NAMESPACE_TYPE_OTHER, new String("x").toCharArray())); //$NON-NLS-1$
|
||||
assertNotNull(((CScope) ((IASTCompoundStatement) isroot_def.getBody()).getScope()).getBinding(CScope.NAMESPACE_TYPE_OTHER, new String("y").toCharArray())); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
public void testKRCWithTypes() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
buffer.append( "typedef char c;\n" ); //$NON-NLS-1$
|
||||
buffer.append( "int isroot (c);\n" ); //$NON-NLS-1$
|
||||
buffer.append( "int isroot (x) \n" ); //$NON-NLS-1$
|
||||
buffer.append( "c x;\n" ); //$NON-NLS-1$
|
||||
buffer.append( "{ return x == 0; }\n" ); //$NON-NLS-1$
|
||||
IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C, true );
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("typedef char c;\n"); //$NON-NLS-1$
|
||||
buffer.append("int isroot (c);\n"); //$NON-NLS-1$
|
||||
buffer.append("int isroot (x) \n"); //$NON-NLS-1$
|
||||
buffer.append("c x;\n"); //$NON-NLS-1$
|
||||
buffer.append("{ return x == 0; }\n"); //$NON-NLS-1$
|
||||
IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.C, true);
|
||||
|
||||
IASTSimpleDeclaration c_decl = (IASTSimpleDeclaration)tu.getDeclarations()[0];
|
||||
IASTSimpleDeclaration isroot_decl = (IASTSimpleDeclaration)tu.getDeclarations()[1];
|
||||
IASTFunctionDefinition isroot_def = (IASTFunctionDefinition)tu.getDeclarations()[2];
|
||||
IASTSimpleDeclaration c_decl = (IASTSimpleDeclaration) tu.getDeclarations()[0];
|
||||
IASTSimpleDeclaration isroot_decl = (IASTSimpleDeclaration) tu.getDeclarations()[1];
|
||||
IASTFunctionDefinition isroot_def = (IASTFunctionDefinition) tu.getDeclarations()[2];
|
||||
|
||||
//IASTName x0 = ((IASTStandardFunctionDeclarator)isroot_decl.getDeclarators()[0]).getParameters()[0].getDeclarator().getName();
|
||||
IASTName x1 = ((ICASTKnRFunctionDeclarator)isroot_def.getDeclarator()).getParameterNames()[0];
|
||||
IASTName x2 = ((IASTSimpleDeclaration)((ICASTKnRFunctionDeclarator)isroot_def.getDeclarator()).getParameterDeclarations()[0]).getDeclarators()[0].getName();
|
||||
IASTName x3 = ((IASTIdExpression)((IASTBinaryExpression)((IASTReturnStatement)((IASTCompoundStatement)isroot_def.getBody()).getStatements()[0]).getReturnValue()).getOperand1()).getName();
|
||||
//IASTName x0 = ((IASTStandardFunctionDeclarator) isroot_decl.getDeclarators()[0]).getParameters()[0].getDeclarator().getName();
|
||||
IASTName x1 = ((ICASTKnRFunctionDeclarator) isroot_def.getDeclarator()).getParameterNames()[0];
|
||||
IASTName x2 = ((IASTSimpleDeclaration) ((ICASTKnRFunctionDeclarator) isroot_def.getDeclarator()).getParameterDeclarations()[0]).getDeclarators()[0].getName();
|
||||
IASTName x3 = ((IASTIdExpression) ((IASTBinaryExpression) ((IASTReturnStatement) ((IASTCompoundStatement) isroot_def.getBody()).getStatements()[0]).getReturnValue()).getOperand1()).getName();
|
||||
|
||||
IParameter x1_var = (IParameter)x1.resolveBinding();
|
||||
IParameter x2_var = (IParameter)x2.resolveBinding();
|
||||
IParameter x3_var = (IParameter)x3.resolveBinding();
|
||||
IParameter x1_var = (IParameter) x1.resolveBinding();
|
||||
IParameter x2_var = (IParameter) x2.resolveBinding();
|
||||
IParameter x3_var = (IParameter) x3.resolveBinding();
|
||||
|
||||
assertNotNull(x1_var);
|
||||
assertNotNull(x2_var);
|
||||
|
@ -232,12 +232,12 @@ public class AST2KnRTests extends AST2BaseTest {
|
|||
assertEquals(x2_var, x3_var);
|
||||
|
||||
IASTName c1 = c_decl.getDeclarators()[0].getName();
|
||||
IASTName c2 = ((IASTNamedTypeSpecifier)((IASTStandardFunctionDeclarator)isroot_decl.getDeclarators()[0]).getParameters()[0].getDeclSpecifier()).getName();
|
||||
IASTName c3 = ((IASTNamedTypeSpecifier)((IASTSimpleDeclaration)((ICASTKnRFunctionDeclarator)isroot_def.getDeclarator()).getParameterDeclarations()[0]).getDeclSpecifier()).getName();
|
||||
IASTName c2 = ((IASTNamedTypeSpecifier) ((IASTStandardFunctionDeclarator) isroot_decl.getDeclarators()[0]).getParameters()[0].getDeclSpecifier()).getName();
|
||||
IASTName c3 = ((IASTNamedTypeSpecifier) ((IASTSimpleDeclaration) ((ICASTKnRFunctionDeclarator) isroot_def.getDeclarator()).getParameterDeclarations()[0]).getDeclSpecifier()).getName();
|
||||
|
||||
ITypedef c1_t = (ITypedef)c1.resolveBinding();
|
||||
ITypedef c2_t = (ITypedef)c2.resolveBinding();
|
||||
ITypedef c3_t = (ITypedef)c3.resolveBinding();
|
||||
ITypedef c1_t = (ITypedef) c1.resolveBinding();
|
||||
ITypedef c2_t = (ITypedef) c2.resolveBinding();
|
||||
ITypedef c3_t = (ITypedef) c3.resolveBinding();
|
||||
|
||||
assertNotNull(c1_t);
|
||||
assertNotNull(c2_t);
|
||||
|
@ -245,101 +245,101 @@ public class AST2KnRTests extends AST2BaseTest {
|
|||
assertEquals(c1_t, c2_t);
|
||||
assertEquals(c2_t, c3_t);
|
||||
assertTrue(c1_t.getType() instanceof IBasicType);
|
||||
assertEquals(((IBasicType)c1_t.getType()).getType(), IBasicType.t_char);
|
||||
assertEquals(((IBasicType) c1_t.getType()).getType(), IBasicType.t_char);
|
||||
|
||||
// test tu.getDeclarationsInAST(IBinding)
|
||||
IASTName[] decls = tu.getDeclarationsInAST(x3.resolveBinding());
|
||||
assertEquals( decls.length, 1 );
|
||||
assertEquals( decls[0], x2 );
|
||||
assertEquals(decls.length, 1);
|
||||
assertEquals(decls[0], x2);
|
||||
|
||||
assertNotNull( ((CScope)tu.getScope()).getBinding(CScope.NAMESPACE_TYPE_OTHER, new String("c").toCharArray()) ); //$NON-NLS-1$
|
||||
assertNotNull( ((CScope)tu.getScope()).getBinding(CScope.NAMESPACE_TYPE_OTHER, new String("isroot").toCharArray()) ); //$NON-NLS-1$
|
||||
assertNotNull( ((CScope)((IASTCompoundStatement)isroot_def.getBody()).getScope()).getBinding(CScope.NAMESPACE_TYPE_OTHER, new String("x").toCharArray()) ); //$NON-NLS-1$
|
||||
assertNotNull(((CScope) tu.getScope()).getBinding(CScope.NAMESPACE_TYPE_OTHER, new String("c").toCharArray())); //$NON-NLS-1$
|
||||
assertNotNull(((CScope) tu.getScope()).getBinding(CScope.NAMESPACE_TYPE_OTHER, new String("isroot").toCharArray())); //$NON-NLS-1$
|
||||
assertNotNull(((CScope) ((IASTCompoundStatement) isroot_def.getBody()).getScope()).getBinding(CScope.NAMESPACE_TYPE_OTHER, new String("x").toCharArray())); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
public void testKRCProblem1() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
buffer.append( "int f(x) char\n" ); //$NON-NLS-1$
|
||||
buffer.append( "{ return x == 0; }\n" ); //$NON-NLS-1$
|
||||
IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C, true, false );
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f(x) char\n"); //$NON-NLS-1$
|
||||
buffer.append("{ return x == 0; }\n"); //$NON-NLS-1$
|
||||
IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.C, true, false);
|
||||
IASTDeclaration[] decls= tu.getDeclarations();
|
||||
|
||||
assertTrue(CVisitor.getProblems(tu).length > 0);
|
||||
}
|
||||
|
||||
public void testKRCProblem2() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
buffer.append( "int i=0;\n" ); //$NON-NLS-1$
|
||||
buffer.append( "int f(x) i++;\n" ); //$NON-NLS-1$
|
||||
buffer.append( "{ return x == 0; }\n" ); //$NON-NLS-1$
|
||||
IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C, true, false );
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int i=0;\n"); //$NON-NLS-1$
|
||||
buffer.append("int f(x) i++;\n"); //$NON-NLS-1$
|
||||
buffer.append("{ return x == 0; }\n"); //$NON-NLS-1$
|
||||
IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.C, true, false);
|
||||
|
||||
IASTSimpleDeclaration sd= getDeclaration(tu, 0);
|
||||
assertTrue(CVisitor.getProblems(tu).length > 0);
|
||||
}
|
||||
|
||||
public void testKRCProblem3() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
buffer.append( "int f(x) char y;\n" ); //$NON-NLS-1$
|
||||
buffer.append( "{ return x == 0; }\n" ); //$NON-NLS-1$
|
||||
IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C, true, false );
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f(x) char y;\n"); //$NON-NLS-1$
|
||||
buffer.append("{ return x == 0; }\n"); //$NON-NLS-1$
|
||||
IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.C, true, false);
|
||||
|
||||
IASTFunctionDefinition f = (IASTFunctionDefinition)tu.getDeclarations()[0];
|
||||
IASTFunctionDefinition f = (IASTFunctionDefinition) tu.getDeclarations()[0];
|
||||
assertTrue(f.getDeclarator() instanceof ICASTKnRFunctionDeclarator);
|
||||
ICASTKnRFunctionDeclarator f_kr = (ICASTKnRFunctionDeclarator)f.getDeclarator();
|
||||
ICASTKnRFunctionDeclarator f_kr = (ICASTKnRFunctionDeclarator) f.getDeclarator();
|
||||
assertEquals(f_kr.getName().toString(), "f"); //$NON-NLS-1$
|
||||
assertEquals(f_kr.getParameterNames()[0].toString(), "x"); //$NON-NLS-1$
|
||||
assertTrue(f_kr.getParameterDeclarations()[0] instanceof IASTProblemDeclaration);
|
||||
assertTrue(f.getBody() instanceof IASTCompoundStatement);
|
||||
assertTrue(((IASTCompoundStatement)f.getBody()).getStatements()[0] instanceof IASTReturnStatement);
|
||||
assertTrue(((IASTReturnStatement)((IASTCompoundStatement)f.getBody()).getStatements()[0]).getReturnValue() instanceof IASTBinaryExpression);
|
||||
assertTrue(((IASTBinaryExpression)((IASTReturnStatement)((IASTCompoundStatement)f.getBody()).getStatements()[0]).getReturnValue()).getOperand1() instanceof IASTIdExpression);
|
||||
assertEquals(((IASTIdExpression)((IASTBinaryExpression)((IASTReturnStatement)((IASTCompoundStatement)f.getBody()).getStatements()[0]).getReturnValue()).getOperand1()).getName().toString(), "x"); //$NON-NLS-1$
|
||||
assertTrue(((IASTBinaryExpression)((IASTReturnStatement)((IASTCompoundStatement)f.getBody()).getStatements()[0]).getReturnValue()).getOperand2() instanceof IASTLiteralExpression);
|
||||
assertEquals(((IASTLiteralExpression)((IASTBinaryExpression)((IASTReturnStatement)((IASTCompoundStatement)f.getBody()).getStatements()[0]).getReturnValue()).getOperand2()).toString(), "0"); //$NON-NLS-1$
|
||||
assertTrue(((IASTCompoundStatement) f.getBody()).getStatements()[0] instanceof IASTReturnStatement);
|
||||
assertTrue(((IASTReturnStatement) ((IASTCompoundStatement) f.getBody()).getStatements()[0]).getReturnValue() instanceof IASTBinaryExpression);
|
||||
assertTrue(((IASTBinaryExpression) ((IASTReturnStatement) ((IASTCompoundStatement) f.getBody()).getStatements()[0]).getReturnValue()).getOperand1() instanceof IASTIdExpression);
|
||||
assertEquals(((IASTIdExpression) ((IASTBinaryExpression) ((IASTReturnStatement) ((IASTCompoundStatement) f.getBody()).getStatements()[0]).getReturnValue()).getOperand1()).getName().toString(), "x"); //$NON-NLS-1$
|
||||
assertTrue(((IASTBinaryExpression) ((IASTReturnStatement) ((IASTCompoundStatement) f.getBody()).getStatements()[0]).getReturnValue()).getOperand2() instanceof IASTLiteralExpression);
|
||||
assertEquals(((IASTLiteralExpression) ((IASTBinaryExpression) ((IASTReturnStatement) ((IASTCompoundStatement) f.getBody()).getStatements()[0]).getReturnValue()).getOperand2()).toString(), "0"); //$NON-NLS-1$
|
||||
|
||||
// test tu.getDeclarationsInAST(IBinding)
|
||||
IASTName[] decls = tu.getDeclarationsInAST(((IASTIdExpression)((IASTBinaryExpression)((IASTReturnStatement)((IASTCompoundStatement)f.getBody()).getStatements()[0]).getReturnValue()).getOperand1()).getName().resolveBinding());
|
||||
assertEquals( decls.length, 0 );
|
||||
IASTName[] decls = tu.getDeclarationsInAST(((IASTIdExpression) ((IASTBinaryExpression) ((IASTReturnStatement) ((IASTCompoundStatement) f.getBody()).getStatements()[0]).getReturnValue()).getOperand1()).getName().resolveBinding());
|
||||
assertEquals(decls.length, 0);
|
||||
}
|
||||
|
||||
public void testKRCProblem4() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
buffer.append( "int f(x,y,z) char x,y,z; int a;\n" ); //$NON-NLS-1$
|
||||
buffer.append( "{ return x == 0; }\n" ); //$NON-NLS-1$
|
||||
IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C, true, false );
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f(x,y,z) char x,y,z; int a;\n"); //$NON-NLS-1$
|
||||
buffer.append("{ return x == 0; }\n"); //$NON-NLS-1$
|
||||
IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.C, true, false);
|
||||
|
||||
IASTFunctionDefinition f = (IASTFunctionDefinition)tu.getDeclarations()[0];
|
||||
IASTFunctionDefinition f = (IASTFunctionDefinition) tu.getDeclarations()[0];
|
||||
assertTrue(f.getDeclarator() instanceof ICASTKnRFunctionDeclarator);
|
||||
ICASTKnRFunctionDeclarator f_kr = (ICASTKnRFunctionDeclarator)f.getDeclarator();
|
||||
ICASTKnRFunctionDeclarator f_kr = (ICASTKnRFunctionDeclarator) f.getDeclarator();
|
||||
assertEquals(f_kr.getName().toString(), "f"); //$NON-NLS-1$
|
||||
assertEquals(f_kr.getParameterNames()[0].toString(), "x"); //$NON-NLS-1$
|
||||
assertTrue(f_kr.getParameterDeclarations()[0] instanceof IASTSimpleDeclaration);
|
||||
assertTrue(f_kr.getParameterDeclarations()[1] instanceof IASTProblemDeclaration);
|
||||
assertTrue(f.getBody() instanceof IASTCompoundStatement);
|
||||
assertTrue(((IASTCompoundStatement)f.getBody()).getStatements()[0] instanceof IASTReturnStatement);
|
||||
assertTrue(((IASTReturnStatement)((IASTCompoundStatement)f.getBody()).getStatements()[0]).getReturnValue() instanceof IASTBinaryExpression);
|
||||
assertTrue(((IASTBinaryExpression)((IASTReturnStatement)((IASTCompoundStatement)f.getBody()).getStatements()[0]).getReturnValue()).getOperand1() instanceof IASTIdExpression);
|
||||
assertEquals(((IASTIdExpression)((IASTBinaryExpression)((IASTReturnStatement)((IASTCompoundStatement)f.getBody()).getStatements()[0]).getReturnValue()).getOperand1()).getName().toString(), "x"); //$NON-NLS-1$
|
||||
assertTrue(((IASTBinaryExpression)((IASTReturnStatement)((IASTCompoundStatement)f.getBody()).getStatements()[0]).getReturnValue()).getOperand2() instanceof IASTLiteralExpression);
|
||||
assertEquals(((IASTLiteralExpression)((IASTBinaryExpression)((IASTReturnStatement)((IASTCompoundStatement)f.getBody()).getStatements()[0]).getReturnValue()).getOperand2()).toString(), "0"); //$NON-NLS-1$
|
||||
assertTrue(((IASTCompoundStatement) f.getBody()).getStatements()[0] instanceof IASTReturnStatement);
|
||||
assertTrue(((IASTReturnStatement) ((IASTCompoundStatement) f.getBody()).getStatements()[0]).getReturnValue() instanceof IASTBinaryExpression);
|
||||
assertTrue(((IASTBinaryExpression) ((IASTReturnStatement) ((IASTCompoundStatement) f.getBody()).getStatements()[0]).getReturnValue()).getOperand1() instanceof IASTIdExpression);
|
||||
assertEquals(((IASTIdExpression) ((IASTBinaryExpression) ((IASTReturnStatement) ((IASTCompoundStatement) f.getBody()).getStatements()[0]).getReturnValue()).getOperand1()).getName().toString(), "x"); //$NON-NLS-1$
|
||||
assertTrue(((IASTBinaryExpression) ((IASTReturnStatement) ((IASTCompoundStatement) f.getBody()).getStatements()[0]).getReturnValue()).getOperand2() instanceof IASTLiteralExpression);
|
||||
assertEquals(((IASTLiteralExpression) ((IASTBinaryExpression) ((IASTReturnStatement) ((IASTCompoundStatement) f.getBody()).getStatements()[0]).getReturnValue()).getOperand2()).toString(), "0"); //$NON-NLS-1$
|
||||
|
||||
// bindings should still be ok
|
||||
IASTName x1 = f_kr.getParameterNames()[0];
|
||||
IASTName y1 = f_kr.getParameterNames()[1];
|
||||
IASTName z1 = f_kr.getParameterNames()[2];
|
||||
IASTName x2 = ((IASTSimpleDeclaration)f_kr.getParameterDeclarations()[0]).getDeclarators()[0].getName();
|
||||
IASTName y2 = ((IASTSimpleDeclaration)f_kr.getParameterDeclarations()[0]).getDeclarators()[1].getName();
|
||||
IASTName z2 = ((IASTSimpleDeclaration)f_kr.getParameterDeclarations()[0]).getDeclarators()[2].getName();
|
||||
IASTName x3 = ((IASTIdExpression)((IASTBinaryExpression)((IASTReturnStatement)((IASTCompoundStatement)f.getBody()).getStatements()[0]).getReturnValue()).getOperand1()).getName();
|
||||
IASTName x2 = ((IASTSimpleDeclaration) f_kr.getParameterDeclarations()[0]).getDeclarators()[0].getName();
|
||||
IASTName y2 = ((IASTSimpleDeclaration) f_kr.getParameterDeclarations()[0]).getDeclarators()[1].getName();
|
||||
IASTName z2 = ((IASTSimpleDeclaration) f_kr.getParameterDeclarations()[0]).getDeclarators()[2].getName();
|
||||
IASTName x3 = ((IASTIdExpression) ((IASTBinaryExpression) ((IASTReturnStatement) ((IASTCompoundStatement) f.getBody()).getStatements()[0]).getReturnValue()).getOperand1()).getName();
|
||||
|
||||
IParameter x1_parm = (IParameter)x1.resolveBinding();
|
||||
IParameter x2_parm = (IParameter)x2.resolveBinding();
|
||||
IParameter x3_parm = (IParameter)x3.resolveBinding();
|
||||
IParameter y1_parm = (IParameter)y1.resolveBinding();
|
||||
IParameter y2_parm = (IParameter)y2.resolveBinding();
|
||||
IParameter z1_parm = (IParameter)z1.resolveBinding();
|
||||
IParameter z2_parm = (IParameter)z2.resolveBinding();
|
||||
IParameter x1_parm = (IParameter) x1.resolveBinding();
|
||||
IParameter x2_parm = (IParameter) x2.resolveBinding();
|
||||
IParameter x3_parm = (IParameter) x3.resolveBinding();
|
||||
IParameter y1_parm = (IParameter) y1.resolveBinding();
|
||||
IParameter y2_parm = (IParameter) y2.resolveBinding();
|
||||
IParameter z1_parm = (IParameter) z1.resolveBinding();
|
||||
IParameter z2_parm = (IParameter) z2.resolveBinding();
|
||||
|
||||
assertEquals(x1_parm, x2_parm);
|
||||
assertEquals(x2_parm, x3_parm);
|
||||
|
@ -347,267 +347,265 @@ public class AST2KnRTests extends AST2BaseTest {
|
|||
assertEquals(z1_parm, z2_parm);
|
||||
|
||||
// test tu.getDeclarationsInAST(IBinding)
|
||||
IASTName[] decls = tu.getDeclarationsInAST(((IASTIdExpression)((IASTBinaryExpression)((IASTReturnStatement)((IASTCompoundStatement)f.getBody()).getStatements()[0]).getReturnValue()).getOperand1()).getName().resolveBinding());
|
||||
assertEquals( decls.length, 1 );
|
||||
assertEquals( decls[0], x2 );
|
||||
|
||||
IASTName[] decls = tu.getDeclarationsInAST(((IASTIdExpression) ((IASTBinaryExpression) ((IASTReturnStatement) ((IASTCompoundStatement) f.getBody()).getStatements()[0]).getReturnValue()).getOperand1()).getName().resolveBinding());
|
||||
assertEquals(decls.length, 1);
|
||||
assertEquals(decls[0], x2);
|
||||
}
|
||||
|
||||
public void testKRCProblem5() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
buffer.append( "int f(x) char x,a;\n" ); //$NON-NLS-1$
|
||||
buffer.append( "{ return x == 0; }\n" ); //$NON-NLS-1$
|
||||
IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C, true, false );
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f(x) char x,a;\n"); //$NON-NLS-1$
|
||||
buffer.append("{ return x == 0; }\n"); //$NON-NLS-1$
|
||||
IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.C, true, false);
|
||||
|
||||
IASTFunctionDefinition f = (IASTFunctionDefinition)tu.getDeclarations()[0];
|
||||
IASTFunctionDefinition f = (IASTFunctionDefinition) tu.getDeclarations()[0];
|
||||
assertTrue(f.getDeclarator() instanceof ICASTKnRFunctionDeclarator);
|
||||
ICASTKnRFunctionDeclarator f_kr = (ICASTKnRFunctionDeclarator)f.getDeclarator();
|
||||
ICASTKnRFunctionDeclarator f_kr = (ICASTKnRFunctionDeclarator) f.getDeclarator();
|
||||
assertEquals(f_kr.getName().toString(), "f"); //$NON-NLS-1$
|
||||
assertEquals(f_kr.getParameterNames()[0].toString(), "x"); //$NON-NLS-1$
|
||||
assertTrue(f_kr.getParameterDeclarations()[0] instanceof IASTProblemDeclaration);
|
||||
assertTrue(f.getBody() instanceof IASTCompoundStatement);
|
||||
assertTrue(((IASTCompoundStatement)f.getBody()).getStatements()[0] instanceof IASTReturnStatement);
|
||||
assertTrue(((IASTReturnStatement)((IASTCompoundStatement)f.getBody()).getStatements()[0]).getReturnValue() instanceof IASTBinaryExpression);
|
||||
assertTrue(((IASTBinaryExpression)((IASTReturnStatement)((IASTCompoundStatement)f.getBody()).getStatements()[0]).getReturnValue()).getOperand1() instanceof IASTIdExpression);
|
||||
assertEquals(((IASTIdExpression)((IASTBinaryExpression)((IASTReturnStatement)((IASTCompoundStatement)f.getBody()).getStatements()[0]).getReturnValue()).getOperand1()).getName().toString(), "x"); //$NON-NLS-1$
|
||||
assertTrue(((IASTBinaryExpression)((IASTReturnStatement)((IASTCompoundStatement)f.getBody()).getStatements()[0]).getReturnValue()).getOperand2() instanceof IASTLiteralExpression);
|
||||
assertEquals(((IASTLiteralExpression)((IASTBinaryExpression)((IASTReturnStatement)((IASTCompoundStatement)f.getBody()).getStatements()[0]).getReturnValue()).getOperand2()).toString(), "0"); //$NON-NLS-1$
|
||||
assertTrue(((IASTCompoundStatement) f.getBody()).getStatements()[0] instanceof IASTReturnStatement);
|
||||
assertTrue(((IASTReturnStatement) ((IASTCompoundStatement) f.getBody()).getStatements()[0]).getReturnValue() instanceof IASTBinaryExpression);
|
||||
assertTrue(((IASTBinaryExpression) ((IASTReturnStatement) ((IASTCompoundStatement) f.getBody()).getStatements()[0]).getReturnValue()).getOperand1() instanceof IASTIdExpression);
|
||||
assertEquals(((IASTIdExpression) ((IASTBinaryExpression) ((IASTReturnStatement) ((IASTCompoundStatement) f.getBody()).getStatements()[0]).getReturnValue()).getOperand1()).getName().toString(), "x"); //$NON-NLS-1$
|
||||
assertTrue(((IASTBinaryExpression) ((IASTReturnStatement) ((IASTCompoundStatement) f.getBody()).getStatements()[0]).getReturnValue()).getOperand2() instanceof IASTLiteralExpression);
|
||||
assertEquals(((IASTLiteralExpression) ((IASTBinaryExpression) ((IASTReturnStatement) ((IASTCompoundStatement) f.getBody()).getStatements()[0]).getReturnValue()).getOperand2()).toString(), "0"); //$NON-NLS-1$
|
||||
|
||||
// test tu.getDeclarationsInAST(IBinding)
|
||||
IASTName[] decls = tu.getDeclarationsInAST(((IASTIdExpression)((IASTBinaryExpression)((IASTReturnStatement)((IASTCompoundStatement)f.getBody()).getStatements()[0]).getReturnValue()).getOperand1()).getName().resolveBinding());
|
||||
assertEquals( decls.length, 0 );
|
||||
IASTName[] decls = tu.getDeclarationsInAST(((IASTIdExpression) ((IASTBinaryExpression) ((IASTReturnStatement) ((IASTCompoundStatement) f.getBody()).getStatements()[0]).getReturnValue()).getOperand1()).getName().resolveBinding());
|
||||
assertEquals(decls.length, 0);
|
||||
}
|
||||
|
||||
|
||||
public void testKRC_monop_cards1() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
buffer.append( "#ifdef __STDC__\n" ); //$NON-NLS-1$
|
||||
buffer.append( "#define __P(x) x\n" ); //$NON-NLS-1$
|
||||
buffer.append( "#else\n" ); //$NON-NLS-1$
|
||||
buffer.append( "#define __P(x) ()\n" ); //$NON-NLS-1$
|
||||
buffer.append( "#endif\n" ); //$NON-NLS-1$
|
||||
buffer.append( "struct A_struct {\n" ); //$NON-NLS-1$
|
||||
buffer.append( "int a;\n" ); //$NON-NLS-1$
|
||||
buffer.append( "long *c;\n" ); //$NON-NLS-1$
|
||||
buffer.append( "};\n" ); //$NON-NLS-1$
|
||||
buffer.append( "typedef struct A_struct A;\n" ); //$NON-NLS-1$
|
||||
buffer.append( "static void f __P((A *));\n" ); //$NON-NLS-1$
|
||||
buffer.append( "static void\n" ); //$NON-NLS-1$
|
||||
buffer.append( "f(x)\n" ); //$NON-NLS-1$
|
||||
buffer.append( "A *x; {\n" ); //$NON-NLS-1$
|
||||
buffer.append( "x->a = 0;\n" ); //$NON-NLS-1$
|
||||
buffer.append( "x->c[1]=x->c[2];\n" ); //$NON-NLS-1$
|
||||
buffer.append( "}\n" ); //$NON-NLS-1$
|
||||
IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C, true );
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("#ifdef __STDC__\n"); //$NON-NLS-1$
|
||||
buffer.append("#define __P(x) x\n"); //$NON-NLS-1$
|
||||
buffer.append("#else\n"); //$NON-NLS-1$
|
||||
buffer.append("#define __P(x) ()\n"); //$NON-NLS-1$
|
||||
buffer.append("#endif\n"); //$NON-NLS-1$
|
||||
buffer.append("struct A_struct {\n"); //$NON-NLS-1$
|
||||
buffer.append("int a;\n"); //$NON-NLS-1$
|
||||
buffer.append("long *c;\n"); //$NON-NLS-1$
|
||||
buffer.append("};\n"); //$NON-NLS-1$
|
||||
buffer.append("typedef struct A_struct A;\n"); //$NON-NLS-1$
|
||||
buffer.append("static void f __P((A *));\n"); //$NON-NLS-1$
|
||||
buffer.append("static void\n"); //$NON-NLS-1$
|
||||
buffer.append("f(x)\n"); //$NON-NLS-1$
|
||||
buffer.append("A *x; {\n"); //$NON-NLS-1$
|
||||
buffer.append("x->a = 0;\n"); //$NON-NLS-1$
|
||||
buffer.append("x->c[1]=x->c[2];\n"); //$NON-NLS-1$
|
||||
buffer.append("}\n"); //$NON-NLS-1$
|
||||
IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.C, true);
|
||||
|
||||
IASTSimpleDeclaration A_struct = (IASTSimpleDeclaration)tu.getDeclarations()[0];
|
||||
IASTSimpleDeclaration A = (IASTSimpleDeclaration)tu.getDeclarations()[1];
|
||||
IASTSimpleDeclaration f_decl = (IASTSimpleDeclaration)tu.getDeclarations()[2];
|
||||
IASTFunctionDefinition f_def = (IASTFunctionDefinition)tu.getDeclarations()[3];
|
||||
IASTSimpleDeclaration A_struct = (IASTSimpleDeclaration) tu.getDeclarations()[0];
|
||||
IASTSimpleDeclaration A = (IASTSimpleDeclaration) tu.getDeclarations()[1];
|
||||
IASTSimpleDeclaration f_decl = (IASTSimpleDeclaration) tu.getDeclarations()[2];
|
||||
IASTFunctionDefinition f_def = (IASTFunctionDefinition) tu.getDeclarations()[3];
|
||||
|
||||
// check A_struct
|
||||
assertTrue( A_struct.getDeclSpecifier() instanceof IASTCompositeTypeSpecifier );
|
||||
assertEquals( A_struct.getDeclarators().length, 0 );
|
||||
assertTrue(A_struct.getDeclSpecifier() instanceof IASTCompositeTypeSpecifier);
|
||||
assertEquals(A_struct.getDeclarators().length, 0);
|
||||
IASTName A_struct_name1 = ((IASTCompositeTypeSpecifier)A_struct.getDeclSpecifier()).getName();
|
||||
assertEquals( A_struct_name1.toString(), "A_struct" ); //$NON-NLS-1$
|
||||
assertEquals(A_struct_name1.toString(), "A_struct"); //$NON-NLS-1$
|
||||
ICompositeType A_struct_type1 = (ICompositeType)A_struct_name1.resolveBinding();
|
||||
assertEquals( ((ICInternalBinding)A_struct_type1).getPhysicalNode(), ((IASTCompositeTypeSpecifier)A_struct.getDeclSpecifier()).getName() );
|
||||
assertEquals(((ICInternalBinding)A_struct_type1).getPhysicalNode(), ((IASTCompositeTypeSpecifier)A_struct.getDeclSpecifier()).getName());
|
||||
IField[] fields = A_struct_type1.getFields();
|
||||
IField a1 = fields[0];
|
||||
IField c1 = fields[1];
|
||||
assertEquals( a1.getName().toString(), "a" ); //$NON-NLS-1$
|
||||
assertEquals( c1.getName().toString(), "c" ); //$NON-NLS-1$
|
||||
IBasicType a1_t = (IBasicType)a1.getType();
|
||||
IPointerType c1_t = (IPointerType)c1.getType();
|
||||
assertEquals( a1_t.getType(), IBasicType.t_int );
|
||||
assertTrue( c1_t.getType() instanceof IBasicType );
|
||||
assertTrue( ((IBasicType)c1_t.getType()).isLong() );
|
||||
assertEquals(a1.getName().toString(), "a"); //$NON-NLS-1$
|
||||
assertEquals(c1.getName().toString(), "c"); //$NON-NLS-1$
|
||||
IBasicType a1_t = (IBasicType) a1.getType();
|
||||
IPointerType c1_t = (IPointerType) c1.getType();
|
||||
assertEquals(a1_t.getType(), IBasicType.t_int);
|
||||
assertTrue(c1_t.getType() instanceof IBasicType);
|
||||
assertTrue(((IBasicType) c1_t.getType()).isLong());
|
||||
|
||||
// check A
|
||||
IASTName A_name1 = A.getDeclarators()[0].getName();
|
||||
assertEquals( A_name1.toString(), "A" ); //$NON-NLS-1$
|
||||
assertEquals(A_name1.toString(), "A"); //$NON-NLS-1$
|
||||
ITypedef A_var1 = (ITypedef)A_name1.resolveBinding();
|
||||
assertTrue( A.getDeclSpecifier() instanceof IASTElaboratedTypeSpecifier );
|
||||
assertTrue(A.getDeclSpecifier() instanceof IASTElaboratedTypeSpecifier);
|
||||
IASTName A_struct_name_2 = ((IASTElaboratedTypeSpecifier)A.getDeclSpecifier()).getName();
|
||||
assertEquals( A_struct_name_2.toString(), "A_struct" ); //$NON-NLS-1$
|
||||
assertEquals( ((IASTElaboratedTypeSpecifier)A.getDeclSpecifier()).getStorageClass(), IASTDeclSpecifier.sc_typedef );
|
||||
assertEquals(A_struct_name_2.toString(), "A_struct"); //$NON-NLS-1$
|
||||
assertEquals(((IASTElaboratedTypeSpecifier)A.getDeclSpecifier()).getStorageClass(), IASTDeclSpecifier.sc_typedef);
|
||||
ICompositeType A_struct_type2 = (ICompositeType)A_struct_name_2.resolveBinding();
|
||||
assertEquals( A_struct_type2, A_struct_type1 );
|
||||
assertEquals(A_struct_type2, A_struct_type1);
|
||||
|
||||
// check f_decl
|
||||
assertTrue( f_decl.getDeclarators()[0] instanceof IASTStandardFunctionDeclarator );
|
||||
IASTStandardFunctionDeclarator f_decltor1 = ((IASTStandardFunctionDeclarator)f_decl.getDeclarators()[0]);
|
||||
assertTrue(f_decl.getDeclarators()[0] instanceof IASTStandardFunctionDeclarator);
|
||||
IASTStandardFunctionDeclarator f_decltor1 = ((IASTStandardFunctionDeclarator) f_decl.getDeclarators()[0]);
|
||||
IASTName f_name1 = f_decltor1.getName();
|
||||
IFunction f_fun1 = (IFunction)f_name1.resolveBinding();
|
||||
assertEquals( f_name1.toString(), "f" ); //$NON-NLS-1$
|
||||
assertEquals( f_decltor1.getParameters().length, 1 );
|
||||
IFunction f_fun1 = (IFunction) f_name1.resolveBinding();
|
||||
assertEquals(f_name1.toString(), "f"); //$NON-NLS-1$
|
||||
assertEquals(f_decltor1.getParameters().length, 1);
|
||||
//IASTName x0 = f_decltor1.getParameters()[0].getDeclarator().getName();
|
||||
IASTName A_name2 = ((ICASTTypedefNameSpecifier)f_decltor1.getParameters()[0].getDeclSpecifier()).getName();
|
||||
assertEquals( A_name2.toString(), "A" ); //$NON-NLS-1$
|
||||
IASTName A_name2 = ((ICASTTypedefNameSpecifier) f_decltor1.getParameters()[0].getDeclSpecifier()).getName();
|
||||
assertEquals(A_name2.toString(), "A"); //$NON-NLS-1$
|
||||
ITypedef A_var2 = (ITypedef)A_name2.resolveBinding();
|
||||
assertEquals( A_var1, A_var2 );
|
||||
assertEquals(A_var1, A_var2);
|
||||
|
||||
// check f_def
|
||||
assertTrue( f_def.getDeclarator() instanceof ICASTKnRFunctionDeclarator );
|
||||
assertTrue(f_def.getDeclarator() instanceof ICASTKnRFunctionDeclarator);
|
||||
|
||||
ICASTKnRFunctionDeclarator f_decltor2 = (ICASTKnRFunctionDeclarator)f_def.getDeclarator();
|
||||
assertEquals( f_decltor2.getName().toString(), "f" ); //$NON-NLS-1$
|
||||
IFunction f_fun2 = (IFunction)f_decltor2.getName().resolveBinding();
|
||||
assertEquals( f_fun1, f_fun2 );
|
||||
ICBasicType f_ret_t = (ICBasicType)f_fun2.getType().getReturnType();
|
||||
assertEquals( f_ret_t.getType(), IBasicType.t_void );
|
||||
ICASTKnRFunctionDeclarator f_decltor2 = (ICASTKnRFunctionDeclarator) f_def.getDeclarator();
|
||||
assertEquals(f_decltor2.getName().toString(), "f"); //$NON-NLS-1$
|
||||
IFunction f_fun2 = (IFunction) f_decltor2.getName().resolveBinding();
|
||||
assertEquals(f_fun1, f_fun2);
|
||||
ICBasicType f_ret_t = (ICBasicType) f_fun2.getType().getReturnType();
|
||||
assertEquals(f_ret_t.getType(), IBasicType.t_void);
|
||||
IASTName x1 = f_decltor2.getParameterNames()[0];
|
||||
assertEquals( x1.toString(), "x" ); //$NON-NLS-1$
|
||||
IASTSimpleDeclaration x_parm = (IASTSimpleDeclaration)f_decltor2.getParameterDeclarations()[0];
|
||||
assertEquals(x1.toString(), "x"); //$NON-NLS-1$
|
||||
IASTSimpleDeclaration x_parm = (IASTSimpleDeclaration) f_decltor2.getParameterDeclarations()[0];
|
||||
IASTName x2 = x_parm.getDeclarators()[0].getName();
|
||||
assertEquals( x2.toString(), "x" ); //$NON-NLS-1$
|
||||
assertEquals( x_parm.getDeclarators()[0].getPointerOperators().length, 1 );
|
||||
IASTName A3 = ((IASTNamedTypeSpecifier)x_parm.getDeclSpecifier()).getName();
|
||||
assertEquals(x2.toString(), "x"); //$NON-NLS-1$
|
||||
assertEquals(x_parm.getDeclarators()[0].getPointerOperators().length, 1);
|
||||
IASTName A3 = ((IASTNamedTypeSpecifier) x_parm.getDeclSpecifier()).getName();
|
||||
ITypedef A_var3 = (ITypedef)A3.resolveBinding();
|
||||
assertEquals( A_var2, A_var3 );
|
||||
assertEquals( A3.toString(), "A" ); //$NON-NLS-1$;
|
||||
assertEquals( x1.resolveBinding(), x2.resolveBinding() );
|
||||
assertEquals(A_var2, A_var3);
|
||||
assertEquals(A3.toString(), "A"); //$NON-NLS-1$;
|
||||
assertEquals(x1.resolveBinding(), x2.resolveBinding());
|
||||
|
||||
// check f_def body
|
||||
assertTrue( f_def.getBody() instanceof IASTCompoundStatement );
|
||||
IASTCompoundStatement f_def_body = (IASTCompoundStatement)f_def.getBody();
|
||||
IASTExpressionStatement stmt1 = (IASTExpressionStatement)f_def_body.getStatements()[0];
|
||||
IASTExpressionStatement stmt2 = (IASTExpressionStatement)f_def_body.getStatements()[1];
|
||||
IASTName a2 = ((IASTFieldReference)((IASTBinaryExpression)stmt1.getExpression()).getOperand1()).getFieldName();
|
||||
assertEquals( ((IASTName)((ICInternalBinding)a1).getPhysicalNode()).resolveBinding(), a2.resolveBinding() );
|
||||
IASTName x3 = ((IASTIdExpression)((IASTFieldReference)((IASTBinaryExpression)stmt1.getExpression()).getOperand1()).getFieldOwner()).getName();
|
||||
assertEquals( x2.resolveBinding(), x3.resolveBinding() );
|
||||
assertEquals( ((IASTBinaryExpression)stmt1.getExpression()).getOperand2().toString(), "0" ); //$NON-NLS-1$
|
||||
assertTrue( ((IASTBinaryExpression)stmt2.getExpression()).getOperand1() instanceof IASTArraySubscriptExpression );
|
||||
assertTrue( ((IASTBinaryExpression)stmt2.getExpression()).getOperand2() instanceof IASTArraySubscriptExpression );
|
||||
IASTName c2 = ((IASTFieldReference)((IASTArraySubscriptExpression)((IASTBinaryExpression)stmt2.getExpression()).getOperand1()).getArrayExpression()).getFieldName();
|
||||
IASTName x4 = ((IASTIdExpression)((IASTFieldReference)((IASTArraySubscriptExpression)((IASTBinaryExpression)stmt2.getExpression()).getOperand1()).getArrayExpression()).getFieldOwner()).getName();
|
||||
IASTName c3 = ((IASTFieldReference)((IASTArraySubscriptExpression)((IASTBinaryExpression)stmt2.getExpression()).getOperand2()).getArrayExpression()).getFieldName();
|
||||
IASTName x5 = ((IASTIdExpression)((IASTFieldReference)((IASTArraySubscriptExpression)((IASTBinaryExpression)stmt2.getExpression()).getOperand1()).getArrayExpression()).getFieldOwner()).getName();
|
||||
assertEquals( ((IASTName)((ICInternalBinding)c1).getPhysicalNode()).resolveBinding(), c2.resolveBinding() );
|
||||
assertEquals( ((IASTName)((ICInternalBinding)c1).getPhysicalNode()).resolveBinding(), c3.resolveBinding() );
|
||||
assertEquals( x3.resolveBinding(), x4.resolveBinding() );
|
||||
assertEquals( x4.resolveBinding(), x5.resolveBinding() );
|
||||
assertTrue(f_def.getBody() instanceof IASTCompoundStatement);
|
||||
IASTCompoundStatement f_def_body = (IASTCompoundStatement) f_def.getBody();
|
||||
IASTExpressionStatement stmt1 = (IASTExpressionStatement) f_def_body.getStatements()[0];
|
||||
IASTExpressionStatement stmt2 = (IASTExpressionStatement) f_def_body.getStatements()[1];
|
||||
IASTName a2 = ((IASTFieldReference) ((IASTBinaryExpression) stmt1.getExpression()).getOperand1()).getFieldName();
|
||||
assertEquals(((IASTName) ((ICInternalBinding) a1).getPhysicalNode()).resolveBinding(), a2.resolveBinding());
|
||||
IASTName x3 = ((IASTIdExpression) ((IASTFieldReference) ((IASTBinaryExpression) stmt1.getExpression()).getOperand1()).getFieldOwner()).getName();
|
||||
assertEquals(x2.resolveBinding(), x3.resolveBinding());
|
||||
assertEquals(((IASTBinaryExpression) stmt1.getExpression()).getOperand2().toString(), "0"); //$NON-NLS-1$
|
||||
assertTrue(((IASTBinaryExpression) stmt2.getExpression()).getOperand1() instanceof IASTArraySubscriptExpression);
|
||||
assertTrue(((IASTBinaryExpression) stmt2.getExpression()).getOperand2() instanceof IASTArraySubscriptExpression);
|
||||
IASTName c2 = ((IASTFieldReference) ((IASTArraySubscriptExpression) ((IASTBinaryExpression) stmt2.getExpression()).getOperand1()).getArrayExpression()).getFieldName();
|
||||
IASTName x4 = ((IASTIdExpression) ((IASTFieldReference) ((IASTArraySubscriptExpression) ((IASTBinaryExpression) stmt2.getExpression()).getOperand1()).getArrayExpression()).getFieldOwner()).getName();
|
||||
IASTName c3 = ((IASTFieldReference) ((IASTArraySubscriptExpression) ((IASTBinaryExpression) stmt2.getExpression()).getOperand2()).getArrayExpression()).getFieldName();
|
||||
IASTName x5 = ((IASTIdExpression) ((IASTFieldReference) ((IASTArraySubscriptExpression) ((IASTBinaryExpression) stmt2.getExpression()).getOperand1()).getArrayExpression()).getFieldOwner()).getName();
|
||||
assertEquals(((IASTName) ((ICInternalBinding) c1).getPhysicalNode()).resolveBinding(), c2.resolveBinding());
|
||||
assertEquals(((IASTName) ((ICInternalBinding) c1).getPhysicalNode()).resolveBinding(), c3.resolveBinding());
|
||||
assertEquals(x3.resolveBinding(), x4.resolveBinding());
|
||||
assertEquals(x4.resolveBinding(), x5.resolveBinding());
|
||||
|
||||
// test CFunction.getParameters size
|
||||
IParameter[] f1_parms = f_fun1.getParameters();
|
||||
assertEquals( f1_parms.length, 1 );
|
||||
assertEquals(f1_parms.length, 1);
|
||||
|
||||
// test tu.getDeclarationsInAST(IBinding)
|
||||
IASTName[] decls = tu.getDeclarationsInAST(x2.resolveBinding());
|
||||
assertEquals( decls.length, 1 );
|
||||
assertEquals( decls[0], x2 );
|
||||
assertEquals(decls.length, 1);
|
||||
assertEquals(decls[0], x2);
|
||||
|
||||
assertNotNull( ((CScope)tu.getScope()).getBinding(CScope.NAMESPACE_TYPE_TAG, new String("A_struct").toCharArray()) ); //$NON-NLS-1$
|
||||
assertNotNull( ((CScope)tu.getScope()).getBinding(CScope.NAMESPACE_TYPE_OTHER, new String("A").toCharArray()) ); //$NON-NLS-1$
|
||||
assertNotNull( ((CScope)tu.getScope()).getBinding(CScope.NAMESPACE_TYPE_OTHER, new String("f").toCharArray()) ); //$NON-NLS-1$
|
||||
assertNotNull( ((CScope)((IASTCompoundStatement)f_def.getBody()).getScope()).getBinding(CScope.NAMESPACE_TYPE_OTHER, new String("x").toCharArray()) ); //$NON-NLS-1$
|
||||
assertNotNull(((CScope) tu.getScope()).getBinding(CScope.NAMESPACE_TYPE_TAG, new String("A_struct").toCharArray())); //$NON-NLS-1$
|
||||
assertNotNull(((CScope) tu.getScope()).getBinding(CScope.NAMESPACE_TYPE_OTHER, new String("A").toCharArray())); //$NON-NLS-1$
|
||||
assertNotNull(((CScope) tu.getScope()).getBinding(CScope.NAMESPACE_TYPE_OTHER, new String("f").toCharArray())); //$NON-NLS-1$
|
||||
assertNotNull(((CScope) ((IASTCompoundStatement) f_def.getBody()).getScope()).getBinding(CScope.NAMESPACE_TYPE_OTHER, new String("x").toCharArray())); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
public void testKRC_monop_cards2() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
buffer.append( "int\n" ); //$NON-NLS-1$
|
||||
buffer.append( "getinp(prompt, list)\n" ); //$NON-NLS-1$
|
||||
buffer.append( " const char *prompt, *const list[];\n" ); //$NON-NLS-1$
|
||||
buffer.append( "{\n *list[1] = 'a';\n}\n" ); //$NON-NLS-1$
|
||||
IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C, true );
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int\n"); //$NON-NLS-1$
|
||||
buffer.append("getinp(prompt, list)\n"); //$NON-NLS-1$
|
||||
buffer.append(" const char *prompt, *const list[];\n"); //$NON-NLS-1$
|
||||
buffer.append("{\n *list[1] = 'a';\n}\n"); //$NON-NLS-1$
|
||||
IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.C, true);
|
||||
|
||||
IASTFunctionDefinition getinp = (IASTFunctionDefinition)tu.getDeclarations()[0];
|
||||
IASTFunctionDefinition getinp = (IASTFunctionDefinition) tu.getDeclarations()[0];
|
||||
|
||||
IASTName prompt1 = ((ICASTKnRFunctionDeclarator)getinp.getDeclarator()).getParameterNames()[0];
|
||||
IASTName list1 = ((ICASTKnRFunctionDeclarator)getinp.getDeclarator()).getParameterNames()[1];
|
||||
IASTName prompt2 = ((IASTSimpleDeclaration)((ICASTKnRFunctionDeclarator)getinp.getDeclarator()).getParameterDeclarations()[0]).getDeclarators()[0].getName();
|
||||
IASTName list2 = ((IASTSimpleDeclaration)((ICASTKnRFunctionDeclarator)getinp.getDeclarator()).getParameterDeclarations()[0]).getDeclarators()[1].getName();
|
||||
IASTName list3 = ((IASTIdExpression)((IASTArraySubscriptExpression)((IASTUnaryExpression)((IASTBinaryExpression)((IASTExpressionStatement)((IASTCompoundStatement)getinp.getBody()).getStatements()[0]).getExpression()).getOperand1()).getOperand()).getArrayExpression()).getName();
|
||||
IASTName prompt1 = ((ICASTKnRFunctionDeclarator) getinp.getDeclarator()).getParameterNames()[0];
|
||||
IASTName list1 = ((ICASTKnRFunctionDeclarator) getinp.getDeclarator()).getParameterNames()[1];
|
||||
IASTName prompt2 = ((IASTSimpleDeclaration) ((ICASTKnRFunctionDeclarator) getinp.getDeclarator()).getParameterDeclarations()[0]).getDeclarators()[0].getName();
|
||||
IASTName list2 = ((IASTSimpleDeclaration) ((ICASTKnRFunctionDeclarator) getinp.getDeclarator()).getParameterDeclarations()[0]).getDeclarators()[1].getName();
|
||||
IASTName list3 = ((IASTIdExpression) ((IASTArraySubscriptExpression) ((IASTUnaryExpression) ((IASTBinaryExpression) ((IASTExpressionStatement) ((IASTCompoundStatement) getinp.getBody()).getStatements()[0]).getExpression()).getOperand1()).getOperand()).getArrayExpression()).getName();
|
||||
|
||||
assertEquals( prompt1.resolveBinding(), prompt2.resolveBinding() );
|
||||
assertEquals( list1.resolveBinding(), list2.resolveBinding() );
|
||||
assertEquals( list2.resolveBinding(), list3.resolveBinding() );
|
||||
assertEquals(prompt1.resolveBinding(), prompt2.resolveBinding());
|
||||
assertEquals(list1.resolveBinding(), list2.resolveBinding());
|
||||
assertEquals(list2.resolveBinding(), list3.resolveBinding());
|
||||
|
||||
IASTSimpleDeclaration parm_decl = (IASTSimpleDeclaration)((ICASTKnRFunctionDeclarator)getinp.getDeclarator()).getParameterDeclarations()[0];
|
||||
assertTrue( ((IASTSimpleDeclSpecifier)parm_decl.getDeclSpecifier()).isConst() );
|
||||
assertEquals( ((IASTSimpleDeclSpecifier)parm_decl.getDeclSpecifier()).getType(), IASTSimpleDeclSpecifier.t_char );
|
||||
IASTSimpleDeclaration parm_decl = (IASTSimpleDeclaration) ((ICASTKnRFunctionDeclarator) getinp.getDeclarator()).getParameterDeclarations()[0];
|
||||
assertTrue(((IASTSimpleDeclSpecifier) parm_decl.getDeclSpecifier()).isConst());
|
||||
assertEquals(((IASTSimpleDeclSpecifier) parm_decl.getDeclSpecifier()).getType(), IASTSimpleDeclSpecifier.t_char);
|
||||
IASTDeclarator prompt = parm_decl.getDeclarators()[0];
|
||||
IASTArrayDeclarator list = (IASTArrayDeclarator)parm_decl.getDeclarators()[1];
|
||||
assertEquals( prompt.getName().toString(), "prompt" ); //$NON-NLS-1$
|
||||
assertEquals( prompt.getPointerOperators().length, 1 );
|
||||
assertEquals( list.getName().toString(), "list" ); //$NON-NLS-1$
|
||||
assertEquals( list.getArrayModifiers().length, 1 );
|
||||
assertNull( list.getArrayModifiers()[0].getConstantExpression() );
|
||||
assertEquals( list.getPointerOperators().length, 1 );
|
||||
IASTArrayDeclarator list = (IASTArrayDeclarator) parm_decl.getDeclarators()[1];
|
||||
assertEquals(prompt.getName().toString(), "prompt"); //$NON-NLS-1$
|
||||
assertEquals(prompt.getPointerOperators().length, 1);
|
||||
assertEquals(list.getName().toString(), "list"); //$NON-NLS-1$
|
||||
assertEquals(list.getArrayModifiers().length, 1);
|
||||
assertNull(list.getArrayModifiers()[0].getConstantExpression());
|
||||
assertEquals(list.getPointerOperators().length, 1);
|
||||
|
||||
// test tu.getDeclarationsInAST(IBinding)
|
||||
IASTName[] decls = tu.getDeclarationsInAST(list3.resolveBinding());
|
||||
assertEquals( decls.length, 1 );
|
||||
assertEquals( decls[0], list2 );
|
||||
assertEquals(decls.length, 1);
|
||||
assertEquals(decls[0], list2);
|
||||
|
||||
decls = tu.getDeclarationsInAST(prompt1.resolveBinding());
|
||||
assertEquals( decls.length, 1 );
|
||||
assertEquals( decls[0], prompt2 );
|
||||
assertEquals(decls.length, 1);
|
||||
assertEquals(decls[0], prompt2);
|
||||
}
|
||||
|
||||
public void testKRC_getParametersOrder() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
buffer.append( "int f(a, b) int b,a;{}\n" ); //$NON-NLS-1$
|
||||
IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C, true );
|
||||
|
||||
IASTFunctionDefinition f = (IASTFunctionDefinition)tu.getDeclarations()[0];
|
||||
ICASTKnRFunctionDeclarator f_decltor = (ICASTKnRFunctionDeclarator)f.getDeclarator();
|
||||
IFunction f_fun = (IFunction)f_decltor.getName().resolveBinding();
|
||||
IParameter [] f_parms = f_fun.getParameters();
|
||||
assertEquals( f_parms.length, 2 );
|
||||
assertEquals( ((CParameter)f_parms[0]).getName(), "a" ); //$NON-NLS-1$
|
||||
assertEquals( ((CParameter)f_parms[1]).getName(), "b" ); //$NON-NLS-1$
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("int f(a, b) int b,a;{}\n"); //$NON-NLS-1$
|
||||
IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.C, true);
|
||||
|
||||
IASTFunctionDefinition f = (IASTFunctionDefinition) tu.getDeclarations()[0];
|
||||
ICASTKnRFunctionDeclarator f_decltor = (ICASTKnRFunctionDeclarator) f.getDeclarator();
|
||||
IFunction f_fun = (IFunction) f_decltor.getName().resolveBinding();
|
||||
IParameter[] f_parms = f_fun.getParameters();
|
||||
assertEquals(f_parms.length, 2);
|
||||
assertEquals(((CParameter) f_parms[0]).getName(), "a"); //$NON-NLS-1$
|
||||
assertEquals(((CParameter) f_parms[1]).getName(), "b"); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
public void testKRC_Ethereal_1() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
buffer.append( "struct symbol {\n" ); //$NON-NLS-1$
|
||||
buffer.append( "int lambda;\n};\n" ); //$NON-NLS-1$
|
||||
buffer.append( "struct lemon {\n" ); //$NON-NLS-1$
|
||||
buffer.append( "struct symbol **symbols;\n" ); //$NON-NLS-1$
|
||||
buffer.append( "int errorcnt;\n};\n" ); //$NON-NLS-1$
|
||||
buffer.append( "void f(lemp)\n" ); //$NON-NLS-1$
|
||||
buffer.append( "struct lemon *lemp;\n{\n" ); //$NON-NLS-1$
|
||||
buffer.append( "lemp->symbols[1]->lambda = 1;\n" ); //$NON-NLS-1$
|
||||
buffer.append( "lemp->errorcnt++;}\n" ); //$NON-NLS-1$
|
||||
IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.C, true );
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("struct symbol {\n"); //$NON-NLS-1$
|
||||
buffer.append("int lambda;\n};\n"); //$NON-NLS-1$
|
||||
buffer.append("struct lemon {\n"); //$NON-NLS-1$
|
||||
buffer.append("struct symbol **symbols;\n"); //$NON-NLS-1$
|
||||
buffer.append("int errorcnt;\n};\n"); //$NON-NLS-1$
|
||||
buffer.append("void f(lemp)\n"); //$NON-NLS-1$
|
||||
buffer.append("struct lemon *lemp;\n{\n"); //$NON-NLS-1$
|
||||
buffer.append("lemp->symbols[1]->lambda = 1;\n"); //$NON-NLS-1$
|
||||
buffer.append("lemp->errorcnt++;}\n"); //$NON-NLS-1$
|
||||
IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.C, true);
|
||||
|
||||
IASTSimpleDeclaration symbol_decl = (IASTSimpleDeclaration)tu.getDeclarations()[0];
|
||||
IASTSimpleDeclaration lemon_decl = (IASTSimpleDeclaration)tu.getDeclarations()[1];
|
||||
IASTFunctionDefinition f_def = (IASTFunctionDefinition)tu.getDeclarations()[2];
|
||||
IASTSimpleDeclaration symbol_decl = (IASTSimpleDeclaration) tu.getDeclarations()[0];
|
||||
IASTSimpleDeclaration lemon_decl = (IASTSimpleDeclaration) tu.getDeclarations()[1];
|
||||
IASTFunctionDefinition f_def = (IASTFunctionDefinition) tu.getDeclarations()[2];
|
||||
|
||||
IASTName symbol_name1 = ((IASTCompositeTypeSpecifier)symbol_decl.getDeclSpecifier()).getName();
|
||||
IASTName lambda_name1 = ((IASTSimpleDeclaration)((IASTCompositeTypeSpecifier)symbol_decl.getDeclSpecifier()).getMembers()[0]).getDeclarators()[0].getName();
|
||||
IASTName lemon_name1 = ((IASTCompositeTypeSpecifier)lemon_decl.getDeclSpecifier()).getName();
|
||||
IASTName symbol_name2 = ((IASTElaboratedTypeSpecifier)((IASTSimpleDeclaration)((IASTCompositeTypeSpecifier)lemon_decl.getDeclSpecifier()).getMembers()[0]).getDeclSpecifier()).getName();
|
||||
IASTName symbols_name1 = ((IASTSimpleDeclaration)((IASTCompositeTypeSpecifier)lemon_decl.getDeclSpecifier()).getMembers()[0]).getDeclarators()[0].getName();
|
||||
IASTName errorcnt_name1 = ((IASTSimpleDeclaration)((IASTCompositeTypeSpecifier)lemon_decl.getDeclSpecifier()).getMembers()[1]).getDeclarators()[0].getName();
|
||||
IASTName lemp_name1 = ((ICASTKnRFunctionDeclarator)f_def.getDeclarator()).getParameterNames()[0];
|
||||
IASTName lemon_name2 = ((IASTElaboratedTypeSpecifier)((IASTSimpleDeclaration)((ICASTKnRFunctionDeclarator)f_def.getDeclarator()).getParameterDeclarations()[0]).getDeclSpecifier()).getName();
|
||||
IASTName lemp_name2 = ((IASTSimpleDeclaration)((ICASTKnRFunctionDeclarator)f_def.getDeclarator()).getParameterDeclarations()[0]).getDeclarators()[0].getName();
|
||||
IASTName lemp_name3 = ((IASTIdExpression)((IASTFieldReference)((IASTArraySubscriptExpression)((IASTFieldReference)((IASTBinaryExpression)((IASTExpressionStatement)((IASTCompoundStatement)f_def.getBody()).getStatements()[0]).getExpression()).getOperand1()).getFieldOwner()).getArrayExpression()).getFieldOwner()).getName();
|
||||
IASTName symbols_name2 = ((IASTFieldReference)((IASTArraySubscriptExpression)((IASTFieldReference)((IASTBinaryExpression)((IASTExpressionStatement)((IASTCompoundStatement)f_def.getBody()).getStatements()[0]).getExpression()).getOperand1()).getFieldOwner()).getArrayExpression()).getFieldName();
|
||||
IASTName lambda_name2 = ((IASTFieldReference)((IASTBinaryExpression)((IASTExpressionStatement)((IASTCompoundStatement)f_def.getBody()).getStatements()[0]).getExpression()).getOperand1()).getFieldName();
|
||||
IASTName symbol_name1 = ((IASTCompositeTypeSpecifier) symbol_decl.getDeclSpecifier()).getName();
|
||||
IASTName lambda_name1 = ((IASTSimpleDeclaration) ((IASTCompositeTypeSpecifier) symbol_decl.getDeclSpecifier()).getMembers()[0]).getDeclarators()[0].getName();
|
||||
IASTName lemon_name1 = ((IASTCompositeTypeSpecifier) lemon_decl.getDeclSpecifier()).getName();
|
||||
IASTName symbol_name2 = ((IASTElaboratedTypeSpecifier) ((IASTSimpleDeclaration) ((IASTCompositeTypeSpecifier) lemon_decl.getDeclSpecifier()).getMembers()[0]).getDeclSpecifier()).getName();
|
||||
IASTName symbols_name1 = ((IASTSimpleDeclaration) ((IASTCompositeTypeSpecifier) lemon_decl.getDeclSpecifier()).getMembers()[0]).getDeclarators()[0].getName();
|
||||
IASTName errorcnt_name1 = ((IASTSimpleDeclaration) ((IASTCompositeTypeSpecifier) lemon_decl.getDeclSpecifier()).getMembers()[1]).getDeclarators()[0].getName();
|
||||
IASTName lemp_name1 = ((ICASTKnRFunctionDeclarator) f_def.getDeclarator()).getParameterNames()[0];
|
||||
IASTName lemon_name2 = ((IASTElaboratedTypeSpecifier) ((IASTSimpleDeclaration) ((ICASTKnRFunctionDeclarator) f_def.getDeclarator()).getParameterDeclarations()[0]).getDeclSpecifier()).getName();
|
||||
IASTName lemp_name2 = ((IASTSimpleDeclaration) ((ICASTKnRFunctionDeclarator) f_def.getDeclarator()).getParameterDeclarations()[0]).getDeclarators()[0].getName();
|
||||
IASTName lemp_name3 = ((IASTIdExpression) ((IASTFieldReference) ((IASTArraySubscriptExpression) ((IASTFieldReference) ((IASTBinaryExpression) ((IASTExpressionStatement) ((IASTCompoundStatement) f_def.getBody()).getStatements()[0]).getExpression()).getOperand1()).getFieldOwner()).getArrayExpression()).getFieldOwner()).getName();
|
||||
IASTName symbols_name2 = ((IASTFieldReference) ((IASTArraySubscriptExpression) ((IASTFieldReference) ((IASTBinaryExpression) ((IASTExpressionStatement) ((IASTCompoundStatement) f_def.getBody()).getStatements()[0]).getExpression()).getOperand1()).getFieldOwner()).getArrayExpression()).getFieldName();
|
||||
IASTName lambda_name2 = ((IASTFieldReference) ((IASTBinaryExpression) ((IASTExpressionStatement) ((IASTCompoundStatement) f_def.getBody()).getStatements()[0]).getExpression()).getOperand1()).getFieldName();
|
||||
|
||||
IASTName lemp_name4 = ((IASTIdExpression)((IASTFieldReference)((IASTUnaryExpression)((IASTExpressionStatement)((IASTCompoundStatement)f_def.getBody()).getStatements()[1]).getExpression()).getOperand()).getFieldOwner()).getName();
|
||||
IASTName errorcnt_name2 = ((IASTFieldReference)((IASTUnaryExpression)((IASTExpressionStatement)((IASTCompoundStatement)f_def.getBody()).getStatements()[1]).getExpression()).getOperand()).getFieldName();
|
||||
IASTName lemp_name4 = ((IASTIdExpression) ((IASTFieldReference) ((IASTUnaryExpression) ((IASTExpressionStatement) ((IASTCompoundStatement) f_def.getBody()).getStatements()[1]).getExpression()).getOperand()).getFieldOwner()).getName();
|
||||
IASTName errorcnt_name2 = ((IASTFieldReference) ((IASTUnaryExpression) ((IASTExpressionStatement) ((IASTCompoundStatement) f_def.getBody()).getStatements()[1]).getExpression()).getOperand()).getFieldName();
|
||||
|
||||
assertEquals( symbol_name1.resolveBinding(), symbol_name2.resolveBinding() );
|
||||
assertEquals( lambda_name1.resolveBinding(), lambda_name2.resolveBinding() );
|
||||
assertEquals( lemon_name1.resolveBinding(), lemon_name2.resolveBinding() );
|
||||
assertEquals( symbols_name1.resolveBinding(), symbols_name2.resolveBinding() );
|
||||
assertEquals( errorcnt_name1.resolveBinding(), errorcnt_name2.resolveBinding() );
|
||||
assertEquals( lemp_name1.resolveBinding(), lemp_name2.resolveBinding() );
|
||||
assertEquals( lemp_name2.resolveBinding(), lemp_name3.resolveBinding() );
|
||||
assertEquals( lemp_name3.resolveBinding(), lemp_name4.resolveBinding() );
|
||||
assertEquals(symbol_name1.resolveBinding(), symbol_name2.resolveBinding());
|
||||
assertEquals(lambda_name1.resolveBinding(), lambda_name2.resolveBinding());
|
||||
assertEquals(lemon_name1.resolveBinding(), lemon_name2.resolveBinding());
|
||||
assertEquals(symbols_name1.resolveBinding(), symbols_name2.resolveBinding());
|
||||
assertEquals(errorcnt_name1.resolveBinding(), errorcnt_name2.resolveBinding());
|
||||
assertEquals(lemp_name1.resolveBinding(), lemp_name2.resolveBinding());
|
||||
assertEquals(lemp_name2.resolveBinding(), lemp_name3.resolveBinding());
|
||||
assertEquals(lemp_name3.resolveBinding(), lemp_name4.resolveBinding());
|
||||
}
|
||||
|
||||
public void testBug97447() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
buffer.append("void f( a ) int a; {} \n"); //$NON-NLS-1$
|
||||
buffer.append("void f( int ); \n"); //$NON-NLS-1$
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("void f(a) int a; {} \n"); //$NON-NLS-1$
|
||||
buffer.append("void f(int); \n"); //$NON-NLS-1$
|
||||
|
||||
IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.C, true);
|
||||
CNameCollector col = new CNameCollector();
|
||||
|
@ -619,38 +617,38 @@ public class AST2KnRTests extends AST2BaseTest {
|
|||
}
|
||||
|
||||
public void testBug100104() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("typedef int ush;\n"); //$NON-NLS-1$
|
||||
buffer.append("int f()\n"); //$NON-NLS-1$
|
||||
buffer.append("{\n"); //$NON-NLS-1$
|
||||
buffer.append("int a=1;\n"); //$NON-NLS-1$
|
||||
buffer.append("((ush)(a)*(ush)(a) * a);\n"); //$NON-NLS-1$
|
||||
buffer.append("((ush) (a)*(ush) (a) * a);\n"); //$NON-NLS-1$
|
||||
buffer.append("{\n"); //$NON-NLS-1$
|
||||
buffer.append("};\n"); //$NON-NLS-1$
|
||||
buffer.append("}\n"); //$NON-NLS-1$
|
||||
|
||||
IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.C, true, true);
|
||||
assertTrue( tu.getDeclarations()[0] instanceof IASTSimpleDeclaration );
|
||||
assertTrue( tu.getDeclarations()[1] instanceof IASTFunctionDefinition );
|
||||
IASTStatement[] stmts = ((IASTCompoundStatement)((IASTFunctionDefinition)tu.getDeclarations()[1]).getBody()).getStatements();
|
||||
assertTrue( stmts[0] instanceof IASTDeclarationStatement );
|
||||
assertTrue( stmts[1] instanceof IASTExpressionStatement );
|
||||
assertTrue( stmts[2] instanceof IASTCompoundStatement );
|
||||
assertTrue( stmts[3] instanceof IASTNullStatement );
|
||||
assertTrue(tu.getDeclarations()[0] instanceof IASTSimpleDeclaration);
|
||||
assertTrue(tu.getDeclarations()[1] instanceof IASTFunctionDefinition);
|
||||
IASTStatement[] stmts = ((IASTCompoundStatement) ((IASTFunctionDefinition) tu.getDeclarations()[1]).getBody()).getStatements();
|
||||
assertTrue(stmts[0] instanceof IASTDeclarationStatement);
|
||||
assertTrue(stmts[1] instanceof IASTExpressionStatement);
|
||||
assertTrue(stmts[2] instanceof IASTCompoundStatement);
|
||||
assertTrue(stmts[3] instanceof IASTNullStatement);
|
||||
}
|
||||
|
||||
// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=203050
|
||||
public void testBug203050() throws Exception {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("typedef long time_t;\n" + //$NON-NLS-1$
|
||||
"\n" + //$NON-NLS-1$
|
||||
"void (foo)(timep)\n" + //$NON-NLS-1$
|
||||
"void (foo) (timep)\n" + //$NON-NLS-1$
|
||||
" const time_t * const timep;\n" + //$NON-NLS-1$
|
||||
"{\n" + //$NON-NLS-1$
|
||||
" struct tm tmp;\n" + //$NON-NLS-1$
|
||||
" bar(timep, &tmp);\n" + //$NON-NLS-1$
|
||||
"}\n" + //$NON-NLS-1$
|
||||
"int (bar)(timep, tmp)\n" + //$NON-NLS-1$
|
||||
"int (bar) (timep, tmp)\n" + //$NON-NLS-1$
|
||||
" const time_t * const timep;\n" + //$NON-NLS-1$
|
||||
" struct tm * tmp;\n" + //$NON-NLS-1$
|
||||
"{\n" + //$NON-NLS-1$
|
||||
|
@ -658,23 +656,22 @@ public class AST2KnRTests extends AST2BaseTest {
|
|||
"}\n"); //$NON-NLS-1$
|
||||
|
||||
IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.C, true, true);
|
||||
assertTrue( tu.getDeclarations()[0] instanceof IASTSimpleDeclaration );
|
||||
assertTrue( tu.getDeclarations()[1] instanceof IASTFunctionDefinition );
|
||||
assertTrue( tu.getDeclarations()[2] instanceof IASTFunctionDefinition );
|
||||
IASTStatement[] stmts = ((IASTCompoundStatement)((IASTFunctionDefinition)tu.getDeclarations()[1]).getBody()).getStatements();
|
||||
assertTrue( stmts[0] instanceof IASTDeclarationStatement );
|
||||
assertTrue( stmts[1] instanceof IASTExpressionStatement );
|
||||
IASTExpression expr= ((IASTExpressionStatement)stmts[1]).getExpression();
|
||||
assertTrue(tu.getDeclarations()[0] instanceof IASTSimpleDeclaration);
|
||||
assertTrue(tu.getDeclarations()[1] instanceof IASTFunctionDefinition);
|
||||
assertTrue(tu.getDeclarations()[2] instanceof IASTFunctionDefinition);
|
||||
IASTStatement[] stmts = ((IASTCompoundStatement) ((IASTFunctionDefinition) tu.getDeclarations()[1]).getBody()).getStatements();
|
||||
assertTrue(stmts[0] instanceof IASTDeclarationStatement);
|
||||
assertTrue(stmts[1] instanceof IASTExpressionStatement);
|
||||
IASTExpression expr= ((IASTExpressionStatement) stmts[1]).getExpression();
|
||||
assertTrue(expr instanceof IASTFunctionCallExpression);
|
||||
IASTIdExpression fnameExpr= (IASTIdExpression)((IASTFunctionCallExpression)expr).getFunctionNameExpression();
|
||||
IASTIdExpression fnameExpr= (IASTIdExpression) ((IASTFunctionCallExpression) expr).getFunctionNameExpression();
|
||||
fnameExpr.getName().resolveBinding();
|
||||
|
||||
IASTName fname= ((IASTFunctionDefinition)tu.getDeclarations()[2]).getDeclarator().getName();
|
||||
IASTName fname= ((IASTFunctionDefinition) tu.getDeclarations()[2]).getDeclarator().getName();
|
||||
try {
|
||||
fname.resolveBinding();
|
||||
} catch (StackOverflowError e) {
|
||||
fail(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue