code-completion.cpp revision 3ac738567fdf4df636b9e76c5a2d3dc3d6f80235
1// Code-completion through the C interface 2 3struct X { 4 int member; 5}; 6 7struct Y { 8 float member; 9 void memfunc(int i = 17); 10}; 11 12struct Z : X, Y { 13 double member; 14 operator int() const; 15}; 16 17struct Z get_Z(); 18 19void test_Z() { 20 // RUN: c-index-test -code-completion-at=%s:21:11 %s | FileCheck -check-prefix=CHECK-MEMBER %s 21 get_Z().member = 17; 22} 23 24 25float& overloaded(int i, long second); 26double& overloaded(float f, int second); 27int& overloaded(Z z, int second); 28 29void test_overloaded() { 30 // RUN: c-index-test -code-completion-at=%s:31:18 %s | FileCheck -check-prefix=CHECK-OVERLOAD %s 31 overloaded(Z(), 0); 32} 33 34// CHECK-MEMBER: FieldDecl:{TypedText member} 35// CHECK-MEMBER: FunctionDecl:{Informative Y::}{TypedText memfunc}{LeftParen (}{Optional {Placeholder int i}}{RightParen )} 36// CHECK-MEMBER: FunctionDecl:{Informative X::}{TypedText ~X}{LeftParen (}{RightParen )} 37// CHECK-MEMBER: FunctionDecl:{Informative Y::}{TypedText ~Y}{LeftParen (}{RightParen )} 38// CHECK-MEMBER: FunctionDecl:{TypedText ~Z}{LeftParen (}{RightParen )} 39// CHECK-MEMBER: FunctionDecl:{TypedText operator int}{LeftParen (}{RightParen )} 40// CHECK-MEMBER: FunctionDecl:{TypedText operator=}{LeftParen (}{Placeholder struct Z const &}{RightParen )} 41// CHECK-MEMBER: StructDecl:{TypedText X}{Text ::} 42// CHECK-MEMBER: StructDecl:{TypedText Y}{Text ::} 43// CHECK-MEMBER: StructDecl:{TypedText Z}{Text ::} 44// CHECK-MEMBER: FieldDecl:{Text X::}{TypedText member} 45// CHECK-MEMBER: FieldDecl:{Text Y::}{TypedText member} 46// CHECK-MEMBER: FunctionDecl:{Text X::}{TypedText operator=}{LeftParen (}{Placeholder struct X const &}{RightParen )} 47// CHECK-MEMBER: FunctionDecl:{Text Y::}{TypedText operator=}{LeftParen (}{Placeholder struct Y const &}{RightParen )} 48 49// CHECK-OVERLOAD: NotImplemented:{Text overloaded}{LeftParen (}{Text struct Z z}{Comma , }{CurrentParameter int second}{RightParen )} 50// CHECK-OVERLOAD: NotImplemented:{Text overloaded}{LeftParen (}{Text int i}{Comma , }{CurrentParameter long second}{RightParen )} 51// CHECK-OVERLOAD: NotImplemented:{Text overloaded}{LeftParen (}{Text float f}{Comma , }{CurrentParameter int second}{RightParen )} 52