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 I12, I10; 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