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 // RUN: %clang_cc1 -emit-pch -fpch-instantiate-templates -o %t %s 10 // RUN: %clang_cc1 -include-pch %t -emit-llvm-only %t.empty.cpp 11 12 // rdar://10830559 13 14 //#pragma ms_struct on 15 16 template< typename T > 17 class Templated 18 { 19 public: 20 struct s; 21 }; 22 23 24 class Foo 25 { 26 private: 27 28 class Bar 29 { 30 private: 31 class BarTypes { public: virtual void Func(); }; 32 class BarImpl {}; 33 friend class Foo; 34 }; 35 36 37 friend class Templated< Bar::BarImpl >::s; 38 }; 39