xref: /llvm-project/clang/test/Modules/no-transitive-identifier-change-2.cppm (revision d4d95ee65159db1ea1a8c4159cfdaf8b81097897)
1// Test that adding a new identifier within reduced BMI may not produce a transitive change.
2//
3// RUN: rm -rf %t
4// RUN: split-file %s %t
5//
6// RUN: %clang_cc1 -std=c++20 -emit-reduced-module-interface %t/A.cppm -o %t/A.pcm
7// RUN: %clang_cc1 -std=c++20 -emit-reduced-module-interface %t/B.cppm -o %t/B.pcm \
8// RUN:     -fmodule-file=A=%t/A.pcm
9//
10// RUN: %clang_cc1 -std=c++20 -emit-reduced-module-interface %t/A.v1.cppm -o %t/A.v1.pcm
11// RUN: %clang_cc1 -std=c++20 -emit-reduced-module-interface %t/B.cppm -o %t/B.v1.pcm \
12// RUN:     -fmodule-file=A=%t/A.v1.pcm
13//
14// RUN: diff %t/B.pcm %t/B.v1.pcm &> /dev/null
15
16//--- A.cppm
17export module A;
18export int a();
19
20//--- A.v1.cppm
21export module A;
22export int a();
23export int a2();
24
25//--- B.cppm
26export module B;
27import A;
28export int b() { return a(); }
29