brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · a0d3023 Raw
69 lines · cpp
1// RUN: rm -rf %t2// RUN: split-file %s %t3 4// RUN: %clang_cc1 -std=c++20 -emit-module-interface %t/interface.cppm -o %t/interface.pcm5// RUN: %clang_cc1 -std=c++20 -fmodule-file=Foo=%t/interface.pcm %t/implementation.cppm -verify -DIMPLEMENTATION6// RUN: %clang_cc1 -std=c++20 -fmodule-file=Foo=%t/interface.pcm %t/early_impl.cppm -verify -DEARLY_IMPLEMENTATION7// RUN: %clang_cc1 -std=c++20 -fmodule-file=Foo=%t/interface.pcm %t/user.cppm -verify -DUSER8 9//--- interface.cppm10// expected-no-diagnostics11module;12 13template<typename T> struct type_template {14  typedef T type;15  void f(type);16};17 18template<typename T> void type_template<T>::f(type) {}19 20template<int = 0, typename = int, template<typename> class = type_template>21struct default_template_args {};22 23export module Foo;24 25//--- implementation.cppm26// expected-no-diagnostics27module;28 29template<typename T> struct type_template {30  typedef T type;31  void f(type);32};33 34template<typename T> void type_template<T>::f(type) {}35 36template<int = 0, typename = int, template<typename> class = type_template>37struct default_template_args {};38 39module Foo;40 41//--- early_impl.cppm42// expected-no-diagnostics43module;44module Foo;45 46template<typename T> struct type_template {47  typedef T type;48  void f(type);49};50 51template<typename T> void type_template<T>::f(type) {}52 53template<int = 0, typename = int, template<typename> class = type_template>54struct default_template_args {};55 56//--- user.cppm57// expected-no-diagnostics58import Foo;59 60template<typename T> struct type_template {61  typedef T type;62  void f(type);63};64 65template<typename T> void type_template<T>::f(type) {}66 67template<int = 0, typename = int, template<typename> class = type_template>68struct default_template_args {};69