// RUN: %clang_cc1 %s -ast-print -o - -chain-include %s -chain-include %s
// RUN: %clang_cc1 %s -ast-print -o - -fmodules -chain-include %s -chain-include %s

#if !defined(PASS1)
#define PASS1

template <class T> class TClass;

namespace NS {
    template <class X, class Y> TClass<X> problematic(X * ptr, const TClass<Y> &src);

    template <class T>
    class TBaseClass
    {
    protected:
        template <class X, class Y> friend TClass<X> problematic(X * ptr, const TClass<Y> &src);
    };
}

template <class T>
class TClass: public NS::TBaseClass<T>
{
public:
    inline TClass() { }
};


namespace NS {
    template <class X, class T>
    TClass<X> problematic(X *ptr, const TClass<T> &src);
}

template <class X, class T>
TClass<X> unconst(const TClass<T> &src);

#elif !defined(PASS2)
#define PASS2

namespace std {
class s {};
}


typedef TClass<std::s> TStr;

struct crash {
  TStr str;

  crash(const TClass<std::s> p)
  {
    unconst<TStr>(p);
  }
};

#else

void f() {
    const TStr p;
    crash c(p);
}

#endif
