xref: /aosp_15_r20/external/clang/test/Modules/method_pool.m (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li// RUN: rm -rf %t
2*67e74705SXin Li// RUN: %clang_cc1 -fmodules-cache-path=%t -fmodules -fimplicit-module-maps -I %S/Inputs %s -verify
3*67e74705SXin Li
4*67e74705SXin Li
5*67e74705SXin Li@import MethodPoolA;
6*67e74705SXin Li
7*67e74705SXin Li@interface D
8*67e74705SXin Li- (void)method5:(D*)obj;
9*67e74705SXin Li@end
10*67e74705SXin Li
11*67e74705SXin Li// expected-note@Inputs/MethodPoolA.h:7{{using}}
12*67e74705SXin Li// expected-note@Inputs/MethodPoolB.h:12{{also found}}
13*67e74705SXin Li
14*67e74705SXin Livoid testMethod1(id object) {
15*67e74705SXin Li  [object method1];
16*67e74705SXin Li}
17*67e74705SXin Li
18*67e74705SXin Livoid testMethod2(id object) {
19*67e74705SXin Li  [object method2:1];
20*67e74705SXin Li}
21*67e74705SXin Li
22*67e74705SXin Livoid testMethod4(id object) {
23*67e74705SXin Li  [object method4]; // expected-warning{{instance method '-method4' not found (return type defaults to 'id')}}
24*67e74705SXin Li}
25*67e74705SXin Li
26*67e74705SXin Livoid testMethod5(id object, D* d) {
27*67e74705SXin Li  [object method5:d];
28*67e74705SXin Li}
29*67e74705SXin Li
30*67e74705SXin Li@import MethodPoolB;
31*67e74705SXin Li
32*67e74705SXin Livoid testMethod1Again(id object) {
33*67e74705SXin Li  [object method1];
34*67e74705SXin Li}
35*67e74705SXin Li
36*67e74705SXin Livoid testMethod2Again(id object) {
37*67e74705SXin Li  [object method2:1]; // expected-warning{{multiple methods named 'method2:' found}}
38*67e74705SXin Li}
39*67e74705SXin Li
40*67e74705SXin Livoid testMethod3(id object) {
41*67e74705SXin Li  [object method3]; // expected-warning{{instance method '-method3' not found (return type defaults to 'id')}}
42*67e74705SXin Li}
43*67e74705SXin Li
44*67e74705SXin Li@import MethodPoolB.Sub;
45*67e74705SXin Li
46*67e74705SXin Livoid testMethod3Again(id object) {
47*67e74705SXin Li  char *str = [object method3]; // okay: only found in MethodPoolB.Sub
48*67e74705SXin Li}
49*67e74705SXin Li
50*67e74705SXin Livoid testMethod6(id object) {
51*67e74705SXin Li  [object method6];
52*67e74705SXin Li}
53*67e74705SXin Li
54*67e74705SXin Li@import MethodPoolA.Sub;
55*67e74705SXin Li
56*67e74705SXin Livoid testMethod3AgainAgain(id object) {
57*67e74705SXin Li  [object method3]; // expected-warning{{multiple methods named 'method3' found}}
58*67e74705SXin Li  // expected-note@Inputs/MethodPoolBSub.h:2{{using}}
59*67e74705SXin Li  // expected-note@Inputs/MethodPoolASub.h:2{{also found}}
60*67e74705SXin Li}
61*67e74705SXin Li
62*67e74705SXin Livoid testMethod4Again(id object) {
63*67e74705SXin Li  [object method4];
64*67e74705SXin Li}
65*67e74705SXin Li
66*67e74705SXin Livoid testMethod5Again(id object, D* d) {
67*67e74705SXin Li  [object method5:d];
68*67e74705SXin Li}
69