summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/Modules/Inputs/submodules/import-self-a.h1
-rw-r--r--clang/test/Modules/Inputs/submodules/import-self-b.h10
-rw-r--r--clang/test/Modules/Inputs/submodules/import-self-c.h1
-rw-r--r--clang/test/Modules/Inputs/submodules/import-self-d.h1
-rw-r--r--clang/test/Modules/Inputs/submodules/module.map7
-rw-r--r--clang/test/Modules/submodules.cpp7
6 files changed, 27 insertions, 0 deletions
diff --git a/clang/test/Modules/Inputs/submodules/import-self-a.h b/clang/test/Modules/Inputs/submodules/import-self-a.h
new file mode 100644
index 00000000000..adb070abf36
--- /dev/null
+++ b/clang/test/Modules/Inputs/submodules/import-self-a.h
@@ -0,0 +1 @@
+typedef int MyTypeA;
diff --git a/clang/test/Modules/Inputs/submodules/import-self-b.h b/clang/test/Modules/Inputs/submodules/import-self-b.h
new file mode 100644
index 00000000000..f88b56d5f08
--- /dev/null
+++ b/clang/test/Modules/Inputs/submodules/import-self-b.h
@@ -0,0 +1,10 @@
+@import import_self.c;
+#include "import-self-d.h"
+
+// FIXME: This should not work; names from 'a' should not be visible here.
+MyTypeA import_self_test_a;
+
+// FIXME: This should work but does not; names from 'b' are not actually visible here.
+//MyTypeC import_self_test_c;
+
+MyTypeD import_self_test_d;
diff --git a/clang/test/Modules/Inputs/submodules/import-self-c.h b/clang/test/Modules/Inputs/submodules/import-self-c.h
new file mode 100644
index 00000000000..f4b86c5656e
--- /dev/null
+++ b/clang/test/Modules/Inputs/submodules/import-self-c.h
@@ -0,0 +1 @@
+typedef int MyTypeC;
diff --git a/clang/test/Modules/Inputs/submodules/import-self-d.h b/clang/test/Modules/Inputs/submodules/import-self-d.h
new file mode 100644
index 00000000000..e32a6f51957
--- /dev/null
+++ b/clang/test/Modules/Inputs/submodules/import-self-d.h
@@ -0,0 +1 @@
+typedef int MyTypeD;
diff --git a/clang/test/Modules/Inputs/submodules/module.map b/clang/test/Modules/Inputs/submodules/module.map
index 16cedac231e..c91e94f47d2 100644
--- a/clang/test/Modules/Inputs/submodules/module.map
+++ b/clang/test/Modules/Inputs/submodules/module.map
@@ -3,3 +3,10 @@ module std {
module type_traits { header "type_traits.h" }
explicit module hash_map { header "hash_map.h" }
}
+
+module import_self {
+ module a { header "import-self-a.h" }
+ module b { header "import-self-b.h" export * }
+ module c { header "import-self-c.h" }
+ module d { header "import-self-d.h" }
+}
diff --git a/clang/test/Modules/submodules.cpp b/clang/test/Modules/submodules.cpp
index c653dddbbb5..9c62389eadc 100644
--- a/clang/test/Modules/submodules.cpp
+++ b/clang/test/Modules/submodules.cpp
@@ -27,3 +27,10 @@ hash_map<int, float> ints_to_floats; // expected-error{{declaration of 'hash_map
hash_map<int, float> ints_to_floats2;
+@import import_self.b;
+extern MyTypeA import_self_test_a; // expected-error {{must be imported from module 'import_self.a'}}
+// expected-note@import-self-a.h:1 {{here}}
+extern MyTypeC import_self_test_c;
+// FIXME: This should be valid; import_self.b re-exports import_self.d.
+extern MyTypeD import_self_test_d; // expected-error {{must be imported from module 'import_self.d'}}
+// expected-note@import-self-d.h:1 {{here}}
OpenPOWER on IntegriCloud