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