[C++ PATCH] Deprecate -ffriend-injection
[official-gcc.git] / gcc / testsuite / g++.dg / eh / shadow1.C
blobf0de449564e83e4a5737462e90922ea9141af369
1 // Copyright (C) 2004 Free Software Foundation, Inc.
2 // Contributed by Nathan Sidwell 15 Oct 2004 <nathan@codesourcery.com>
4 // We forgot to ignore current context and friends when determing
5 // which exceptions shadowed eachother.
7 struct E;
9 struct B {};
11 struct D : private B
13   friend class E;
14   
15   static B *baz (D *);
16   virtual void V () throw (B);  // { dg-error "overriding" "" { target { ! c++17 } } }
17 };                              // { dg-error "dynamic exception specification" "" { target c++17 } .-1 }
18                                 // { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } .-2 }
19 struct E : public D
21   virtual void V () throw (D); // { dg-error "looser throw" "" { target { ! c++17 } } }
22 };                             // { dg-error "dynamic exception specification" "" { target c++17 } .-1 }
23                                // { dg-warning "deprecated" "" { target { c++11 && { ! c++17 } } } .-2 }
24 B* foo (D *);
26 B *D::baz (D *p)
28   try {foo (p);}
29   catch (B const &b) {}
30   catch (D const &d) {}
31   return p;