// RUN: rm -rf %t // 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