xref: /aosp_15_r20/external/clang/test/SemaObjC/selector-1.m (revision 67e74705e28f6214e480b399dd47ea732279e315)
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