1// Header for PCH test cxx-friends.cpp 2 3class A { 4 int x; 5 friend class F; 6}; 7 8namespace PR12585 { 9 struct future_base { 10 template<typename> class setter; 11 }; 12 template<typename> class promise { 13 // We used to inject this into future_base with no access specifier, 14 // then crash during AST writing. 15 template<typename> friend class future_base::setter; 16 int k; 17 }; 18} 19 20namespace Lazy { 21 struct S { 22 friend void doNotDeserialize(); 23 }; 24} 25 26// Reduced testcase from libc++'s <valarray>. Used to crash with modules 27// enabled. 28namespace std { 29 30template <class T> struct valarray; 31 32template <class T> struct valarray { 33 valarray(); 34 template <class U> friend struct valarray; 35 template <class U> friend U *begin(valarray<U> &v); 36}; 37 38struct gslice { 39 valarray<int> size; 40 gslice() {} 41}; 42 43} 44