// RUN: %clang_cc1 -Wselector-type-mismatch -verify %s @interface I - (id) compare: (char) arg1; // expected-note {{method 'compare:' declared here}} - length; @end @interface J - (id) compare: (id) arg1; // expected-note {{method 'compare:' declared here}} @end SEL func() { return @selector(compare:); // expected-warning {{several methods with selector 'compare:' of mismatched types are found for the @selector expression}} } // rdar://16458579 void Test16458579() { SEL s = @selector((retain)); SEL s1 = @selector((meth1:)); SEL s2 = @selector((retainArgument::)); SEL s3 = @selector((retainArgument:::::)); SEL s4 = @selector((retainArgument:with:)); SEL s5 = @selector((meth1:with:with:)); SEL s6 = @selector((getEnum:enum:bool:)); SEL s7 = @selector((char:float:double:unsigned:short:long:)); SEL s9 = @selector((:enum:bool:)); } int main() { SEL s = @selector(retain); SEL s1 = @selector(meth1:); SEL s2 = @selector(retainArgument::); SEL s3 = @selector(retainArgument:::::); SEL s4 = @selector(retainArgument:with:); SEL s5 = @selector(meth1:with:with:); SEL s6 = @selector(getEnum:enum:bool:); SEL s7 = @selector(char:float:double:unsigned:short:long:); SEL s9 = @selector(:enum:bool:); } // rdar://15794055 @interface NSObject @end @class NSNumber; @interface XBRecipe : NSObject @property (nonatomic, assign) float finalVolume; // expected-note {{method 'setFinalVolume:' declared here}} @end @interface XBDocument : NSObject @end @interface XBDocument () - (void)setFinalVolume:(NSNumber *)finalVolumeNumber; // expected-note {{method 'setFinalVolume:' declared here}} @end @implementation XBDocument - (void)setFinalVolume:(NSNumber *)finalVolumeNumber { (void)@selector(setFinalVolume:); // expected-warning {{several methods with selector 'setFinalVolume:' of mismatched types are found for the @selector expression}} } @end |