1 // RUN: rm -rf %t 2 // RUN: %clang_cc1 -x c++ -fmodules -fmodules-local-submodule-visibility -fmodules-cache-path=%t %s -verify 3 // RUN: %clang_cc1 -x c++ -fmodules -fmodules-cache-path=%t %s -verify 4 5 // expected-no-diagnostics 6 7 #pragma clang module build A 8 module A { } 9 #pragma clang module contents 10 #pragma clang module begin A 11 struct A { 12 virtual void Foo(double x) const; 13 }; 14 #pragma clang module end 15 #pragma clang module endbuild 16 17 #pragma clang module build B 18 module B { } 19 #pragma clang module contents 20 #pragma clang module begin B 21 #pragma clang module import A 22 struct B : A { 23 using A::Foo; 24 virtual void Foo(double x) const; 25 }; 26 #pragma clang module end 27 #pragma clang module endbuild 28 29 #pragma clang module import B 30 main()31int main() { 32 B b; 33 b.Foo(1.0); 34 } 35 36