38 lines
		
	
	
		
			755 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			755 B
		
	
	
	
		
			C++
		
	
	
	
// 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
 |