1 // RUN: rm -fR %t 2 // RUN: split-file %s %t 3 // RUN: cd %t 4 // RUN: %clang_cc1 -verify -std=c++20 -fskip-odr-check-in-gmf -I. -emit-header-unit -xc++-user-header bz1.h 5 // RUN: %clang_cc1 -verify -std=c++20 -fskip-odr-check-in-gmf -I. -emit-header-unit -xc++-user-header bz2.h 6 // RUN: %clang_cc1 -verify -std=c++20 -fskip-odr-check-in-gmf -I. -emit-header-unit -xc++-user-header -fmodule-file=bz1.pcm -fmodule-file=bz2.pcm bz.cpp 7 8 //--- compare 9 namespace std { 10 namespace __detail { 11 12 template<typename _Tp> 13 inline constexpr unsigned __cmp_cat_id = 1; 14 15 template<typename... _Ts> 16 constexpr auto __common_cmp_cat() { 17 (__cmp_cat_id<_Ts> | ...); 18 } 19 20 } // namespace __detail 21 } // namespace std 22 23 //--- bz0.h 24 template <class T> 25 int operator|(T, T); 26 27 //--- bz1.h 28 #include "bz0.h" 29 #include <compare> 30 // expected-no-diagnostics 31 32 //--- bz2.h 33 #include <compare> 34 // expected-no-diagnostics 35 36 //--- bz.cpp 37 #include <compare> 38 39 import "bz1.h"; // expected-warning {{the implementation of header units is in an experimental phase}} 40 import "bz2.h"; // expected-warning {{the implementation of header units is in an experimental phase}} 41