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