| #pragma clang assume_nonnull begin | |
| __attribute__((objc_root_class)) | |
| @interface B | |
| @end | |
| @interface C : B | |
| @end | |
| __attribute__((objc_root_class)) | |
| @interface NSGeneric<T : B *> // expected-note{{type parameter 'T' declared here}} | |
| - (T)tee; | |
| - (nullable T)maybeTee; | |
| @end | |
| typedef NSGeneric<C *> *Generic_with_C; | |
| #pragma clang assume_nonnull end | |
| @interface NSGeneric<T : C *>(Blah) // expected-error{{type bound 'C *' for type parameter 'T' conflicts with previous bound 'B *'}} | |
| @end |