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