|  | // RUN: %clang_cc1 -fsyntax-only -Wall -verify %s | 
|  | // expected-no-diagnostics | 
|  | template<typename a> struct A { | 
|  | template <typename b> struct B { | 
|  | template <typename c> struct C { | 
|  | template <typename d> struct D { | 
|  | template <typename e> struct E { | 
|  | e field; | 
|  | E() : field(0) { | 
|  | d v1 = 4; | 
|  | c v2 = v1 * v1; | 
|  | b v3 = 8; | 
|  | a v4 = v3 * v3; | 
|  | field += v2 + v4; | 
|  | } | 
|  | }; | 
|  | }; | 
|  | }; | 
|  | }; | 
|  | }; | 
|  |  | 
|  | A<int>::B<int>::C<int>::D<int>::E<int> global; | 
|  |  | 
|  | // PR5352 | 
|  | template <typename T> | 
|  | class Foo { | 
|  | public: | 
|  | Foo() {} | 
|  |  | 
|  | struct Bar { | 
|  | T value; | 
|  | }; | 
|  |  | 
|  | Bar u; | 
|  | }; | 
|  |  | 
|  | template class Foo<int>; |