aboutsummaryrefslogtreecommitdiff
path: root/clang/test/Modules/GH109879-1.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test/Modules/GH109879-1.cpp')
-rw-r--r--clang/test/Modules/GH109879-1.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/clang/test/Modules/GH109879-1.cpp b/clang/test/Modules/GH109879-1.cpp
new file mode 100644
index 0000000..72cfb11
--- /dev/null
+++ b/clang/test/Modules/GH109879-1.cpp
@@ -0,0 +1,25 @@
+// RUN: rm -rf %t
+// RUN: mkdir -p %t
+// RUN: split-file %s %t
+//
+// RUN: %clang_cc1 -std=c++20 %t/A.cppm -emit-module-interface -o %t/A.pcm
+// RUN: %clang_cc1 -std=c++20 %t/B.cppm -fprebuilt-module-path=%t -emit-module-interface -o %t/B.pcm
+// RUN: %clang_cc1 -fsyntax-only -std=c++20 -fprebuilt-module-path=%t -verify %t/C.cpp
+
+//--- A.cppm
+export module A;
+export extern "C" void foo(struct Bar);
+
+//--- B.cppm
+module;
+import A;
+export module B;
+
+//--- C.cpp
+import B;
+struct Bar {};
+void test() {
+ foo(Bar());
+ // expected-error@-1 {{declaration of 'foo' must be imported}}
+ // expected-note@A.cppm:2 {{declaration here is not visible}}
+}