| // RUN: rm -rf %t |
| // RUN: mkdir -p %t |
| // RUN: split-file %s %t |
| |
| // RUN: %clang_cc1 -std=c++20 -emit-module-interface %t/a.cpp -o %t/a.pcm |
| |
| // RUN: %clang_cc1 -std=c++20 -emit-module-interface %t/c.cpp \ |
| // RUN: -fmodule-file=a=%t/a.pcm -o %t/c.pcm |
| |
| // RUN: %clang_cc1 -std=c++20 -emit-module-interface %t/d.cpp \ |
| // RUN: -fmodule-file=a=%t/a.pcm -o %t/d.pcm |
| |
| // RUN: %clang_cc1 -std=c++20 -emit-module-interface %t/e.cpp \ |
| // RUN: -fmodule-file=a=%t/a.pcm -o %t/e.pcm |
| |
| // RUN: %clang_cc1 -std=c++20 -emit-module-interface %t/a-part.cpp \ |
| // RUN: -o %t/a-part.pcm |
| |
| // RUN: %clang_cc1 -std=c++20 -emit-module-interface %t/f.cpp \ |
| // RUN: -fmodule-file=a=%t/a.pcm -o %t/f.pcm -verify |
| |
| // RUN: %clang_cc1 -std=c++20 -emit-module-interface %t/g.cpp \ |
| // RUN: -fmodule-file=a=%t/a.pcm -o %t/g.pcm -verify |
| |
| // Test again with reduced BMI. |
| // RUN: rm -rf %t |
| // RUN: mkdir -p %t |
| // RUN: split-file %s %t |
| |
| // RUN: %clang_cc1 -std=c++20 -emit-reduced-module-interface %t/a.cpp -o %t/a.pcm |
| |
| // RUN: %clang_cc1 -std=c++20 -emit-reduced-module-interface %t/c.cpp \ |
| // RUN: -fmodule-file=a=%t/a.pcm -o %t/c.pcm |
| |
| // RUN: %clang_cc1 -std=c++20 -emit-reduced-module-interface %t/d.cpp \ |
| // RUN: -fmodule-file=a=%t/a.pcm -o %t/d.pcm |
| |
| // RUN: %clang_cc1 -std=c++20 -emit-reduced-module-interface %t/e.cpp \ |
| // RUN: -fmodule-file=a=%t/a.pcm -o %t/e.pcm |
| |
| // RUN: %clang_cc1 -std=c++20 -emit-reduced-module-interface %t/a-part.cpp \ |
| // RUN: -o %t/a-part.pcm |
| |
| // RUN: %clang_cc1 -std=c++20 -emit-reduced-module-interface %t/f.cpp \ |
| // RUN: -fmodule-file=a=%t/a.pcm -o %t/f.pcm -verify |
| |
| // RUN: %clang_cc1 -std=c++20 -emit-reduced-module-interface %t/g.cpp \ |
| // RUN: -fmodule-file=a=%t/a.pcm -o %t/g.pcm -verify |
| |
| //--- a.cpp |
| export module a; |
| |
| //--- b.hpp |
| import a; |
| |
| //--- c.cpp |
| module; |
| #include "b.hpp" |
| export module c; |
| |
| //--- d.cpp |
| module; |
| import a; |
| |
| export module d; |
| |
| //--- e.cpp |
| export module e; |
| |
| module :private; |
| import a; |
| |
| //--- a-part.cpp |
| export module a:part; |
| |
| //--- f.cpp |
| module; |
| import :part ; // expected-error {{module partition imports cannot be in the global module fragment}} |
| |
| export module f; |
| |
| //--- g.cpp |
| |
| export module g; |
| module :private; |
| import :part; // expected-error {{module partition imports cannot be in the private module fragment}} |