diff gcc/testsuite/g++.dg/cpp0x/noexcept47.C @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gcc/testsuite/g++.dg/cpp0x/noexcept47.C	Thu Feb 13 11:34:05 2020 +0900
@@ -0,0 +1,83 @@
+// PR c++/86476 - noexcept-specifier is a complete-class context
+// { dg-do compile { target c++11 } }
+
+int fn1 ();
+int fn2 () noexcept;
+int fn3 () noexcept;
+
+void g() noexcept(noexcept (fn2()));
+
+struct S1 {
+  friend void g1() noexcept(noexcept(fn2()));
+  friend void g1() noexcept(noexcept(fn1())); // { dg-error "different exception specifier" }
+};
+
+struct S2 {
+  friend void g2() noexcept(noexcept(fn1()));
+  friend void g2() noexcept(noexcept(fn1()));
+  friend void g2() noexcept(noexcept(fn1()));
+};
+
+struct S3 {
+  friend void g3() noexcept(noexcept(fn1()));
+  friend void g3() noexcept(noexcept(fn3())); // { dg-error "different exception specifier" }
+};
+
+struct S4 {
+  friend void g4() noexcept(noexcept(fn2()));
+  friend void g4() noexcept(noexcept(fn3()));
+};
+
+struct S5 {
+  friend void g() noexcept(noexcept(fn3()));
+};
+
+struct S6 {
+  friend void g() noexcept(noexcept(fn1())); // { dg-error "different exception specifier" }
+};
+
+struct S7 {
+  friend void gg() noexcept(noexcept(fn3()));
+};
+
+void gg() noexcept(noexcept(fn1())); // { dg-error "different exception specifier" }
+
+struct S8 {
+  friend void g8();
+  friend void g8() noexcept(noexcept(fn2())); // { dg-error "different exception specifier" }
+};
+
+struct S9 {
+  friend void g9();
+  friend void g9() noexcept(noexcept(fn1()));
+};
+
+struct S10 {
+  friend void g10() noexcept(noexcept(fn1()));
+  friend void g10();
+};
+
+struct S11 {
+  friend void g11() noexcept(noexcept(fn2()));
+  friend void g11(); // { dg-error "different exception specifier" }
+};
+
+struct S12 {
+  friend void g12() noexcept(false);
+  friend void g12() noexcept(noexcept(fn2())); // { dg-error "different exception specifier" }
+};
+
+struct S13 {
+  friend void g13() noexcept(false);
+  friend void g13() noexcept(noexcept(fn1()));
+};
+
+struct S14 {
+  friend void g14() noexcept(noexcept(fn1()));
+  friend void g14() noexcept(false);
+};
+
+struct S15 {
+  friend void g15() noexcept(noexcept(fn2()));
+  friend void g15() noexcept(false); // { dg-error "different exception specifier" }
+};