diff options
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.other/lookup19.C')
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.other/lookup19.C | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.other/lookup19.C b/gcc/testsuite/g++.old-deja/g++.other/lookup19.C new file mode 100644 index 000000000..d4104f0fc --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.other/lookup19.C @@ -0,0 +1,54 @@ +// { dg-do assemble } +// Test for proper handling of type lookup for conversion operator names. + +// Test 1: Only at file scope +typedef int B; +struct A +{ + int B; + operator B *(); // { dg-error "" } +}; + +A::operator B * () // { dg-error "" } +{ + return 0; +} + +// Test 2: Only at class scope +struct C +{ + typedef int D; + operator D *(); +}; + +int D; +C::operator D * () +{ + return 0; +} + +// Test 3: Matching +struct E +{ + typedef int F; + operator F *(); +}; + +typedef int F; +E::operator F * () +{ + return 0; +} + +// Test 4: Conflicting +struct G +{ + typedef int H; + operator H *(); +}; + +typedef double H; +G::operator H * () +{ + return 0; +} |