1// Matches
2@interface I1 {
3  int ivar1;
4}
5@end
6
7// Matches
8@interface I2 : I1 {
9  float ivar2;
10}
11@end
12
13// Ivar mismatch
14@interface I3 {
15  int ivar1;
16  float ivar2;
17}
18@end
19
20// Superclass mismatch
21@interface I4 : I1 {
22}
23@end
24
25// Methods match
26@interface I5
27+ (float)bar;
28- (int)foo;
29@end
30
31// Method mismatch
32@interface I6
33+ (float)foo;
34@end
35
36// Method mismatch
37@interface I7
38- (int)foo;
39+ (int)bar:(float)x;
40@end
41
42// Method mismatch
43@interface I8
44- (int)foo;
45+ (int)bar:(float)x, ...;
46@end
47
48// Matching protocol
49@protocol P0
50+ (int)foo;
51- (int)bar:(float)x;
52@end
53
54// Protocol with mismatching method
55@protocol P1
56+ (int)foo;
57- (int)bar:(double)x;
58@end
59
60// Interface with protocol
61@interface I9 <P0>
62+ (int)foo;
63- (int)bar:(float)x;
64@end
65
66// Protocol with protocol
67@protocol P2 <P0>
68- (float)wibble:(int)a1 second:(int)a2;
69@end
70
71// Forward-declared interface
72@class I10; @interface I12 @end
73@interface I11
74@end
75
76// Forward-declared protocols
77@protocol P3, P4;
78@protocol P5
79- (double)honk:(int)a;
80@end
81
82// Interface with implementation
83@interface I13
84@end
85
86@implementation I13
87@end
88
89@interface I13b
90@end
91
92@implementation I13b
93@end
94
95// Implementation by itself
96@implementation I14 : I12
97@end
98
99@implementation I15 : I11
100@end
101