Commit | Line | Data |
---|---|---|
7062b0a0 SW |
1 | class A {}; |
2 | class B : public A {}; | |
3 | ||
4 | typedef A TA1; | |
5 | typedef A TA2; | |
6 | typedef TA2 TA3; | |
7 | ||
8 | int foo0_1 (TA1) { return 1; } | |
9 | int foo0_2 (TA3) { return 2; } | |
10 | int foo0_3 (A***) { return 3; } | |
11 | ||
12 | int foo1_1 (char *) {return 11;} | |
13 | int foo1_2 (char[]) {return 12;} | |
14 | int foo1_3 (int*) {return 13;} | |
15 | int foo1_4 (A*) {return 14;} | |
16 | int foo1_5 (void*) {return 15;} | |
026ffab7 SW |
17 | int foo1_6 (void**) {return 16;} |
18 | int foo1_7 (bool) {return 17;} | |
19 | int foo1_8 (long) {return 18;} | |
7062b0a0 SW |
20 | |
21 | int foo2_1 (char** ) {return 21;} | |
22 | int foo2_2 (char[][1]) {return 22;} | |
23 | int foo2_3 (char *[]) {return 23;} | |
24 | int foo2_4 (int *[]) {return 24;} | |
25 | ||
26 | int main() | |
27 | { | |
28 | ||
29 | TA2 ta; // typedef to.. | |
30 | foo0_1 (ta); // ..another typedef | |
31 | foo0_2 (ta); // ..typedef of a typedef | |
32 | ||
33 | B*** bppp; // Pointer-to-pointer-to-pointer-to-derived.. | |
34 | //foo0_3(bppp); // Pointer-to-pointer-to-pointer base. | |
35 | foo0_3((A***)bppp); // to ensure that the function is emitted. | |
36 | ||
37 | char *a; // pointer to.. | |
38 | B *bp; | |
39 | foo1_1 (a); // ..pointer | |
40 | foo1_2 (a); // ..array | |
41 | foo1_3 ((int*)a); // ..pointer of wrong type | |
42 | foo1_3 ((int*)bp); // ..pointer of wrong type | |
43 | foo1_4 (bp); // ..ancestor pointer | |
44 | foo1_5 (bp); // ..void pointer | |
026ffab7 SW |
45 | foo1_6 ((void**)bp); // ..void pointer pointer |
46 | foo1_7 (bp); // ..boolean | |
47 | foo1_8 ((long)bp); // ..long int | |
7062b0a0 SW |
48 | |
49 | char **b; // pointer pointer to.. | |
50 | char ba[1][1]; | |
51 | foo1_5 (b); // ..void pointer | |
52 | foo2_1 (b); // ..pointer pointer | |
53 | foo2_2 (ba); // ..array of arrays | |
54 | foo2_3 (b); // ..array of pointers | |
55 | foo2_4 ((int**)b); // ..array of wrong pointers | |
56 | return 0; // end of main | |
57 | } |