1ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// RUN: %clang_cc1 -fsyntax-only -verify %s 2ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 3ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotemplate<typename T, typename U> 4ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostruct X0 { 5ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao struct Inner; 6ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}; 7ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 8ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotemplate<typename T, typename U> 9ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostruct X0<T, U>::Inner { 10ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao T x; 11ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao U y; 12ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 13ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao void f() { x = y; } // expected-error{{incompatible}} 14ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}; 15ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 16ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 17ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaovoid test(int i, float f) { 18ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao X0<int, float>::Inner inner; 19ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao inner.x = 5; 20ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao inner.y = 3.4; 21ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao inner.f(); 22ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 23ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao X0<int*, float *>::Inner inner2; 24ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao inner2.x = &i; 25ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao inner2.y = &f; 26ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao inner2.f(); // expected-note{{instantiation}} 27ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao} 28