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