| // Header for PCH test cxx-friends.cpp |
| |
| class A { |
| int x; |
| friend class F; |
| }; |
| |
| namespace PR12585 { |
| struct future_base { |
| template<typename> class setter; |
| }; |
| template<typename> class promise { |
| // We used to inject this into future_base with no access specifier, |
| // then crash during AST writing. |
| template<typename> friend class future_base::setter; |
| int k; |
| }; |
| } |
| |
| namespace Lazy { |
| struct S { |
| friend void doNotDeserialize(); |
| }; |
| } |
| |
| // Reduced testcase from libc++'s <valarray>. Used to crash with modules |
| // enabled. |
| namespace std { |
| |
| template <class T> struct valarray; |
| |
| template <class T> struct valarray { |
| valarray(); |
| template <class U> friend struct valarray; |
| template <class U> friend U *begin(valarray<U> &v); |
| }; |
| |
| struct gslice { |
| valarray<int> size; |
| gslice() {} |
| }; |
| |
| } |