1// RUN: %clang_cc1 -fsyntax-only -verify %s
2
3@interface MyClass1
4@end
5
6@protocol P
7- (void) Pmeth;  // expected-note {{method 'Pmeth' declared here}}
8- (void) Pmeth1;  // expected-note {{method 'Pmeth1' declared here}}
9@end
10
11@interface MyClass1(CAT) <P>
12- (void) meth2;              // expected-note {{method 'meth2' declared here}}
13@end
14
15@implementation MyClass1(CAT) // expected-warning {{method 'Pmeth' in protocol 'P' not implemented}} \
16                              // expected-warning {{method definition for 'meth2' not found}}
17- (void) Pmeth1{}
18@end
19
20@interface MyClass1(DOG) <P>
21- (void)ppp;                 // expected-note {{method 'ppp' declared here}}
22@end
23
24@implementation MyClass1(DOG) // expected-warning {{method 'Pmeth1' in protocol 'P' not implemented}} \
25                              // expected-warning {{method definition for 'ppp' not found}}
26- (void) Pmeth {}
27@end
28
29@implementation MyClass1(CAT1)
30@end
31
32// rdar://10823023
33@class NSString;
34
35@protocol NSObject
36- (NSString *)meth_inprotocol;
37@end
38
39@interface NSObject <NSObject>
40- (NSString *)description;
41+ (NSString *) cls_description;
42@end
43
44@protocol Foo
45- (NSString *)description;
46+ (NSString *) cls_description;
47@end
48
49@interface NSObject (FooConformance) <Foo>
50@end
51
52@implementation NSObject (FooConformance)
53@end
54
55// rdar://11186449
56// Don't warn when a category does not implemented a method imported
57// by its protocol because another category has its declaration and
58// that category will implement it.
59@interface NSOrderedSet @end
60
61@interface NSOrderedSet(CoolectionImplements)
62- (unsigned char)containsObject:(id)object;
63@end
64
65@protocol Collection
66- (unsigned char)containsObject:(id)object;
67@end
68
69@interface NSOrderedSet (CollectionConformance) <Collection>
70@end
71
72@implementation NSOrderedSet (CollectionConformance)
73@end
74
75