Introduce co- and contra-variance for Objective-C type parameters, which allows us to express that (for example) an NSArray is covariant in its type parameter. This means that NSArray<NSMutableString *> * is a subtype of NSArray<NSString *> *, which is expected of the immutable Foundation collections. Type parameters can be annotated with __covariant or __contravariant to make them co- or contra-variant, respectively. This feature can be detected by __has_feature(objc_generics_variance). Implements rdar://problem/20217490. llvm-svn: 241549
20 lines
559 B
Objective-C
20 lines
559 B
Objective-C
// RUN: rm -rf %t
|
|
// RUN: mkdir %t
|
|
// RUN: c-index-test -test-load-source all -comments-xml-schema=%S/../../bindings/xml/comment-xml-schema.rng -target x86_64-apple-darwin10 %s > %t/out
|
|
// RUN: FileCheck %s < %t/out
|
|
|
|
// Ensure that XML we generate is not invalid.
|
|
// RUN: FileCheck %s -check-prefix=WRONG < %t/out
|
|
// WRONG-NOT: CommentXMLInvalid
|
|
|
|
@protocol NSObject
|
|
@end
|
|
|
|
@interface NSObject
|
|
@end
|
|
|
|
// CHECK: <Declaration>@interface A <__covariant T : id, U : NSObject *> : NSObject
|
|
/// A
|
|
@interface A<__covariant T : id, U : NSObject *> : NSObject
|
|
@end
|