summaryrefslogtreecommitdiff
path: root/test/Modules/preprocess-build.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/Modules/preprocess-build.cpp')
-rw-r--r--test/Modules/preprocess-build.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/test/Modules/preprocess-build.cpp b/test/Modules/preprocess-build.cpp
new file mode 100644
index 000000000000..bf9f16162be2
--- /dev/null
+++ b/test/Modules/preprocess-build.cpp
@@ -0,0 +1,35 @@
+// RUN: %clang_cc1 -std=c++1z %s -verify
+
+#pragma clang module build baz
+ module baz {}
+#pragma clang module endbuild // baz
+
+#pragma clang module build foo
+ module foo { module bar {} }
+#pragma clang module contents
+ #pragma clang module begin foo.bar
+
+ // Can import baz here even though it was created in an outer build.
+ #pragma clang module import baz
+
+ #pragma clang module build bar
+ module bar {}
+ #pragma clang module contents
+ #pragma clang module begin bar
+ extern int n;
+ #pragma clang module end
+ #pragma clang module endbuild // bar
+
+ #pragma clang module import bar
+
+ constexpr int *f() { return &n; }
+
+ #pragma clang module end
+#pragma clang module endbuild // foo
+
+#pragma clang module import bar
+#pragma clang module import foo.bar
+static_assert(f() == &n);
+
+#pragma clang module build // expected-error {{expected module name}}
+#pragma clang module build unterminated // expected-error {{no matching '#pragma clang module endbuild'}}