// 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 {{missing '#include "a.h"'; default argument of 'G' must be defined before it is used}}
// expected-note@a.h:7 {{default argument declared here is not reachable}}
H<> h; // expected-error {{missing '#include "a.h"'; default argument of 'H' must be defined before it is used}}
// expected-note@a.h:8 {{default argument declared here is not reachable}}
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;
  }
}
