1 // { dg-do assemble  }
2 // GROUPS passed member-pointers error-reporting
3 struct Y
4 {
5   struct X
6     {
7       int A;
fooY::X8       int Y::X::* foo () { undef1(1); return &Y::X::A; }// { dg-error "28:'undef1' was not declared" } foo().*
barY::X9       int bar () { return A; }
10     };
11 };
12 
foo()13 int Y::X::* foo ()
14 {
15   undef2(1);// { dg-error "3:'undef2' was not declared" } foo().*
16   return &Y::X::A;
17 }
18 
foo2()19 int Y::X::* (* foo2 ())()
20 {
21   undef3(1);// { dg-error "3:'undef3' was not declared" } foo().*
22   return foo;
23 }
24 
25 int (Y::X::* bar2 ()) ()
26 {
27   undef4(1);// { dg-error "3:'undef4' was not declared" } foo\(\).*
28   return Y::X::bar;// { dg-error "" } foo\(\).*
29 }
30 
31 int Y::X::* (Y::X::* foo3 ())()
32 {
33   undef5(1);// { dg-error "3:'undef5' was not declared" } foo().*
34   return Y::X::foo;// { dg-error "" } foo().*
35 }
36