| // For backward compatibility, fields of C unions declared in system headers |
| // that have non-trivial ObjC ownership qualifications are marked as unavailable |
| // unless the qualifier is explicit and __strong. |
| |
| #pragma clang system_header |
| |
| typedef __strong id StrongID; |
| |
| typedef union { |
| id f0; |
| _Nonnull id f1; |
| __weak id f2; |
| StrongID f3; |
| } U0_SystemHeader; |
| |
| typedef union { // expected-note {{'U1_SystemHeader' has subobjects that are non-trivial to destruct}} expected-note {{'U1_SystemHeader' has subobjects that are non-trivial to copy}} |
| __strong id f0; // expected-note {{f0 has type '__strong id' that is non-trivial to destruct}} expected-note {{f0 has type '__strong id' that is non-trivial to copy}} |
| _Nonnull id f1; |
| } U1_SystemHeader; |