6501c2fce1
* gdb.cp/converts.cc (foo3_1): New function. (foo3_2): New functions. * gdb.cp/converts.exp: Add tests for int to pointer conversion and null pointer conversions of integer constant zero. Add test to check if all arguments are checked for incompatible conversion BADNESS.
66 lines
1.8 KiB
C++
66 lines
1.8 KiB
C++
class A {};
|
|
class B : public A {};
|
|
|
|
typedef A TA1;
|
|
typedef A TA2;
|
|
typedef TA2 TA3;
|
|
|
|
int foo0_1 (TA1) { return 1; }
|
|
int foo0_2 (TA3) { return 2; }
|
|
int foo0_3 (A***) { return 3; }
|
|
|
|
int foo1_1 (char *) {return 11;}
|
|
int foo1_2 (char[]) {return 12;}
|
|
int foo1_3 (int*) {return 13;}
|
|
int foo1_4 (A*) {return 14;}
|
|
int foo1_5 (void*) {return 15;}
|
|
int foo1_6 (void**) {return 16;}
|
|
int foo1_7 (bool) {return 17;}
|
|
int foo1_8 (long) {return 18;}
|
|
|
|
int foo2_1 (char** ) {return 21;}
|
|
int foo2_2 (char[][1]) {return 22;}
|
|
int foo2_3 (char *[]) {return 23;}
|
|
int foo2_4 (int *[]) {return 24;}
|
|
|
|
int foo3_1 (int a, const char **b) { return 31; }
|
|
int foo3_2 (int a, int b) { return 32; }
|
|
int foo3_2 (int a, const char **b) { return 320; }
|
|
|
|
int main()
|
|
{
|
|
|
|
TA2 ta; // typedef to..
|
|
foo0_1 (ta); // ..another typedef
|
|
foo0_2 (ta); // ..typedef of a typedef
|
|
|
|
B*** bppp; // Pointer-to-pointer-to-pointer-to-derived..
|
|
//foo0_3(bppp); // Pointer-to-pointer-to-pointer base.
|
|
foo0_3((A***)bppp); // to ensure that the function is emitted.
|
|
|
|
char *a; // pointer to..
|
|
B *bp;
|
|
foo1_1 (a); // ..pointer
|
|
foo1_2 (a); // ..array
|
|
foo1_3 ((int*)a); // ..pointer of wrong type
|
|
foo1_3 ((int*)bp); // ..pointer of wrong type
|
|
foo1_4 (bp); // ..ancestor pointer
|
|
foo1_5 (bp); // ..void pointer
|
|
foo1_6 ((void**)bp); // ..void pointer pointer
|
|
foo1_7 (bp); // ..boolean
|
|
foo1_8 ((long)bp); // ..long int
|
|
|
|
char **b; // pointer pointer to..
|
|
char ba[1][1];
|
|
foo1_5 (b); // ..void pointer
|
|
foo2_1 (b); // ..pointer pointer
|
|
foo2_2 (ba); // ..array of arrays
|
|
foo2_3 (b); // ..array of pointers
|
|
foo2_4 ((int**)b); // ..array of wrong pointers
|
|
|
|
foo3_1 (0, 0);
|
|
foo3_2 (0, static_cast<char const**> (0));
|
|
foo3_2 (0, 0);
|
|
|
|
return 0; // end of main
|
|
}
|