diff --git a/clang/test/SemaCXX/P1979.cpp b/clang/test/SemaCXX/P1979.cpp new file mode 100644 index 0000000000000..65c4b839632c2 --- /dev/null +++ b/clang/test/SemaCXX/P1979.cpp @@ -0,0 +1,38 @@ +// 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 A; +import :partition; +myV V; // expected-error {{declaration of 'myV' must be imported from module 'V' before it is required}} + // expected-note@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 @@

C++20 implementation status

P1979R0 - No + Clang 17 P1779R3