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