1namespace { 2class MyCls { 3 void in_foo() { 4 vec.x = 0; 5 } 6 void out_foo(); 7 8 struct Vec { int x, y; }; 9 Vec vec; 10}; 11 12void MyCls::out_foo() { 13 vec.x = 0; 14} 15 16class OtherClass : public MyCls { 17public: 18 OtherClass(const OtherClass &other) : MyCls(other), value(value) { } 19 20private: 21 int value; 22 MyCls *object; 23}; 24} 25 26// RUN: c-index-test -code-completion-at=%s:4:9 -std=c++98 %s | FileCheck %s 27// RUN: c-index-test -code-completion-at=%s:13:7 -std=c++98 %s | FileCheck %s 28// CHECK: CXXMethod:{ResultType MyCls::Vec &}{TypedText operator=}{LeftParen (}{Placeholder const MyCls::Vec &}{RightParen )} (34) 29// CHECK-NEXT: StructDecl:{TypedText Vec}{Text ::} (75) 30// CHECK-NEXT: FieldDecl:{ResultType int}{TypedText x} (35) 31// CHECK-NEXT: FieldDecl:{ResultType int}{TypedText y} (35) 32// CHECK-NEXT: CXXDestructor:{ResultType void}{TypedText ~Vec}{LeftParen (}{RightParen )} (34) 33// CHECK-NEXT: Completion contexts: 34// CHECK-NEXT: Dot member access 35// CHECK-NEXT: Container Kind: StructDecl 36 37// RUN: c-index-test -code-completion-at=%s:18:41 %s | FileCheck -check-prefix=CHECK-CTOR-INIT %s 38// CHECK-CTOR-INIT: NotImplemented:{TypedText MyCls}{LeftParen (}{Placeholder args}{RightParen )} (7) 39// CHECK-CTOR-INIT: MemberRef:{TypedText object}{LeftParen (}{Placeholder args}{RightParen )} (35) 40// CHECK-CTOR-INIT: MemberRef:{TypedText value}{LeftParen (}{Placeholder args}{RightParen )} (35) 41// RUN: c-index-test -code-completion-at=%s:18:55 %s | FileCheck -check-prefix=CHECK-CTOR-INIT-2 %s 42// CHECK-CTOR-INIT-2-NOT: NotImplemented:{TypedText MyCls}{LeftParen (}{Placeholder args}{RightParen )} 43// CHECK-CTOR-INIT-2: MemberRef:{TypedText object}{LeftParen (}{Placeholder args}{RightParen )} (35) 44// CHECK-CTOR-INIT-2: MemberRef:{TypedText value}{LeftParen (}{Placeholder args}{RightParen )} (7) 45