xref: /llvm-project/clang/test/Index/file-refs.cpp (revision 76377dcf99ddf628cdcd45833c839596e29e17f2)
1cddafd39SArgyrios Kyrtzidis namespace NS {
2cddafd39SArgyrios Kyrtzidis   class C {
3cddafd39SArgyrios Kyrtzidis   public:
C()4cddafd39SArgyrios Kyrtzidis     C() { }
5cddafd39SArgyrios Kyrtzidis     void m();
6cddafd39SArgyrios Kyrtzidis   };
7cddafd39SArgyrios Kyrtzidis }
8cddafd39SArgyrios Kyrtzidis 
m()9cddafd39SArgyrios Kyrtzidis void NS::C::m() {
10cddafd39SArgyrios Kyrtzidis   C c;
11cddafd39SArgyrios Kyrtzidis   c.m();
12cddafd39SArgyrios Kyrtzidis }
13cddafd39SArgyrios Kyrtzidis 
f()14cddafd39SArgyrios Kyrtzidis void f() {
15cddafd39SArgyrios Kyrtzidis   NS::C c1();
16cddafd39SArgyrios Kyrtzidis   NS::C c2 = NS::C();
17cddafd39SArgyrios Kyrtzidis }
18cddafd39SArgyrios Kyrtzidis 
19cddafd39SArgyrios Kyrtzidis void over(int);
20cddafd39SArgyrios Kyrtzidis void over(float);
21cddafd39SArgyrios Kyrtzidis 
test_over()22cddafd39SArgyrios Kyrtzidis void test_over() {
23cddafd39SArgyrios Kyrtzidis   over(0);
24cddafd39SArgyrios Kyrtzidis   over(0.0f);
25cddafd39SArgyrios Kyrtzidis }
26cddafd39SArgyrios Kyrtzidis 
27cddafd39SArgyrios Kyrtzidis template <typename T>
tf(T t)28cddafd39SArgyrios Kyrtzidis T tf(T t) {
29cddafd39SArgyrios Kyrtzidis   return t;
30cddafd39SArgyrios Kyrtzidis }
31cddafd39SArgyrios Kyrtzidis 
32cddafd39SArgyrios Kyrtzidis namespace Test2 {
33cddafd39SArgyrios Kyrtzidis 
34cddafd39SArgyrios Kyrtzidis struct S {
35cddafd39SArgyrios Kyrtzidis   S(int x, int y);
36cddafd39SArgyrios Kyrtzidis   S();
37cddafd39SArgyrios Kyrtzidis };
38cddafd39SArgyrios Kyrtzidis 
39cddafd39SArgyrios Kyrtzidis typedef S Cake;
40cddafd39SArgyrios Kyrtzidis 
f()41cddafd39SArgyrios Kyrtzidis void f() {
42cddafd39SArgyrios Kyrtzidis   Cake p;
43cddafd39SArgyrios Kyrtzidis   p = Test2::S(0,2);
44cddafd39SArgyrios Kyrtzidis   p = Test2::Cake(0,2);
45cddafd39SArgyrios Kyrtzidis }
46cddafd39SArgyrios Kyrtzidis 
47cddafd39SArgyrios Kyrtzidis }
48cddafd39SArgyrios Kyrtzidis 
49cddafd39SArgyrios Kyrtzidis // RUN: c-index-test \
50cddafd39SArgyrios Kyrtzidis 
51cddafd39SArgyrios Kyrtzidis // RUN:  -file-refs-at=%s:9:7 \
52cddafd39SArgyrios Kyrtzidis // CHECK:      NamespaceRef=NS:1:11
53cddafd39SArgyrios Kyrtzidis // CHECK-NEXT: Namespace=NS:1:11 (Definition) =[1:11 - 1:13]
54cddafd39SArgyrios Kyrtzidis // CHECK-NEXT: NamespaceRef=NS:1:11 =[9:6 - 9:8]
55cddafd39SArgyrios Kyrtzidis // CHECK-NEXT: NamespaceRef=NS:1:11 =[15:3 - 15:5]
56cddafd39SArgyrios Kyrtzidis // CHECK-NEXT: NamespaceRef=NS:1:11 =[16:3 - 16:5]
57cddafd39SArgyrios Kyrtzidis // CHECK-NEXT: NamespaceRef=NS:1:11 =[16:14 - 16:16]
58cddafd39SArgyrios Kyrtzidis 
59cddafd39SArgyrios Kyrtzidis // RUN:  -file-refs-at=%s:2:9 \
60cddafd39SArgyrios Kyrtzidis // CHECK-NEXT: ClassDecl=C:2:9 (Definition)
61cddafd39SArgyrios Kyrtzidis // CHECK-NEXT: ClassDecl=C:2:9 (Definition) =[2:9 - 2:10]
622956535bSJonathan Coe // CHECK-NEXT: CXXConstructor=C:4:5 (Definition) (default constructor) =[4:5 - 4:6]
63cddafd39SArgyrios Kyrtzidis // CHECK-NEXT: TypeRef=class NS::C:2:9 =[9:10 - 9:11]
64cddafd39SArgyrios Kyrtzidis // CHECK-NEXT: TypeRef=class NS::C:2:9 =[10:3 - 10:4]
65cddafd39SArgyrios Kyrtzidis // CHECK-NEXT: TypeRef=class NS::C:2:9 =[15:7 - 15:8]
66cddafd39SArgyrios Kyrtzidis // CHECK-NEXT: TypeRef=class NS::C:2:9 =[16:7 - 16:8]
67cddafd39SArgyrios Kyrtzidis // CHECK-NEXT: TypeRef=class NS::C:2:9 =[16:18 - 16:19]
68cddafd39SArgyrios Kyrtzidis 
69cddafd39SArgyrios Kyrtzidis // RUN:  -file-refs-at=%s:16:18 \
70cddafd39SArgyrios Kyrtzidis // CHECK-NEXT: CallExpr=C:4:5
71cddafd39SArgyrios Kyrtzidis // CHECK-NEXT: ClassDecl=C:2:9 (Definition) =[2:9 - 2:10]
722956535bSJonathan Coe // CHECK-NEXT: CXXConstructor=C:4:5 (Definition) (default constructor) =[4:5 - 4:6]
73cddafd39SArgyrios Kyrtzidis // CHECK-NEXT: TypeRef=class NS::C:2:9 =[9:10 - 9:11]
74cddafd39SArgyrios Kyrtzidis // CHECK-NEXT: TypeRef=class NS::C:2:9 =[10:3 - 10:4]
75cddafd39SArgyrios Kyrtzidis // CHECK-NEXT: TypeRef=class NS::C:2:9 =[15:7 - 15:8]
76cddafd39SArgyrios Kyrtzidis // CHECK-NEXT: TypeRef=class NS::C:2:9 =[16:7 - 16:8]
77cddafd39SArgyrios Kyrtzidis // CHECK-NEXT: TypeRef=class NS::C:2:9 =[16:18 - 16:19]
78cddafd39SArgyrios Kyrtzidis 
79cddafd39SArgyrios Kyrtzidis // RUN:  -file-refs-at=%s:20:8 \
80cddafd39SArgyrios Kyrtzidis // CHECK-NEXT: FunctionDecl=over:20:6
81cddafd39SArgyrios Kyrtzidis // CHECK-NEXT: FunctionDecl=over:20:6 =[20:6 - 20:10]
82cddafd39SArgyrios Kyrtzidis // CHECK-NEXT: DeclRefExpr=over:20:6 =[24:3 - 24:7]
83cddafd39SArgyrios Kyrtzidis 
84cddafd39SArgyrios Kyrtzidis // RUN:  -file-refs-at=%s:28:1 \
85cddafd39SArgyrios Kyrtzidis // CHECK-NEXT: TypeRef=T:27:20
86cddafd39SArgyrios Kyrtzidis // FIXME: Missing TemplateTypeParameter=T:27:20 (Definition)
87cddafd39SArgyrios Kyrtzidis // CHECK-NEXT: TypeRef=T:27:20 =[28:1 - 28:2]
88cddafd39SArgyrios Kyrtzidis // CHECK-NEXT: TypeRef=T:27:20 =[28:6 - 28:7]
89cddafd39SArgyrios Kyrtzidis 
90cddafd39SArgyrios Kyrtzidis // RUN:  -file-refs-at=%s:43:14 \
91cddafd39SArgyrios Kyrtzidis // CHECK-NEXT: CallExpr=S:35:3
92cddafd39SArgyrios Kyrtzidis // CHECK-NEXT: StructDecl=S:34:8 (Definition) =[34:8 - 34:9]
93cddafd39SArgyrios Kyrtzidis // CHECK-NEXT: CXXConstructor=S:35:3 =[35:3 - 35:4]
942956535bSJonathan Coe // CHECK-NEXT: CXXConstructor=S:36:3 (default constructor) =[36:3 - 36:4]
95cddafd39SArgyrios Kyrtzidis // CHECK-NEXT: TypeRef=struct Test2::S:34:8 =[39:9 - 39:10]
96cddafd39SArgyrios Kyrtzidis // CHECK-NEXT: TypeRef=struct Test2::S:34:8 =[43:14 - 43:15]
97cddafd39SArgyrios Kyrtzidis 
98cddafd39SArgyrios Kyrtzidis // RUN:  -file-refs-at=%s:44:16 \
99cddafd39SArgyrios Kyrtzidis // CHECK-NEXT: CallExpr=S:35:3
100cddafd39SArgyrios Kyrtzidis // CHECK-NEXT: TypedefDecl=Cake:39:11 (Definition) =[39:11 - 39:15]
101*76377dcfSAlex Lorenz // CHECK-NEXT: TypeRef=Test2::Cake:39:11 =[42:3 - 42:7]
102*76377dcfSAlex Lorenz // CHECK-NEXT: TypeRef=Test2::Cake:39:11 =[44:14 - 44:18]
103cddafd39SArgyrios Kyrtzidis 
104cddafd39SArgyrios Kyrtzidis // RUN:   %s | FileCheck %s
105