xref: /llvm-project/clang/test/Modules/inconsistent-export.cppm (revision da00c60dae0040185dc45039c4397f6e746548e9)
12e9977c2SChuanqi Xu// RUN: rm -fr %t
22e9977c2SChuanqi Xu// RUN: mkdir %t
32e9977c2SChuanqi Xu// RUN: split-file %s %t
42e9977c2SChuanqi Xu//
52e9977c2SChuanqi Xu// RUN: %clang_cc1 -std=c++20 %t/a.cppm -emit-module-interface -o %t/m-a.pcm
62e9977c2SChuanqi Xu// RUN: %clang_cc1 -std=c++20 %t/b.cppm -emit-module-interface -o %t/m-b.pcm \
72e9977c2SChuanqi Xu// RUN:     -fprebuilt-module-path=%t
82e9977c2SChuanqi Xu// RUN: %clang_cc1 -std=c++20 %t/m.cppm -emit-module-interface -o %t/m.pcm \
92e9977c2SChuanqi Xu// RUN:     -fprebuilt-module-path=%t
102e9977c2SChuanqi Xu// RUN: %clang_cc1 -std=c++20 %t/use.cppm -fprebuilt-module-path=%t -emit-obj
112e9977c2SChuanqi Xu
12*da00c60dSChuanqi Xu// Test again with reduced BMI.
13*da00c60dSChuanqi Xu// RUN: rm -fr %t
14*da00c60dSChuanqi Xu// RUN: mkdir %t
15*da00c60dSChuanqi Xu// RUN: split-file %s %t
16*da00c60dSChuanqi Xu//
17*da00c60dSChuanqi Xu// RUN: %clang_cc1 -std=c++20 %t/a.cppm -emit-reduced-module-interface -o %t/m-a.pcm
18*da00c60dSChuanqi Xu// RUN: %clang_cc1 -std=c++20 %t/b.cppm -emit-reduced-module-interface -o %t/m-b.pcm \
19*da00c60dSChuanqi Xu// RUN:     -fprebuilt-module-path=%t
20*da00c60dSChuanqi Xu// RUN: %clang_cc1 -std=c++20 %t/m.cppm -emit-reduced-module-interface -o %t/m.pcm \
21*da00c60dSChuanqi Xu// RUN:     -fprebuilt-module-path=%t
22*da00c60dSChuanqi Xu// RUN: %clang_cc1 -std=c++20 %t/use.cppm -fprebuilt-module-path=%t -emit-obj
23*da00c60dSChuanqi Xu
24*da00c60dSChuanqi Xu
252e9977c2SChuanqi Xu//--- a.cppm
262e9977c2SChuanqi Xuexport module m:a;
272e9977c2SChuanqi Xunamespace n {
282e9977c2SChuanqi Xuexport class a {
292e9977c2SChuanqi Xupublic:
302e9977c2SChuanqi Xu    virtual ~a() {}
312e9977c2SChuanqi Xu};
322e9977c2SChuanqi Xu}
332e9977c2SChuanqi Xu
342e9977c2SChuanqi Xu//--- b.cppm
352e9977c2SChuanqi Xuexport module m:b;
362e9977c2SChuanqi Xunamespace n {
372e9977c2SChuanqi Xuclass a;
382e9977c2SChuanqi Xu}
392e9977c2SChuanqi Xu
402e9977c2SChuanqi Xu//--- m.cppm
412e9977c2SChuanqi Xuexport module m;
422e9977c2SChuanqi Xuexport import :a;
432e9977c2SChuanqi Xuexport import :b;
442e9977c2SChuanqi Xu
452e9977c2SChuanqi Xu//--- use.cppm
462e9977c2SChuanqi Xu// expected-no-diagnostics
472e9977c2SChuanqi Xuexport module u;
482e9977c2SChuanqi Xuexport import m;
492e9977c2SChuanqi Xu
502e9977c2SChuanqi Xustruct aa : public n::a {
512e9977c2SChuanqi Xu    aa() {}
522e9977c2SChuanqi Xu};
532e9977c2SChuanqi Xuauto foo(n::a*) {
542e9977c2SChuanqi Xu    return;
552e9977c2SChuanqi Xu}
562e9977c2SChuanqi Xu
572e9977c2SChuanqi Xuvoid use() {
582e9977c2SChuanqi Xu    n::a _;
592e9977c2SChuanqi Xu}
60