125270b6e6a8416b7532cfe552b41794418ea19b1Douglas Gregornamespace {
27d100872341f233c81e1d7b72b40457e62c36862Argyrios Kyrtzidisclass MyCls {
37d100872341f233c81e1d7b72b40457e62c36862Argyrios Kyrtzidis  void in_foo() {
47d100872341f233c81e1d7b72b40457e62c36862Argyrios Kyrtzidis    vec.x = 0;
57d100872341f233c81e1d7b72b40457e62c36862Argyrios Kyrtzidis  }
67d100872341f233c81e1d7b72b40457e62c36862Argyrios Kyrtzidis  void out_foo();
77d100872341f233c81e1d7b72b40457e62c36862Argyrios Kyrtzidis
87d100872341f233c81e1d7b72b40457e62c36862Argyrios Kyrtzidis  struct Vec { int x, y; };
97d100872341f233c81e1d7b72b40457e62c36862Argyrios Kyrtzidis  Vec vec;
107d100872341f233c81e1d7b72b40457e62c36862Argyrios Kyrtzidis};
117d100872341f233c81e1d7b72b40457e62c36862Argyrios Kyrtzidis
127d100872341f233c81e1d7b72b40457e62c36862Argyrios Kyrtzidisvoid MyCls::out_foo() {
137d100872341f233c81e1d7b72b40457e62c36862Argyrios Kyrtzidis  vec.x = 0;
147d100872341f233c81e1d7b72b40457e62c36862Argyrios Kyrtzidis}
157d100872341f233c81e1d7b72b40457e62c36862Argyrios Kyrtzidis
163dd0f76fd71593a18525ce22bd60485015a23fb2Douglas Gregorclass OtherClass : public MyCls {
173dd0f76fd71593a18525ce22bd60485015a23fb2Douglas Gregorpublic:
183dd0f76fd71593a18525ce22bd60485015a23fb2Douglas Gregor  OtherClass(const OtherClass &other) : MyCls(other), value(value) { }
193dd0f76fd71593a18525ce22bd60485015a23fb2Douglas Gregor
203dd0f76fd71593a18525ce22bd60485015a23fb2Douglas Gregorprivate:
213dd0f76fd71593a18525ce22bd60485015a23fb2Douglas Gregor  int value;
223dd0f76fd71593a18525ce22bd60485015a23fb2Douglas Gregor  MyCls *object;
233dd0f76fd71593a18525ce22bd60485015a23fb2Douglas Gregor};
2425270b6e6a8416b7532cfe552b41794418ea19b1Douglas Gregor}
253dd0f76fd71593a18525ce22bd60485015a23fb2Douglas Gregor
2650f88b99c60c2ed31b339cd8bd484766cc9e916bNico Weber// RUN: c-index-test -code-completion-at=%s:4:9 -std=c++98 %s | FileCheck %s
2750f88b99c60c2ed31b339cd8bd484766cc9e916bNico Weber// RUN: c-index-test -code-completion-at=%s:13:7 -std=c++98 %s | FileCheck %s
287d100872341f233c81e1d7b72b40457e62c36862Argyrios Kyrtzidis// CHECK:      CXXMethod:{ResultType MyCls::Vec &}{TypedText operator=}{LeftParen (}{Placeholder const MyCls::Vec &}{RightParen )} (34)
297d100872341f233c81e1d7b72b40457e62c36862Argyrios Kyrtzidis// CHECK-NEXT: StructDecl:{TypedText Vec}{Text ::} (75)
307d100872341f233c81e1d7b72b40457e62c36862Argyrios Kyrtzidis// CHECK-NEXT: FieldDecl:{ResultType int}{TypedText x} (35)
317d100872341f233c81e1d7b72b40457e62c36862Argyrios Kyrtzidis// CHECK-NEXT: FieldDecl:{ResultType int}{TypedText y} (35)
327d100872341f233c81e1d7b72b40457e62c36862Argyrios Kyrtzidis// CHECK-NEXT: CXXDestructor:{ResultType void}{TypedText ~Vec}{LeftParen (}{RightParen )} (34)
337d100872341f233c81e1d7b72b40457e62c36862Argyrios Kyrtzidis// CHECK-NEXT: Completion contexts:
347d100872341f233c81e1d7b72b40457e62c36862Argyrios Kyrtzidis// CHECK-NEXT: Dot member access
357d100872341f233c81e1d7b72b40457e62c36862Argyrios Kyrtzidis// CHECK-NEXT: Container Kind: StructDecl
363dd0f76fd71593a18525ce22bd60485015a23fb2Douglas Gregor
3725270b6e6a8416b7532cfe552b41794418ea19b1Douglas Gregor// RUN: c-index-test -code-completion-at=%s:18:41 %s | FileCheck -check-prefix=CHECK-CTOR-INIT %s
383dd0f76fd71593a18525ce22bd60485015a23fb2Douglas Gregor// CHECK-CTOR-INIT: NotImplemented:{TypedText MyCls}{LeftParen (}{Placeholder args}{RightParen )} (7)
393dd0f76fd71593a18525ce22bd60485015a23fb2Douglas Gregor// CHECK-CTOR-INIT: MemberRef:{TypedText object}{LeftParen (}{Placeholder args}{RightParen )} (35)
403dd0f76fd71593a18525ce22bd60485015a23fb2Douglas Gregor// CHECK-CTOR-INIT: MemberRef:{TypedText value}{LeftParen (}{Placeholder args}{RightParen )} (35)
4125270b6e6a8416b7532cfe552b41794418ea19b1Douglas Gregor// RUN: c-index-test -code-completion-at=%s:18:55 %s | FileCheck -check-prefix=CHECK-CTOR-INIT-2 %s
423dd0f76fd71593a18525ce22bd60485015a23fb2Douglas Gregor// CHECK-CTOR-INIT-2-NOT: NotImplemented:{TypedText MyCls}{LeftParen (}{Placeholder args}{RightParen )}
433dd0f76fd71593a18525ce22bd60485015a23fb2Douglas Gregor// CHECK-CTOR-INIT-2: MemberRef:{TypedText object}{LeftParen (}{Placeholder args}{RightParen )} (35)
443dd0f76fd71593a18525ce22bd60485015a23fb2Douglas Gregor// CHECK-CTOR-INIT-2: MemberRef:{TypedText value}{LeftParen (}{Placeholder args}{RightParen )} (7)
45