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