55 lines
632 B
C
55 lines
632 B
C
// { 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;
|
|
}
|