1*67e74705SXin Li// RUN: %clang_cc1 -Wselector-type-mismatch -verify %s 2*67e74705SXin Li 3*67e74705SXin Li@interface I 4*67e74705SXin Li- (id) compare: (char) arg1; // expected-note {{method 'compare:' declared here}} 5*67e74705SXin Li- length; 6*67e74705SXin Li@end 7*67e74705SXin Li 8*67e74705SXin Li@interface J 9*67e74705SXin Li- (id) compare: (id) arg1; // expected-note {{method 'compare:' declared here}} 10*67e74705SXin Li@end 11*67e74705SXin Li 12*67e74705SXin LiSEL func() 13*67e74705SXin Li{ 14*67e74705SXin Li return @selector(compare:); // expected-warning {{several methods with selector 'compare:' of mismatched types are found for the @selector expression}} 15*67e74705SXin Li} 16*67e74705SXin Li 17*67e74705SXin Li// rdar://16458579 18*67e74705SXin Livoid Test16458579() { 19*67e74705SXin Li SEL s = @selector((retain)); 20*67e74705SXin Li SEL s1 = @selector((meth1:)); 21*67e74705SXin Li SEL s2 = @selector((retainArgument::)); 22*67e74705SXin Li SEL s3 = @selector((retainArgument:::::)); 23*67e74705SXin Li SEL s4 = @selector((retainArgument:with:)); 24*67e74705SXin Li SEL s5 = @selector((meth1:with:with:)); 25*67e74705SXin Li SEL s6 = @selector((getEnum:enum:bool:)); 26*67e74705SXin Li SEL s7 = @selector((char:float:double:unsigned:short:long:)); 27*67e74705SXin Li SEL s9 = @selector((:enum:bool:)); 28*67e74705SXin Li} 29*67e74705SXin Liint main() { 30*67e74705SXin Li SEL s = @selector(retain); 31*67e74705SXin Li SEL s1 = @selector(meth1:); 32*67e74705SXin Li SEL s2 = @selector(retainArgument::); 33*67e74705SXin Li SEL s3 = @selector(retainArgument:::::); 34*67e74705SXin Li SEL s4 = @selector(retainArgument:with:); 35*67e74705SXin Li SEL s5 = @selector(meth1:with:with:); 36*67e74705SXin Li SEL s6 = @selector(getEnum:enum:bool:); 37*67e74705SXin Li SEL s7 = @selector(char:float:double:unsigned:short:long:); 38*67e74705SXin Li 39*67e74705SXin Li SEL s9 = @selector(:enum:bool:); 40*67e74705SXin Li} 41*67e74705SXin Li 42*67e74705SXin Li// rdar://15794055 43*67e74705SXin Li@interface NSObject @end 44*67e74705SXin Li 45*67e74705SXin Li@class NSNumber; 46*67e74705SXin Li 47*67e74705SXin Li@interface XBRecipe : NSObject 48*67e74705SXin Li@property (nonatomic, assign) float finalVolume; // expected-note {{method 'setFinalVolume:' declared here}} 49*67e74705SXin Li@end 50*67e74705SXin Li 51*67e74705SXin Li@interface XBDocument : NSObject 52*67e74705SXin Li@end 53*67e74705SXin Li 54*67e74705SXin Li@interface XBDocument () 55*67e74705SXin Li- (void)setFinalVolume:(NSNumber *)finalVolumeNumber; // expected-note {{method 'setFinalVolume:' declared here}} 56*67e74705SXin Li@end 57*67e74705SXin Li 58*67e74705SXin Li@implementation XBDocument 59*67e74705SXin Li- (void)setFinalVolume:(NSNumber *)finalVolumeNumber 60*67e74705SXin Li{ 61*67e74705SXin Li (void)@selector(setFinalVolume:); // expected-warning {{several methods with selector 'setFinalVolume:' of mismatched types are found for the @selector expression}} 62*67e74705SXin Li} 63*67e74705SXin Li@end 64