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 | |
13 | template< typename T > |
14 | class Templated |
15 | { |
16 | public: |
17 | struct s; |
18 | }; |
19 | |
20 | |
21 | class Foo |
22 | { |
23 | private: |
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 | |