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