blob: 0d83d47eb4e79ebf3cadb7df6e175eca0efd6d50 [file] [log] [blame]
Fariborz Jahanian6e943022014-03-28 23:23:12 +00001// RUN: %clang_cc1 -Wselector-type-mismatch -verify %s
Steve Naroff7a54c0d2009-02-11 20:43:13 +00002
Fariborz Jahaniancbf10f52009-08-22 21:13:55 +00003@interface I
Fariborz Jahanian44be1542014-03-12 18:34:01 +00004- (id) compare: (char) arg1; // expected-note {{method 'compare:' declared here}}
Fariborz Jahanianc9b7c202011-02-04 23:19:27 +00005- length;
Fariborz Jahaniancbf10f52009-08-22 21:13:55 +00006@end
7
Fariborz Jahaniana533af72011-02-04 23:30:23 +00008@interface J
Fariborz Jahanian44be1542014-03-12 18:34:01 +00009- (id) compare: (id) arg1; // expected-note {{method 'compare:' declared here}}
Fariborz Jahaniana533af72011-02-04 23:30:23 +000010@end
11
Fariborz Jahanianc9b7c202011-02-04 23:19:27 +000012SEL func()
Fariborz Jahaniancbf10f52009-08-22 21:13:55 +000013{
Fariborz Jahanian44be1542014-03-12 18:34:01 +000014 return @selector(compare:); // expected-warning {{several methods with selector 'compare:' of mismatched types are found for the @selector expression}}
Fariborz Jahaniana533af72011-02-04 23:30:23 +000015}
16
17int main() {
18 SEL s = @selector(retain);
19 SEL s1 = @selector(meth1:);
20 SEL s2 = @selector(retainArgument::);
21 SEL s3 = @selector(retainArgument:::::);
22 SEL s4 = @selector(retainArgument:with:);
23 SEL s5 = @selector(meth1:with:with:);
24 SEL s6 = @selector(getEnum:enum:bool:);
25 SEL s7 = @selector(char:float:double:unsigned:short:long:);
26
27 SEL s9 = @selector(:enum:bool:);
Fariborz Jahanian4bef4622007-10-16 20:40:23 +000028}
Fariborz Jahanian44be1542014-03-12 18:34:01 +000029
30// rdar://15794055
31@interface NSObject @end
32
33@class NSNumber;
34
35@interface XBRecipe : NSObject
36@property (nonatomic, assign) float finalVolume; // expected-note {{method 'setFinalVolume:' declared here}}
37@end
38
39@interface XBDocument : NSObject
40@end
41
42@interface XBDocument ()
43- (void)setFinalVolume:(NSNumber *)finalVolumeNumber; // expected-note {{method 'setFinalVolume:' declared here}}
44@end
45
46@implementation XBDocument
47- (void)setFinalVolume:(NSNumber *)finalVolumeNumber
48{
49 (void)@selector(setFinalVolume:); // expected-warning {{several methods with selector 'setFinalVolume:' of mismatched types are found for the @selector expression}}
50}
51@end