1*5cec2aeaSArgyrios Kyrtzidis class MyCls {
2*5cec2aeaSArgyrios Kyrtzidis   void in_foo() {
3*5cec2aeaSArgyrios Kyrtzidis     vec.x = 0;
4*5cec2aeaSArgyrios Kyrtzidis   }
5*5cec2aeaSArgyrios Kyrtzidis   void out_foo();
6*5cec2aeaSArgyrios Kyrtzidis 
7*5cec2aeaSArgyrios Kyrtzidis   struct Vec { int x, y; };
8*5cec2aeaSArgyrios Kyrtzidis   Vec vec;
9*5cec2aeaSArgyrios Kyrtzidis };
10*5cec2aeaSArgyrios Kyrtzidis 
11*5cec2aeaSArgyrios Kyrtzidis void MyCls::out_foo() {
12*5cec2aeaSArgyrios Kyrtzidis   vec.x = 0;
13*5cec2aeaSArgyrios Kyrtzidis }
14*5cec2aeaSArgyrios Kyrtzidis 
15*5cec2aeaSArgyrios Kyrtzidis // RUN: c-index-test -code-completion-at=%s:3:9 %s | FileCheck %s
16*5cec2aeaSArgyrios Kyrtzidis // RUN: c-index-test -code-completion-at=%s:12:7 %s | FileCheck %s
17*5cec2aeaSArgyrios Kyrtzidis // CHECK:      CXXMethod:{ResultType MyCls::Vec &}{TypedText operator=}{LeftParen (}{Placeholder const MyCls::Vec &}{RightParen )} (34)
18*5cec2aeaSArgyrios Kyrtzidis // CHECK-NEXT: StructDecl:{TypedText Vec}{Text ::} (75)
19*5cec2aeaSArgyrios Kyrtzidis // CHECK-NEXT: FieldDecl:{ResultType int}{TypedText x} (35)
20*5cec2aeaSArgyrios Kyrtzidis // CHECK-NEXT: FieldDecl:{ResultType int}{TypedText y} (35)
21*5cec2aeaSArgyrios Kyrtzidis // CHECK-NEXT: CXXDestructor:{ResultType void}{TypedText ~Vec}{LeftParen (}{RightParen )} (34)
22*5cec2aeaSArgyrios Kyrtzidis // CHECK-NEXT: Completion contexts:
23*5cec2aeaSArgyrios Kyrtzidis // CHECK-NEXT: Dot member access
24*5cec2aeaSArgyrios Kyrtzidis // CHECK-NEXT: Container Kind: StructDecl
25