You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
28 lines
732 B
28 lines
732 B
/*
|
|
* Copyright (c) 2017-present, Facebook, Inc.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
#import <Foundation/Foundation.h>
|
|
|
|
@protocol A<NSObject>
|
|
@end
|
|
|
|
@protocol B<A>
|
|
@end
|
|
|
|
@protocol C<B>
|
|
@end
|
|
|
|
@protocol D<NSObject>
|
|
@end
|
|
|
|
@interface Foo : NSObject
|
|
+ (instancetype)newWithA:(id<A>)A; // A is a known "bad" protocol, so fire here
|
|
+ (instancetype)newWithB:(id<B>)B; // B inherits from A, so this line also fires
|
|
+ (instancetype)newWithC:(id<C>)C; // C eventually inherits from A; also fires
|
|
+ (instancetype)newWithCs:(NSArray<id<C>>*)Cs; // Collections should also fire
|
|
+ (void)newWithD:(id<D>)D; // D doesn't inherit from A; don't fire
|
|
@end
|