diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2018-09-12 23:09:23 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2018-09-12 23:09:23 +0000 |
commit | 3a8c8e45f9e83f779c08b973fcb7a5a16c42e544 (patch) | |
tree | 00977f38655ab66e31f2942b27847192d2157bdb /test/Modules | |
parent | 8b335cfaae053bbe6d32863820847c9a15658111 (diff) | |
download | clang-3a8c8e45f9e83f779c08b973fcb7a5a16c42e544.tar.gz |
When we leave a module header, make that header visible in its
includer's context, even if its overall module is unavailable.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@342096 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Modules')
5 files changed, 32 insertions, 0 deletions
diff --git a/test/Modules/Inputs/unavailable-local-visibility/a.h b/test/Modules/Inputs/unavailable-local-visibility/a.h new file mode 100644 index 0000000000..865bb65f4d --- /dev/null +++ b/test/Modules/Inputs/unavailable-local-visibility/a.h @@ -0,0 +1,4 @@ +#ifndef A_H +#define A_H +#include "x.h" +#endif diff --git a/test/Modules/Inputs/unavailable-local-visibility/b.h b/test/Modules/Inputs/unavailable-local-visibility/b.h new file mode 100644 index 0000000000..71360e38b7 --- /dev/null +++ b/test/Modules/Inputs/unavailable-local-visibility/b.h @@ -0,0 +1,13 @@ +#ifndef B_H +#define B_H +#include "a.h" + +#ifndef A_H +#error where is a? +#endif + +#ifndef X_H +#error where is x? +#endif +X f(); +#endif diff --git a/test/Modules/Inputs/unavailable-local-visibility/module.modulemap b/test/Modules/Inputs/unavailable-local-visibility/module.modulemap new file mode 100644 index 0000000000..8da3d3c1ab --- /dev/null +++ b/test/Modules/Inputs/unavailable-local-visibility/module.modulemap @@ -0,0 +1,9 @@ +module M { + module a { header "a.h" export * } + module b { header "b.h" export * } + module doesnotexist { header "doesnotexist.h" } +} +module X { + header "x.h" + export * +} diff --git a/test/Modules/Inputs/unavailable-local-visibility/x.h b/test/Modules/Inputs/unavailable-local-visibility/x.h new file mode 100644 index 0000000000..0498c5d2aa --- /dev/null +++ b/test/Modules/Inputs/unavailable-local-visibility/x.h @@ -0,0 +1,4 @@ +#ifndef X_H +#define X_H +struct X {}; +#endif diff --git a/test/Modules/unavailable-local-visibility.test b/test/Modules/unavailable-local-visibility.test new file mode 100644 index 0000000000..10b316a50e --- /dev/null +++ b/test/Modules/unavailable-local-visibility.test @@ -0,0 +1,2 @@ +// RUN: %clang_cc1 -fmodules -I%S/Inputs/unavailable-local-visibility -fmodule-name=X -emit-module -x c++-module-map %S/Inputs/unavailable-local-visibility/module.modulemap -o %t/x.pcm +// RUN: %clang_cc1 -fmodules -I%S/Inputs/unavailable-local-visibility -fmodule-name=M -fmodule-map-file=%S/Inputs/unavailable-local-visibility/module.modulemap -fmodules-local-submodule-visibility -fmodule-file=%t/x.pcm -fsyntax-only -x c++-header %S/Inputs/unavailable-local-visibility/b.h |