brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.3 KiB · 69daec6 Raw
97 lines · cpp
1// RUN: %clang_cc1 -std=c++11 -fexceptions -fcxx-exceptions -fsyntax-only -verify %s2 3// Compatibility of virtual functions.4 5struct A6{7};8 9struct B1 : A10{11};12 13struct B2 : A14{15};16 17struct D : B1, B218{19};20 21struct P : private A22{23};24 25struct Base26{27  virtual void f1() throw();28  virtual void f2() throw(int, float);29 30  virtual void f3() throw(int, float);31  virtual void f4() throw(A);32  virtual void f5() throw(A, int, float);33  virtual void f6();34 35  virtual void f7() noexcept;36  virtual void f8() noexcept;37  virtual void f9() noexcept(false);38  virtual void f10() noexcept(false);39 40  virtual void f11() throw();41  virtual void f12() noexcept;42  virtual void f13() noexcept(false);43  virtual void f14() throw(int);44 45  virtual void f15();46  virtual void f16();47 48  virtual void g1() throw(); // expected-note {{overridden virtual function is here}}49  virtual void g2() throw(int); // expected-note {{overridden virtual function is here}}50  virtual void g3() throw(A); // expected-note {{overridden virtual function is here}}51  virtual void g4() throw(B1); // expected-note {{overridden virtual function is here}}52  virtual void g5() throw(A); // expected-note {{overridden virtual function is here}}53 54  virtual void g6() noexcept; // expected-note {{overridden virtual function is here}}55  virtual void g7() noexcept; // expected-note {{overridden virtual function is here}}56 57  virtual void g8() noexcept; // expected-note {{overridden virtual function is here}}58  virtual void g9() throw(); // expected-note {{overridden virtual function is here}}59  virtual void g10() throw(int); // expected-note {{overridden virtual function is here}}60};61struct Derived : Base62{63  virtual void f1() throw();64  virtual void f2() throw(float, int);65 66  virtual void f3() throw(float);67  virtual void f4() throw(B1);68  virtual void f5() throw(B1, B2, int);69  virtual void f6() throw(B2, B2, int, float, char, double, bool);70 71  virtual void f7() noexcept;72  virtual void f8() noexcept(true);73  virtual void f9() noexcept(true);74  virtual void f10() noexcept(false);75 76  virtual void f11() noexcept;77  virtual void f12() throw();78  virtual void f13() throw(int);79  virtual void f14() noexcept(true);80 81  virtual void f15() noexcept;82  virtual void f16() throw();83 84  virtual void g1() throw(int); // expected-error {{exception specification of overriding function is more lax}}85  virtual void g2(); // expected-error {{exception specification of overriding function is more lax}}86  virtual void g3() throw(D); // expected-error {{exception specification of overriding function is more lax}}87  virtual void g4() throw(A); // expected-error {{exception specification of overriding function is more lax}}88  virtual void g5() throw(P); // expected-error {{exception specification of overriding function is more lax}}89 90  virtual void g6() noexcept(false); // expected-error {{exception specification of overriding function is more lax}}91  virtual void g7(); // expected-error {{exception specification of overriding function is more lax}}92 93  virtual void g8() throw(int); // expected-error {{exception specification of overriding function is more lax}}94  virtual void g9() noexcept(false); // expected-error {{exception specification of overriding function is more lax}}95  virtual void g10() noexcept(false); // expected-error {{exception specification of overriding function is more lax}}96};97