1*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -Wall -verify %s 2*67e74705SXin Li // expected-no-diagnostics 3*67e74705SXin Li template<typename a> struct A { 4*67e74705SXin Li template <typename b> struct B { 5*67e74705SXin Li template <typename c> struct C { 6*67e74705SXin Li template <typename d> struct D { 7*67e74705SXin Li template <typename e> struct E { 8*67e74705SXin Li e field; EA::B::C::D::E9*67e74705SXin Li E() : field(0) { 10*67e74705SXin Li d v1 = 4; 11*67e74705SXin Li c v2 = v1 * v1; 12*67e74705SXin Li b v3 = 8; 13*67e74705SXin Li a v4 = v3 * v3; 14*67e74705SXin Li field += v2 + v4; 15*67e74705SXin Li } 16*67e74705SXin Li }; 17*67e74705SXin Li }; 18*67e74705SXin Li }; 19*67e74705SXin Li }; 20*67e74705SXin Li }; 21*67e74705SXin Li 22*67e74705SXin Li A<int>::B<int>::C<int>::D<int>::E<int> global; 23*67e74705SXin Li 24*67e74705SXin Li // PR5352 25*67e74705SXin Li template <typename T> 26*67e74705SXin Li class Foo { 27*67e74705SXin Li public: Foo()28*67e74705SXin Li Foo() {} 29*67e74705SXin Li 30*67e74705SXin Li struct Bar { 31*67e74705SXin Li T value; 32*67e74705SXin Li }; 33*67e74705SXin Li 34*67e74705SXin Li Bar u; 35*67e74705SXin Li }; 36*67e74705SXin Li 37*67e74705SXin Li template class Foo<int>; 38