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