Compiler projects using llvm
#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