1ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// RUN: %clang_cc1 -fsyntax-only -verify %s 2ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotemplate<class T1> class A { 3ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao template<class T2> class B { 4ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao template<class T3> void mf1(T3); 5ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao void mf2(); 6ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao }; 7ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}; 8ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 9ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotemplate<> template<class X> 10ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaoclass A<long>::B { }; 11ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 12ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotemplate<> template<> template<class T> 13ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao void A<int>::B<double>::mf1(T t) { } 14ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 15ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotemplate<> template<> template<class T> 16ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaovoid A<long>::B<double>::mf1(T t) { } // expected-error{{does not match}} 17ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 18ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// FIXME: This diagnostic could probably be better. 19ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotemplate<class Y> template<> 20ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao void A<Y>::B<double>::mf2() { } // expected-error{{does not refer}} 21