xref: /aosp_15_r20/external/clang/test/SemaObjC/method-lookup-4.m (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li// RUN: %clang_cc1 -fsyntax-only -verify %s
2*67e74705SXin Li// expected-no-diagnostics
3*67e74705SXin Li
4*67e74705SXin Li@interface NSObject {}
5*67e74705SXin Li
6*67e74705SXin Li@end
7*67e74705SXin Li
8*67e74705SXin Li@interface MyClass : NSObject {}
9*67e74705SXin Li
10*67e74705SXin Li@end
11*67e74705SXin Li
12*67e74705SXin Li@interface MyClass (MyCategorie)
13*67e74705SXin Li
14*67e74705SXin Li@end
15*67e74705SXin Li
16*67e74705SXin Li@interface MySubClass : MyClass {}
17*67e74705SXin Li
18*67e74705SXin Li@end
19*67e74705SXin Li
20*67e74705SXin Li@interface MySubSubClass : MySubClass {}
21*67e74705SXin Li
22*67e74705SXin Li@end
23*67e74705SXin Li
24*67e74705SXin Li@implementation NSObject (NSObjectCategory)
25*67e74705SXin Li- (void)rootMethod {}
26*67e74705SXin Li@end
27*67e74705SXin Li
28*67e74705SXin Li@implementation MyClass
29*67e74705SXin Li
30*67e74705SXin Li+ (void)myClassMethod { }
31*67e74705SXin Li- (void)myMethod { }
32*67e74705SXin Li
33*67e74705SXin Li@end
34*67e74705SXin Li
35*67e74705SXin Li@implementation MyClass (MyCategorie)
36*67e74705SXin Li+ (void)myClassCategoryMethod { }
37*67e74705SXin Li- (void)categoryMethod {}
38*67e74705SXin Li@end
39*67e74705SXin Li
40*67e74705SXin Li@implementation MySubClass
41*67e74705SXin Li
42*67e74705SXin Li- (void)mySubMethod {}
43*67e74705SXin Li
44*67e74705SXin Li- (void)myTest {
45*67e74705SXin Li  [self mySubMethod];
46*67e74705SXin Li  // should lookup method in superclass implementation if available
47*67e74705SXin Li  [self myMethod];
48*67e74705SXin Li  [super myMethod];
49*67e74705SXin Li
50*67e74705SXin Li  [self categoryMethod];
51*67e74705SXin Li  [super categoryMethod];
52*67e74705SXin Li
53*67e74705SXin Li  // instance method of root class
54*67e74705SXin Li  [MyClass rootMethod];
55*67e74705SXin Li
56*67e74705SXin Li  [MyClass myClassMethod];
57*67e74705SXin Li  [MySubClass myClassMethod];
58*67e74705SXin Li
59*67e74705SXin Li  [MyClass myClassCategoryMethod];
60*67e74705SXin Li  [MySubClass myClassCategoryMethod];
61*67e74705SXin Li}
62*67e74705SXin Li
63*67e74705SXin Li@end
64