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