Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / clang / test / Modules / concept_differ.cppm
blobccb29d26e53d1340b69a124da20bc56868372ffb
1 // RUN: rm -rf %t
2 // RUN: mkdir %t
3 // RUN: split-file %s %t
4 //
5 // RUN: %clang_cc1 -x c++ -std=c++20 %t/A.cppm -I%t -emit-module-interface -o %t/A.pcm
6 // RUN: %clang_cc1 -x c++ -std=c++20 %t/B.cppm -I%t -emit-module-interface -o %t/B.pcm
7 // RUN: %clang_cc1 -x c++ -std=c++20 -fprebuilt-module-path=%t %t/foo.cpp -verify
9 //--- foo.h
10 template <class T>
11 concept A = true;
13 //--- bar.h
14 template <class T>
15 concept A = false;
17 //--- A.cppm
18 module;
19 #include "foo.h"
20 export module A;
21 export using ::A;
23 //--- B.cppm
24 module;
25 #include "bar.h"
26 export module B;
27 export using ::A;
29 //--- foo.cpp
30 import A;
31 import B;
33 template <class T> void foo() requires A<T> {}  // expected-error 1+{{reference to 'A' is ambiguous}}
34                                                 // expected-note@* 1+{{candidate found by name lookup}}
36 int main() {
37   foo<int>();
38   return 0;