Index: test/Modules/Inputs/lax-base-except/a.h =================================================================== --- /dev/null +++ test/Modules/Inputs/lax-base-except/a.h @@ -0,0 +1,18 @@ +class A { + public: + virtual ~A() = default; +}; + +class B { + public: + virtual ~B() { + c.func(); + } + + struct C{ + void func() {} + friend B::~B(); + }; + + C c; +}; Index: test/Modules/Inputs/lax-base-except/module.modulemap =================================================================== --- /dev/null +++ test/Modules/Inputs/lax-base-except/module.modulemap @@ -0,0 +1,3 @@ +module a { + header "a.h" +} Index: test/Modules/lax-base-except.cpp =================================================================== --- /dev/null +++ test/Modules/lax-base-except.cpp @@ -0,0 +1,10 @@ +// RUN: rm -rf %t +// RUN: %clang -c -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I %S/Inputs/lax-base-except %s -o %t2.o +// expected-no-diagnostics + +#include "a.h" + +class D : public A, public B { + public: + virtual ~D() override = default; +};