1// Test this without pch.
2// RUN: %clang_cc1 -fsyntax-only -emit-llvm-only %s
3
4// Test with pch.
5// RUN: touch %t.empty.cpp
6// RUN: %clang_cc1 -emit-pch -o %t %s
7// RUN: %clang_cc1 -include-pch %t -emit-llvm-only %t.empty.cpp
8
9// rdar://10830559
10
11#pragma ms_struct on
12
13template< typename T >
14class Templated
15{
16public:
17   struct s;
18};
19
20
21class Foo
22{
23private:
24
25   class Bar
26   {
27   private:
28      class BarTypes { public: virtual void Func(); };
29      class BarImpl {};
30      friend class Foo;
31   };
32
33
34   friend class Templated< Bar::BarImpl >::s;
35};
36