2 // Contributed by Gabriel Dos Reis <gdr at integrable-solutions dot net>
3 // PR c++/2204: Check for parameters of abstract type in function declarations.
8 struct X { // { dg-message "note" }
9 virtual void xfunc(void) = 0; // { dg-message "note" }
13 void g(X parm1) {} // { dg-error "abstract" }
15 void g(X (*parm3)[2]) {}
20 void g(X parm4) {} // { dg-error "abstract" }
22 void g(X (*parm6)[2]) {}
25 template struct Y2<42>;
29 struct X1 { // { dg-message "note" }
30 virtual void xfunc(void) = 0; // { dg-message "note" }
31 void g(X1 parm7) {} // { dg-error "abstract" }
32 void g(X1 parm8[2]) {}
33 void g(X1 (*parm9)[2]) {}
37 struct X2 { // { dg-message "note" }
38 virtual void xfunc(void) = 0; // { dg-message "note" }
39 void g(X2 parm10) {} // { dg-error "abstract" }
40 void g(X2 parm11[2]) {}
41 void g(X2 (*parm12)[2]) {}
44 template struct X2<42>;
48 struct X { // { dg-message "note" }
49 virtual void xfunc(void) = 0; // { dg-message "note" }
51 void g(X parm13) {} // { dg-error "abstract" }
52 void g(X parm14[2]) {}
53 void g(X (*parm15)[2]) {}
56 void g(X parm16) {} // { dg-error "abstract" }
58 void g(X parm17[2]) {}
60 void g(X (*parm18)[2]) {}
62 template void g<42>(X);