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