xref: /aosp_15_r20/external/clang/test/Index/cursor-ref-names.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li template <typename T>
2*67e74705SXin Li struct Base {
3*67e74705SXin Li     void func();
4*67e74705SXin Li     int operator[](T);
5*67e74705SXin Li };
6*67e74705SXin Li 
7*67e74705SXin Li struct Sub: public Base<int> {
8*67e74705SXin Li     void func();
9*67e74705SXin Li };
10*67e74705SXin Li 
11*67e74705SXin Li template <typename T>
myMax(T a,T b)12*67e74705SXin Li inline T myMax(T a, T b)
13*67e74705SXin Li { return (a > b) ? a : b; }
14*67e74705SXin Li 
main()15*67e74705SXin Li int main()
16*67e74705SXin Li {
17*67e74705SXin Li     Sub inst;
18*67e74705SXin Li     inst.func();
19*67e74705SXin Li     inst[1];
20*67e74705SXin Li     inst.operator[](1);
21*67e74705SXin Li 
22*67e74705SXin Li     inst.Base<int>::operator[](1);
23*67e74705SXin Li     myMax<int>(1, 2);
24*67e74705SXin Li 
25*67e74705SXin Li     return 0;
26*67e74705SXin Li }
27*67e74705SXin Li 
28*67e74705SXin Li // RUN: c-index-test -test-load-source all %s | FileCheck %s
29*67e74705SXin Li // CHECK: cursor-ref-names.cpp:17:5: DeclStmt= Extent=[17:5 - 17:14]
30*67e74705SXin Li // CHECK: cursor-ref-names.cpp:17:9: VarDecl=inst:17:9 (Definition) Extent=[17:5 - 17:13]
31*67e74705SXin Li // CHECK: cursor-ref-names.cpp:17:5: TypeRef=struct Sub:7:8 Extent=[17:5 - 17:8]
32*67e74705SXin Li // CHECK: cursor-ref-names.cpp:17:9: CallExpr=Sub:7:8 Extent=[17:9 - 17:13]
33*67e74705SXin Li // CHECK: cursor-ref-names.cpp:18:5: CallExpr=func:8:10 Extent=[18:5 - 18:16]
34*67e74705SXin Li // CHECK: cursor-ref-names.cpp:18:10: MemberRefExpr=func:8:10 SingleRefName=[18:10 - 18:14] RefName=[18:10 - 18:14] Extent=[18:5 - 18:14]
35*67e74705SXin Li // CHECK: cursor-ref-names.cpp:18:5: DeclRefExpr=inst:17:9 Extent=[18:5 - 18:9]
36*67e74705SXin Li // CHECK: cursor-ref-names.cpp:19:5: CallExpr=operator[]:4:9 SingleRefName=[19:9 - 19:12] RefName=[19:9 - 19:10] RefName=[19:11 - 19:12] Extent=[19:5 - 19:12]
37*67e74705SXin Li // CHECK: cursor-ref-names.cpp:19:5: DeclRefExpr=inst:17:9 Extent=[19:5 - 19:9]
38*67e74705SXin Li // CHECK: cursor-ref-names.cpp:19:9: DeclRefExpr=operator[]:4:9 RefName=[19:9 - 19:10] RefName=[19:11 - 19:12] Extent=[19:9 - 19:12]
39*67e74705SXin Li // CHECK: cursor-ref-names.cpp:20:5: CallExpr=operator[]:4:9 Extent=[20:5 - 20:23]
40*67e74705SXin Li // CHECK: cursor-ref-names.cpp:20:10: MemberRefExpr=operator[]:4:9 SingleRefName=[20:10 - 20:20] RefName=[20:10 - 20:18] RefName=[20:18 - 20:19] RefName=[20:19 - 20:20] Extent=[20:5 - 20:20]
41*67e74705SXin Li // CHECK: cursor-ref-names.cpp:20:5: DeclRefExpr=inst:17:9 Extent=[20:5 - 20:9]
42*67e74705SXin Li // CHECK: cursor-ref-names.cpp:22:5: CallExpr=operator[]:4:9 Extent=[22:5 - 22:34]
43*67e74705SXin Li // CHECK: cursor-ref-names.cpp:22:21: MemberRefExpr=operator[]:4:9 SingleRefName=[22:10 - 22:31] RefName=[22:10 - 22:21] RefName=[22:21 - 22:29] RefName=[22:29 - 22:30] RefName=[22:30 - 22:31] Extent=[22:5 - 22:31]
44*67e74705SXin Li // CHECK: cursor-ref-names.cpp:22:5: DeclRefExpr=inst:17:9 Extent=[22:5 - 22:9]
45*67e74705SXin Li // CHECK: cursor-ref-names.cpp:22:10: TemplateRef=Base:2:8 Extent=[22:10 - 22:14]
46*67e74705SXin Li // CHECK: cursor-ref-names.cpp:23:5: CallExpr=myMax:12:10 Extent=[23:5 - 23:21]
47*67e74705SXin Li // CHECK: cursor-ref-names.cpp:23:5: DeclRefExpr=myMax:12:10 RefName=[23:5 - 23:10] RefName=[23:10 - 23:15] Extent=[23:5 - 23:15]
48