1e76e3a09SChuanqi Xu// RUN: rm -rf %t 2e76e3a09SChuanqi Xu// RUN: mkdir -p %t 3e76e3a09SChuanqi Xu// RUN: split-file %s %t 4e76e3a09SChuanqi Xu// 5e76e3a09SChuanqi Xu// RUN: %clang_cc1 -std=c++20 -emit-module-interface %t/a.cppm -o %t/a.pcm 6e76e3a09SChuanqi Xu// RUN: %clang_cc1 -std=c++20 %t/b.cppm -fprebuilt-module-path=%t -fsyntax-only -verify 7e76e3a09SChuanqi Xu 8*da00c60dSChuanqi Xu// RUN: %clang_cc1 -std=c++20 -emit-reduced-module-interface %t/a.cppm -o %t/a.pcm 9*da00c60dSChuanqi Xu// RUN: %clang_cc1 -std=c++20 %t/b.cppm -fprebuilt-module-path=%t -fsyntax-only -verify 10*da00c60dSChuanqi Xu 11e76e3a09SChuanqi Xu//--- foo.h 12e76e3a09SChuanqi Xu 13e76e3a09SChuanqi Xunamespace std 14e76e3a09SChuanqi Xu{ 15e76e3a09SChuanqi Xu template<class _Dom1> 16e76e3a09SChuanqi Xu void operator &&(_Dom1 __v, _Dom1 __w) 17e76e3a09SChuanqi Xu { 18e76e3a09SChuanqi Xu return; 19e76e3a09SChuanqi Xu } 20e76e3a09SChuanqi Xu} 21e76e3a09SChuanqi Xu 22e76e3a09SChuanqi Xu//--- bar.h 23e76e3a09SChuanqi Xunamespace std 24e76e3a09SChuanqi Xu{ 25e76e3a09SChuanqi Xu template<typename... _Types> 26e76e3a09SChuanqi Xu struct _Traits 27e76e3a09SChuanqi Xu { 28e76e3a09SChuanqi Xu static constexpr bool _S_copy_ctor = 29e76e3a09SChuanqi Xu (__is_trivial(_Types) && ...); 30e76e3a09SChuanqi Xu }; 31e76e3a09SChuanqi Xu 32e76e3a09SChuanqi Xu template<typename... _Types> 33e76e3a09SChuanqi Xu struct variant 34e76e3a09SChuanqi Xu { 35e76e3a09SChuanqi Xu void 36e76e3a09SChuanqi Xu swap(variant& __rhs) 37e76e3a09SChuanqi Xu noexcept((__is_trivial(_Types) && ...)) 38e76e3a09SChuanqi Xu { 39e76e3a09SChuanqi Xu } 40e76e3a09SChuanqi Xu }; 41e76e3a09SChuanqi Xu} 42e76e3a09SChuanqi Xu 43e76e3a09SChuanqi Xu//--- a.cppm 44e76e3a09SChuanqi Xumodule; 45e76e3a09SChuanqi Xu#include "foo.h" 46e76e3a09SChuanqi Xu#include "bar.h" 47e76e3a09SChuanqi Xuexport module a; 48e76e3a09SChuanqi Xu 49e76e3a09SChuanqi Xu//--- b.cppm 50e76e3a09SChuanqi Xu// expected-no-diagnostics 51e76e3a09SChuanqi Xumodule; 52e76e3a09SChuanqi Xu#include "bar.h" 53e76e3a09SChuanqi Xuexport module b; 54e76e3a09SChuanqi Xuimport a; 55