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