Clang Project

clang_source_code/test/Modules/exception-spec.cpp
1// RUN: %clang_cc1 -x c++ -std=c++17 -fmodules -fmodules-local-submodule-visibility -fmodules-cache-path=%t %s -verify
2
3// expected-no-diagnostics
4
5#pragma clang module build PR38627
6module PR38627 {}
7#pragma clang module contents
8#pragma clang module begin PR38627
9namespace PR38627 {
10struct X {
11  virtual ~X() {}
12  struct C {
13    friend X::~X();
14  } c;
15};
16}
17#pragma clang module end
18#pragma clang module endbuild
19
20#pragma clang module import PR38627
21
22namespace PR38627 {
23struct Y {
24  virtual ~Y() {}
25  struct C {
26    friend Y::~Y();
27  } c;
28};
29static_assert(noexcept(X().~X()));
30static_assert(noexcept(Y().~Y()));
31
32struct A { virtual ~A() = default; };
33struct B : public A, public X {
34  virtual ~B() override = default;
35};
36} // PR38627
37