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