// Matches | |
@interface I1 { | |
int ivar1; | |
} | |
@end | |
// Matches | |
@interface I2 : I1 { | |
float ivar2; | |
} | |
@end | |
// Ivar mismatch | |
@interface I3 { | |
int ivar1; | |
float ivar2; | |
} | |
@end | |
// Superclass mismatch | |
@interface I4 : I1 { | |
} | |
@end | |
// Methods match | |
@interface I5 | |
+ (float)bar; | |
- (int)foo; | |
@end | |
// Method mismatch | |
@interface I6 | |
+ (float)foo; | |
@end | |
// Method mismatch | |
@interface I7 | |
- (int)foo; | |
+ (int)bar:(float)x; | |
@end | |
// Method mismatch | |
@interface I8 | |
- (int)foo; | |
+ (int)bar:(float)x, ...; | |
@end | |
// Matching protocol | |
@protocol P0 | |
+ (int)foo; | |
- (int)bar:(float)x; | |
@end | |
// Protocol with mismatching method | |
@protocol P1 | |
+ (int)foo; | |
- (int)bar:(double)x; | |
@end | |
// Interface with protocol | |
@interface I9 <P0> | |
+ (int)foo; | |
- (int)bar:(float)x; | |
@end | |
// Protocol with protocol | |
@protocol P2 <P0> | |
- (float)wibble:(int)a1 second:(int)a2; | |
@end | |
// Forward-declared interface | |
@class I10; @interface I12 @end | |
@interface I11 | |
@end | |
// Forward-declared protocols | |
@protocol P3, P4; | |
@protocol P5 | |
- (double)honk:(int)a; | |
@end | |
// Interface with implementation | |
@interface I13 | |
@end | |
@implementation I13 | |
@end | |
@interface I13b | |
@end | |
@implementation I13b | |
@end | |
// Implementation by itself | |
@implementation I14 : I12 | |
@end | |
@implementation I15 : I11 | |
@end |