mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-26 23:09:03 -04:00

than one method with mismatched type of same selector name. clang issues a warning to point this out since it may cause undefined behavior. There are cases though that some APIs don't care about user methods and such warnings are perceived as noise. This patch allows users to add paren delimiters around selector name to turn off such warnings. So, @selector((save:)) will turn off the warning. It also provides 'fixit' so user knows what to do. // rdar://16458579 llvm-svn: 211611
64 lines
1.8 KiB
Objective-C
64 lines
1.8 KiB
Objective-C
// 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
|