1 // RUN: %clang_cc1 -fcxx-exceptions -fexceptions -verify %s
8 virtual ~X0() throw(A); // expected-note{{overridden virtual function is here}}
11 virtual ~X1() throw(B); // expected-note{{overridden virtual function is here}}
13 struct X2 : public X0, public X1 { }; // expected-error 2{{exception specification of overriding function is more lax than base version}}
15 // Copy-assignment operator.
17 CA0 &operator=(const CA0&) throw(A);
20 CA1 &operator=(const CA1&) throw(B);
22 struct CA2 : CA0, CA1 { };
25 CA2 &(CA2::*captr1)(const CA2&) throw(A, B) = &CA2::operator=;
26 CA2 &(CA2::*captr2)(const CA2&) throw(A, B, C) = &CA2::operator=;
27 CA2 &(CA2::*captr3)(const CA2&) throw(A) = &CA2::operator=; // expected-error{{target exception specification is not superset of source}}
28 CA2 &(CA2::*captr4)(const CA2&) throw(B) = &CA2::operator=; // expected-error{{target exception specification is not superset of source}}