Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / clang / test / Modules / pr63595.cppm
blob13a5f84a3e71f22133b2a95a25ba3bdf36623070
1 // RUN: rm -rf %t
2 // RUN: mkdir %t
3 // RUN: split-file %s %t
4 //
5 // RUN: %clang_cc1 -std=c++20 -emit-module-interface -I%t %t/module1.cppm -o %t/module1.pcm
6 // RUN: %clang_cc1 -std=c++20 -emit-module-interface -I%t %t/module2.cppm -o %t/module2.pcm
7 // RUN: %clang_cc1 -std=c++20 -fprebuilt-module-path=%t %t/merge.cpp -verify -fsyntax-only
9 //--- header.h
10 namespace NS {
11 template <int I>
12 class A {
15 template <template <int I_> class T>
16 class B {
20 //--- module1.h
21 namespace NS {
22 using C = B<A>;
24 struct D : NS::C {
25     using Type = NS::C;
28 //--- module1.cppm
29 // inside NS, using C = B<A>
30 module;
31 #include "header.h"
32 #include "module1.h"
33 export module module1;
34 export using ::D;
36 //--- module2.h
37 namespace NS {
38 using C = B<NS::A>;
40 struct D : NS::C {
41     using Type = NS::C;
44 //--- module2.cppm
45 // inside NS, using C = B<NS::A>
46 module;
47 #include "header.h"
48 #include "module2.h"
49 export module module2;
50 export using ::D;
52 //--- merge.cpp
53 // expected-no-diagnostics
54 import module1;
55 import module2;
56 D d;