Merge from mainline
[official-gcc.git] / gcc / testsuite / g++.old-deja / g++.jason / report.C
blob77fd7c32d8c47848c905d84b7b21ae78bf3c6ee4
1 // { dg-do assemble  }
2 // { dg-options "-Wreturn-type" }
3 // GROUPS passed error-reporting
5 // DR 295 allows qualification via typedef
7 template <char C>
8 class badoo
12 template <int (*F) (int)>
13 class doowop
17 struct A
19   int a;
20   ~A () { a = 0; }
21   operator int () { return a; }
24 extern "C" int atoi (const char *);
26 int (*fee)(const char *) = atoi;
27 int (**bar)(const char *) = &fee;
29 const char* s = "4";
30 const char** sp = &s;
31 const char*** spp = &sp;
33 int foo (int a = (**bar) (s))
35    return doowop<foo>::bar; // { dg-error "" } not a member
38 int foo2 (int (*a)(int) = &foo)
40    undef4 (1); // { dg-error "" } implicit declaration
41   return 1;
44 class X{
45   class Y{};                    // { dg-error "" } private
48 typedef int const * bart ();
49 //The following is DR295 dependant
50 typedef bart const * const * bar2;
51 typedef bart volatile * const * bar2v;
53 bar2 baz (X::Y y)               // { dg-error "" } in this context
55   X::Y f;                       // { dg-error "" } in this context
56   bar2 wa [5];
57   wa[0] = baz(f);
58   undef2 (1); // { dg-error "" } implicit declaration
59 } // { dg-warning "" } no return
61 int ninny ()
63   struct A
64     {
65           static int ninny2 () { return badoo<'\001'>::foo; } // { dg-error "" } not a member
66     };
68   return A::ninny2();
71 int darg (char X::*p)
73    undef3 (1); // { dg-error "" } implicit declaration
74 } // { dg-warning "" } no return