1 // RUN: rm -rf %t 2 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -verify -fmodules-cache-path=%t -fno-modules-error-recovery -I %S/Inputs/template-default-args -std=c++11 %s 3 4 template<typename T> struct A; 5 template<typename T> struct B; 6 template<typename T> struct C; 7 template<typename T = int> struct D; 8 template<typename T = int> struct E {}; 9 template<typename T> struct H {}; 10 template<typename T = int, typename U = int> struct I {}; 11 12 #include "b.h" 13 14 template<typename T = int> struct A {}; 15 template<typename T> struct B {}; 16 template<typename T = int> struct B; 17 template<typename T = int> struct C; 18 template<typename T> struct D {}; 19 template<typename T> struct F {}; 20 template<typename T> struct G {}; 21 22 #include "c.h" 23 24 A<> a; 25 B<> b; 26 extern C<> c; 27 D<> d; 28 E<> e; 29 F<> f; 30 G<> g; // expected-error {{default argument of 'G' must be imported from module 'X.A' before it is required}} 31 // [email protected]:6 {{default argument declared here}} 32 H<> h; // expected-error {{default argument of 'H' must be imported from module 'X.A' before it is required}} 33 // [email protected]:7 {{default argument declared here}} 34 I<> i; 35