1*67e74705SXin Li // The run lines are below, because this test is line- and 2*67e74705SXin Li // column-number sensitive. 3*67e74705SXin Li 4*67e74705SXin Li namespace N { 5*67e74705SXin Li template<typename T> struct A { 6*67e74705SXin Li template<typename U> friend class B; 7*67e74705SXin Li }; 8*67e74705SXin Li 9*67e74705SXin Li template<typename T> struct B { }; 10*67e74705SXin Li } 11*67e74705SXin Li foo()12*67e74705SXin Livoid foo() { 13*67e74705SXin Li N::A<int> a1; 14*67e74705SXin Li N::A<int> a2; 15*67e74705SXin Li } 16*67e74705SXin Li 17*67e74705SXin Li namespace M { 18*67e74705SXin Li template<typename T> struct C { 19*67e74705SXin Li template<typename U> friend struct C; 20*67e74705SXin Li }; 21*67e74705SXin Li } 22*67e74705SXin Li bar()23*67e74705SXin Livoid bar() { 24*67e74705SXin Li M::C<int> c1; 25*67e74705SXin Li M::C<int> c2; 26*67e74705SXin Li } 27*67e74705SXin Li 28*67e74705SXin Li // RUN: c-index-test -code-completion-at=%s:14:6 %s | FileCheck -check-prefix=CHECK-ACCESS-1 %s 29*67e74705SXin Li // CHECK-ACCESS-1: ClassTemplate:{TypedText A}{LeftAngle <}{Placeholder typename T}{RightAngle >} (50) 30*67e74705SXin Li // CHECK-ACCESS-1: ClassTemplate:{TypedText B}{LeftAngle <}{Placeholder typename T}{RightAngle >} (50) 31*67e74705SXin Li 32*67e74705SXin Li // RUN: c-index-test -code-completion-at=%s:25:6 %s | FileCheck -check-prefix=CHECK-ACCESS-2 %s 33*67e74705SXin Li // CHECK-ACCESS-2: ClassTemplate:{TypedText C}{LeftAngle <}{Placeholder typename T}{RightAngle >} (50) 34