diff options
Diffstat (limited to 'clang/test/Modules')
6 files changed, 36 insertions, 0 deletions
diff --git a/clang/test/Modules/Inputs/submodules-merge-defs/defs.h b/clang/test/Modules/Inputs/submodules-merge-defs/defs.h new file mode 100644 index 00000000000..1c866b55aad --- /dev/null +++ b/clang/test/Modules/Inputs/submodules-merge-defs/defs.h @@ -0,0 +1,6 @@ +struct A {}; +class B { + struct Inner1 {}; + struct Inner2; +}; +struct B::Inner2 : Inner1 {}; diff --git a/clang/test/Modules/Inputs/submodules-merge-defs/empty.h b/clang/test/Modules/Inputs/submodules-merge-defs/empty.h new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/clang/test/Modules/Inputs/submodules-merge-defs/empty.h diff --git a/clang/test/Modules/Inputs/submodules-merge-defs/import-and-redefine.h b/clang/test/Modules/Inputs/submodules-merge-defs/import-and-redefine.h new file mode 100644 index 00000000000..8d695bc45f4 --- /dev/null +++ b/clang/test/Modules/Inputs/submodules-merge-defs/import-and-redefine.h @@ -0,0 +1,5 @@ +// Trigger import of definitions, but don't make them visible. +#include "empty.h" + +// Now parse the definitions again. +#include "defs.h" diff --git a/clang/test/Modules/Inputs/submodules-merge-defs/module.modulemap b/clang/test/Modules/Inputs/submodules-merge-defs/module.modulemap new file mode 100644 index 00000000000..5c7ee8a89ad --- /dev/null +++ b/clang/test/Modules/Inputs/submodules-merge-defs/module.modulemap @@ -0,0 +1,11 @@ +module "stuff" { + textual header "defs.h" + module "empty" { header "empty.h" } + module "use" { header "use-defs.h" } +} + +module "redef" { + header "import-and-redefine.h" + // Do not re-export stuff.use + use "stuff" +} diff --git a/clang/test/Modules/Inputs/submodules-merge-defs/use-defs.h b/clang/test/Modules/Inputs/submodules-merge-defs/use-defs.h new file mode 100644 index 00000000000..31c69c6a447 --- /dev/null +++ b/clang/test/Modules/Inputs/submodules-merge-defs/use-defs.h @@ -0,0 +1 @@ +#include "defs.h" diff --git a/clang/test/Modules/submodules-merge-defs.cpp b/clang/test/Modules/submodules-merge-defs.cpp new file mode 100644 index 00000000000..48d4feb7cfe --- /dev/null +++ b/clang/test/Modules/submodules-merge-defs.cpp @@ -0,0 +1,13 @@ +// RUN: rm -rf %t +// RUN: %clang_cc1 -x c++ -fmodules-cache-path=%t -fmodules -I %S/Inputs/submodules-merge-defs %s -verify -fno-modules-error-recovery + +// Trigger import of definitions, but don't make them visible. +#include "empty.h" + +A pre_a; // expected-error {{must be imported}} expected-error {{must use 'struct'}} +// expected-note@defs.h:1 {{here}} + +// Make definitions from second module visible. +#include "import-and-redefine.h" + +A post_a; |