diff options
Diffstat (limited to 'test/Modules/exception-spec.cpp')
-rw-r--r-- | test/Modules/exception-spec.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/test/Modules/exception-spec.cpp b/test/Modules/exception-spec.cpp new file mode 100644 index 0000000000000..083cd950f7c52 --- /dev/null +++ b/test/Modules/exception-spec.cpp @@ -0,0 +1,36 @@ +// RUN: %clang_cc1 -x c++ -std=c++17 -fmodules -fmodules-local-submodule-visibility -fmodules-cache-path=%t %s -verify + +// expected-no-diagnostics + +#pragma clang module build PR38627 +module PR38627 {} +#pragma clang module contents +#pragma clang module begin PR38627 +namespace PR38627 { +struct X { + virtual ~X() {} + struct C { + friend X::~X(); + } c; +}; +} +#pragma clang module end +#pragma clang module endbuild + +#pragma clang module import PR38627 + +namespace PR38627 { +struct Y { + virtual ~Y() {} + struct C { + friend Y::~Y(); + } c; +}; +static_assert(noexcept(X().~X())); +static_assert(noexcept(Y().~Y())); + +struct A { virtual ~A() = default; }; +struct B : public A, public X { + virtual ~B() override = default; +}; +} // PR38627 |