xref: /llvm-project/clang/test/Modules/pcm-with-errors.cpp (revision c1ecc0d168ad122d858dd5fec475da391f97e959)
1*c1ecc0d1SAlejandro Álvarez Ayllón // RUN: rm -rf %t
2*c1ecc0d1SAlejandro Álvarez Ayllón // RUN: split-file %s %t
3*c1ecc0d1SAlejandro Álvarez Ayllón // RUN: cd %t
4*c1ecc0d1SAlejandro Álvarez Ayllón 
5*c1ecc0d1SAlejandro Álvarez Ayllón // RUN: %clang_cc1 -std=c++23 m.cppm -emit-module-interface -o m.pcm -fallow-pcm-with-compiler-errors -verify
6*c1ecc0d1SAlejandro Álvarez Ayllón // RUN: %clang_cc1 -std=c++23 main.cpp -fmodule-file=m=m.pcm -verify -fallow-pcm-with-compiler-errors -verify
7*c1ecc0d1SAlejandro Álvarez Ayllón 
8*c1ecc0d1SAlejandro Álvarez Ayllón // RUN: %clang_cc1 -std=c++23 m.cppm -fmodules-reduced-bmi -emit-module-interface -o m.pcm -fallow-pcm-with-compiler-errors -verify
9*c1ecc0d1SAlejandro Álvarez Ayllón // RUN: %clang_cc1 -std=c++23 main.cpp -fmodule-file=m=m.pcm -verify -fallow-pcm-with-compiler-errors -verify
10*c1ecc0d1SAlejandro Álvarez Ayllón 
11*c1ecc0d1SAlejandro Álvarez Ayllón //--- m.cppm
12*c1ecc0d1SAlejandro Álvarez Ayllón export module m;
13*c1ecc0d1SAlejandro Álvarez Ayllón 
14*c1ecc0d1SAlejandro Álvarez Ayllón export int f() {
15*c1ecc0d1SAlejandro Álvarez Ayllón   return 0;
16*c1ecc0d1SAlejandro Álvarez Ayllón }
17*c1ecc0d1SAlejandro Álvarez Ayllón 
18*c1ecc0d1SAlejandro Álvarez Ayllón export struct Foo {
19*c1ecc0d1SAlejandro Álvarez Ayllón   __Int bar; // expected-error {{unknown type name '__Int'}}
20*c1ecc0d1SAlejandro Álvarez Ayllón };
21*c1ecc0d1SAlejandro Álvarez Ayllón 
22*c1ecc0d1SAlejandro Álvarez Ayllón //--- main.cpp
23*c1ecc0d1SAlejandro Álvarez Ayllón // expected-no-diagnostics
24*c1ecc0d1SAlejandro Álvarez Ayllón import m; // ok
25*c1ecc0d1SAlejandro Álvarez Ayllón 
26*c1ecc0d1SAlejandro Álvarez Ayllón static_assert(__is_same(decltype(f), int())); // ok
27