summaryrefslogtreecommitdiff
path: root/test/Modules
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2018-09-12 23:09:23 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2018-09-12 23:09:23 +0000
commit3a8c8e45f9e83f779c08b973fcb7a5a16c42e544 (patch)
tree00977f38655ab66e31f2942b27847192d2157bdb /test/Modules
parent8b335cfaae053bbe6d32863820847c9a15658111 (diff)
downloadclang-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')
-rw-r--r--test/Modules/Inputs/unavailable-local-visibility/a.h4
-rw-r--r--test/Modules/Inputs/unavailable-local-visibility/b.h13
-rw-r--r--test/Modules/Inputs/unavailable-local-visibility/module.modulemap9
-rw-r--r--test/Modules/Inputs/unavailable-local-visibility/x.h4
-rw-r--r--test/Modules/unavailable-local-visibility.test2
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