https://github.com/kish1n created 
https://github.com/llvm/llvm-project/pull/146841

PR https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1979r0.html 
appears to already be implemented as of Clang17. See: 
https://godbolt.org/z/h59Mvzq6P

>From 4463daf4a8a42693fe5ed781356d02797e0fdef9 Mon Sep 17 00:00:00 2001
From: Ashwin Banwari <ashwinkbanw...@gmail.com>
Date: Thu, 3 Jul 2025 02:47:05 -0700
Subject: [PATCH] add test for P1979 to prove correctness

---
 clang/test/SemaCXX/P1979.cpp | 40 ++++++++++++++++++++++++++++++++++++
 clang/www/cxx_status.html    |  2 +-
 2 files changed, 41 insertions(+), 1 deletion(-)
 create mode 100644 clang/test/SemaCXX/P1979.cpp

diff --git a/clang/test/SemaCXX/P1979.cpp b/clang/test/SemaCXX/P1979.cpp
new file mode 100644
index 0000000000000..9c8d02ed28f94
--- /dev/null
+++ b/clang/test/SemaCXX/P1979.cpp
@@ -0,0 +1,40 @@
+// RUN: rm -rf %t
+// RUN: split-file %s %t
+
+
+// RUN: %clang_cc1 -std=c++20 -verify -emit-module-interface %t/A.cpp -o 
%t/A.pcm
+// RUN: %clang_cc1 -std=c++20 -verify -emit-module-interface %t/myV.cpp -o 
%t/myV.pcm
+// RUN: %clang_cc1 -std=c++20 -verify -emit-module-interface 
-fmodule-file=V=%t/myV.pcm %t/partition.cpp -o %t/partition.pcm
+// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify -fmodule-file=V=%t/myV.pcm 
-fmodule-file=A=%t/A.pcm -fmodule-file=A:partition=%t/partition.pcm 
%t/interface.cpp
+
+//--- A.cpp
+// expected-no-diagnostics
+export module A;
+
+//--- myV.cpp
+// expected-no-diagnostics
+export module V;
+
+export struct myV{};
+
+//--- uses_vector.h
+// expected-no-diagnostics
+#ifndef x
+#define x
+
+import V;
+#endif
+
+//--- partition.cpp
+// expected-no-diagnostics
+module;
+#include "uses_vector.h" // textually expands to import V;
+module A:partition;
+
+//--- interface.cpp
+module;
+// #include "uses_vector.h"
+module A;
+import :partition;
+myV V; // expected-error {{declaration of 'myV' must be imported from module 
'V' before it is required}}
+       // expected-n...@myv.cpp:4 {{declaration here is not visible}}
diff --git a/clang/www/cxx_status.html b/clang/www/cxx_status.html
index e5f51bfb2e36e..831f79f7cf17a 100755
--- a/clang/www/cxx_status.html
+++ b/clang/www/cxx_status.html
@@ -923,7 +923,7 @@ <h2 id="cxx20">C++20 implementation status</h2>
       </tr>
       <tr> <!-- from Belfast -->
         <td><a href="https://wg21.link/p1979r0";>P1979R0</a></td>
-        <td class="none" align="center">No</td>
+        <td class="full" align="center">Clang 17</td>
       </tr>
       <tr> <!-- from Prague -->
         <td><a href="https://wg21.link/p1779r3";>P1779R3</a></td>

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to