| // { 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; |
| } |