1*67e74705SXin Li struct Base1 { 2*67e74705SXin Li int member1; 3*67e74705SXin Li float member2; 4*67e74705SXin Li }; 5*67e74705SXin Li 6*67e74705SXin Li struct Base2 { 7*67e74705SXin Li int member1; 8*67e74705SXin Li double member3; 9*67e74705SXin Li void memfun1(int); 10*67e74705SXin Li }; 11*67e74705SXin Li 12*67e74705SXin Li struct Base3 : Base1, Base2 { 13*67e74705SXin Li void memfun1(float); 14*67e74705SXin Li void memfun1(double) const; 15*67e74705SXin Li void memfun2(int); 16*67e74705SXin Li }; 17*67e74705SXin Li 18*67e74705SXin Li struct Derived : Base3 { 19*67e74705SXin Li int member4; 20*67e74705SXin Li int memfun3(int); 21*67e74705SXin Li }; 22*67e74705SXin Li 23*67e74705SXin Li class Proxy { 24*67e74705SXin Li public: 25*67e74705SXin Li Derived *operator->() const; 26*67e74705SXin Li }; 27*67e74705SXin Li test(const Proxy & p)28*67e74705SXin Livoid test(const Proxy &p) { 29*67e74705SXin Li p-> 30*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:29:6 %s -o - | FileCheck -check-prefix=CHECK-CC1 %s 31*67e74705SXin Li // CHECK-CC1: Base1 : Base1:: 32*67e74705SXin Li // CHECK-CC1: member1 : [#int#][#Base1::#]member1 33*67e74705SXin Li // CHECK-CC1: member1 : [#int#][#Base2::#]member1 34*67e74705SXin Li // CHECK-CC1: member2 : [#float#][#Base1::#]member2 35*67e74705SXin Li // CHECK-CC1: member3 36*67e74705SXin Li // CHECK-CC1: member4 37*67e74705SXin Li // CHECK-CC1: memfun1 : [#void#][#Base3::#]memfun1(<#float#>) 38*67e74705SXin Li // CHECK-CC1: memfun1 : [#void#][#Base3::#]memfun1(<#double#>)[# const#] 39*67e74705SXin Li // CHECK-CC1: memfun1 (Hidden) : [#void#]Base2::memfun1(<#int#>) 40*67e74705SXin Li // CHECK-CC1: memfun2 : [#void#][#Base3::#]memfun2(<#int#>) 41*67e74705SXin Li // CHECK-CC1: memfun3 : [#int#]memfun3(<#int#>) 42*67e74705SXin Li 43