// RUN: rm -rf %t
// 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 -DBEGIN= -DEND=
// 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 -DBEGIN="namespace N {" -DEND="}"

BEGIN
template<typename T> struct A;
template<typename T> struct B;
template<typename T> struct C;
template<typename T = int> struct D;
template<typename T = int> struct E {};
template<typename T> struct H {};
template<typename T = int, typename U = int> struct I {};
END

#include "b.h"
#include "d.h"

BEGIN
template<typename T = int> struct A {};
template<typename T> struct B {};
template<typename T = int> struct B;
template<typename T = int> struct C;
template<typename T> struct D {};
template<typename T> struct F {};
template<typename T> struct G {};
template<typename T> struct J {};
template<typename T = int> struct J;
struct K : J<> {};
END

#include "c.h"

BEGIN
A<> a;
B<> b;
extern C<> c;
D<> d;
E<> e;
F<> f;
G<> g; // expected-error {{default argument of 'G' must be imported from module 'X.A' before it is required}}
// expected-note@a.h:7 {{default argument declared here}}
H<> h; // expected-error {{default argument of 'H' must be imported from module 'X.A' before it is required}}
// expected-note@a.h:8 {{default argument declared here}}
I<> i;
L<> *l;
END

namespace DeferredLookup {
  template<typename T, typename U = T> using X = U;
  template<typename T> void f() { (void) X<T>(); }
  template<typename T> int n = X<T>(); // expected-warning {{extension}}
  template<typename T> struct S { X<T> xt; enum E : int; };
  template<typename T> enum S<T>::E : int { a = X<T>() };

  void test() {
    f<int>();
    n<int> = 1;
    S<int> s;
    S<int>::E e = S<int>::E::a;

    Indirect::B<int>::C<int> indirect;
  }
}
