1// RUN: %clang_cc1 -Wmethod-signatures -fsyntax-only -verify -Wno-objc-root-class %s
2
3typedef signed char BOOL;
4typedef unsigned int NSUInteger;
5typedef struct _NSZone NSZone;
6@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
7@protocol NSObject  - (BOOL)isEqual:(id)object;
8@end  @protocol NSCopying  - (id)copyWithZone:(NSZone *)zone;
9@end  @protocol NSMutableCopying  - (id)mutableCopyWithZone:(NSZone *)zone;
10@end  @protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder;
11@end    @interface NSObject <NSObject> {
12}
13@end    extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
14@interface NSValue : NSObject <NSCopying, NSCoding>  - (void)getValue:(void *)value;
15@end        @class NSString;
16typedef struct _NSRange {
17}
18  NSRange;
19@interface NSValue (NSValueRangeExtensions)  + (NSValue *)valueWithRange:(NSRange)range;
20@end  @interface NSAttributedString : NSObject <NSCopying, NSMutableCopying, NSCoding>  - (NSString *)string;
21@end  @interface NSMutableAttributedString : NSAttributedString  - (void)replaceCharactersInRange:(NSRange)range withString:(NSString *)str;
22@end       @class NSArray, NSDictionary, NSString, NSError;
23@interface NSScanner : NSObject <NSCopying>  - (NSString *)string;
24@end        typedef struct {
25}
26  CSSM_FIELDGROUP, *CSSM_FIELDGROUP_PTR;
27@protocol XDUMLClassifier;
28@protocol XDUMLClassInterfaceCommons <XDUMLClassifier>
29@end  @protocol XDUMLImplementation;
30@protocol XDUMLElement <NSObject> - (NSArray *) ownedElements;
31@end @protocol XDUMLDataType;
32@protocol XDUMLNamedElement <XDUMLElement>     - (NSString *) name;
33@end enum _XDSourceLanguage {
34XDSourceUnknown=0,     XDSourceJava,     XDSourceC,     XDSourceCPP,     XDSourceObjectiveC };
35typedef NSUInteger XDSourceLanguage;
36@protocol XDSCClassifier <XDUMLClassInterfaceCommons> - (XDSourceLanguage)language;
37@end  @class XDSCDocController;
38@interface XDSCDisplaySpecification : NSObject <NSCoding>{
39}
40@end  @class XDSCOperation;
41@interface XDSCClassFormatter : NSObject {
42}
43+ (NSUInteger) compartmentsForClassifier: (id <XDUMLClassifier>) classifier withSpecification: (XDSCDisplaySpecification *) displaySpec;  // expected-note {{previous definition is here}}
44@end
45@class NSString;
46@implementation XDSCClassFormatter
47
48+ appendVisibility: (id <XDUMLNamedElement>) element withSpecification: (XDSCDisplaySpecification *) displaySpec to: (NSMutableAttributedString *) attributedString
49{
50  return 0;
51}
52+ (NSUInteger) compartmentsForClassifier: (id <XDSCClassifier>) classifier withSpecification: (XDSCDisplaySpecification *) displaySpec { // expected-warning {{conflicting parameter types in implementation of 'compartmentsForClassifier:withSpecification:'}}
53  return 0;
54}
55@end
56
57// rdar: // 8006060
58@interface Bar
59- (void)foo:(id)format, ...;  // expected-note {{previous declaration is here}}
60- (void)foo1:(id)format;      // expected-note {{previous declaration is here}}
61@end
62@implementation Bar
63- (void)foo:(id)format {}; // expected-warning {{conflicting variadic declaration of method and its implementation}}
64- (void)foo1:(id)format, ... {}; // expected-warning {{conflicting variadic declaration of method and its implementation}}
65@end
66
67