// 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
