| 1 | #pragma clang assume_nonnull begin |
| 2 | |
| 3 | __attribute__((objc_root_class)) |
| 4 | @interface B |
| 5 | @end |
| 6 | |
| 7 | @interface C : B |
| 8 | @end |
| 9 | |
| 10 | __attribute__((objc_root_class)) |
| 11 | @interface NSGeneric<T : B *> // expected-note{{type parameter 'T' declared here}} |
| 12 | - (T)tee; |
| 13 | - (nullable T)maybeTee; |
| 14 | @end |
| 15 | |
| 16 | typedef NSGeneric<C *> *Generic_with_C; |
| 17 | |
| 18 | #pragma clang assume_nonnull end |
| 19 | |
| 20 | @interface NSGeneric<T : C *>(Blah) // expected-error{{type bound 'C *' for type parameter 'T' conflicts with previous bound 'B *'}} |
| 21 | @end |
| 22 | |