Stephen Hines | 651f13c | 2014-04-23 16:59:28 -0700 | [diff] [blame] | 1 | // RUN: %clang_cc1 -Wselector-type-mismatch -verify %s |
Steve Naroff | 84c4310 | 2009-02-11 20:43:13 +0000 | [diff] [blame] | 2 | |
Fariborz Jahanian | 835ed7f | 2009-08-22 21:13:55 +0000 | [diff] [blame] | 3 | @interface I |
Stephen Hines | 651f13c | 2014-04-23 16:59:28 -0700 | [diff] [blame] | 4 | - (id) compare: (char) arg1; // expected-note {{method 'compare:' declared here}} |
Fariborz Jahanian | 8b78913 | 2011-02-04 23:19:27 +0000 | [diff] [blame] | 5 | - length; |
Fariborz Jahanian | 835ed7f | 2009-08-22 21:13:55 +0000 | [diff] [blame] | 6 | @end |
| 7 | |
Fariborz Jahanian | 1e99a77 | 2011-02-04 23:30:23 +0000 | [diff] [blame] | 8 | @interface J |
Stephen Hines | 651f13c | 2014-04-23 16:59:28 -0700 | [diff] [blame] | 9 | - (id) compare: (id) arg1; // expected-note {{method 'compare:' declared here}} |
Fariborz Jahanian | 1e99a77 | 2011-02-04 23:30:23 +0000 | [diff] [blame] | 10 | @end |
| 11 | |
Fariborz Jahanian | 8b78913 | 2011-02-04 23:19:27 +0000 | [diff] [blame] | 12 | SEL func() |
Fariborz Jahanian | 835ed7f | 2009-08-22 21:13:55 +0000 | [diff] [blame] | 13 | { |
Stephen Hines | 651f13c | 2014-04-23 16:59:28 -0700 | [diff] [blame] | 14 | return @selector(compare:); // expected-warning {{several methods with selector 'compare:' of mismatched types are found for the @selector expression}} |
Fariborz Jahanian | 1e99a77 | 2011-02-04 23:30:23 +0000 | [diff] [blame] | 15 | } |
| 16 | |
Stephen Hines | c568f1e | 2014-07-21 00:47:37 -0700 | [diff] [blame^] | 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 | } |
Fariborz Jahanian | 1e99a77 | 2011-02-04 23:30:23 +0000 | [diff] [blame] | 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:); |
Fariborz Jahanian | b62f681 | 2007-10-16 20:40:23 +0000 | [diff] [blame] | 40 | } |
Stephen Hines | 651f13c | 2014-04-23 16:59:28 -0700 | [diff] [blame] | 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 |