// RUN: %clang_cc1 -std=c++11 -fmodules %s -verify

#pragma clang module build M
  module M { module A {} module B {} module C {} }
#pragma clang module contents
  
  #pragma clang module begin M.A
    template<typename U> struct X {
      template<typename T> void f();
    };
  #pragma clang module end
  
  #pragma clang module begin M.B
    template<typename T, typename U = void> struct ST { static void f(); };
  #pragma clang module end
  
  #pragma clang module begin M.C
    template<typename U> struct X;
    void foo(X<int>);
  #pragma clang module end
#pragma clang module endbuild

#pragma clang module build N
  module N {}
#pragma clang module contents
  #pragma clang module begin N
    #pragma clang module import M.B // not re-exported

    template<typename U> struct X {
      template<typename T> void f();
      template<typename T> void g();
    };

    template<typename U> template<typename T>
    void X<U>::f() {
      ST<T>::f(); // definition and default argument found in M.B
      foo(*this); // found by ADL in M.C
    };

    #pragma clang module import M.C // not re-exported
  #pragma clang module end
#pragma clang module endbuild

#pragma clang module import N
void g() {
  X<int>().f<int>();

  ST<int>::f(); // expected-error {{must be imported from module 'M.B'}}
  foo(X<int>()); // expected-error {{must be imported from module 'M.C'}}
  // expected-note@* 2{{previous declaration is here}}
}
