| // The run lines are below, because this test is line- and |
| // column-number sensitive. |
| struct Foo { |
| void babble() const volatile; |
| void bar(); |
| void baz() const; |
| void bingo() volatile; |
| void theend() const volatile; |
| }; |
| |
| template<typename T> |
| struct smart_ptr { |
| T *operator->(); |
| const T* operator->() const; |
| }; |
| |
| void text(Foo f, Foo *fp, const Foo &fc, const Foo *fcp, |
| smart_ptr<Foo> sf, const smart_ptr<Foo> &sfc, Foo volatile *fvp) { |
| f.bar(); |
| fp->bar(); |
| fc.baz(); |
| fcp->baz(); |
| sf->bar(); |
| sfc->baz(); |
| fvp->babble(); |
| } |
| |
| void Foo::bar() { |
| |
| } |
| |
| void Foo::baz() const { |
| |
| } |
| |
| void Foo::bingo() volatile { |
| |
| } |
| |
| // Check member access expressions. |
| // RUN: c-index-test -code-completion-at=%s:19:5 %s | FileCheck -check-prefix=CHECK-NOQUALS %s |
| // RUN: c-index-test -code-completion-at=%s:20:7 %s | FileCheck -check-prefix=CHECK-NOQUALS %s |
| // RUN: c-index-test -code-completion-at=%s:23:7 %s | FileCheck -check-prefix=CHECK-NOQUALS %s |
| // CHECK-NOQUALS: CXXMethod:{ResultType void}{TypedText babble}{LeftParen (}{RightParen )}{Informative const volatile} (35) |
| // CHECK-NOQUALS: CXXMethod:{ResultType void}{TypedText bar}{LeftParen (}{RightParen )} (34) |
| // CHECK-NOQUALS: CXXMethod:{ResultType void}{TypedText baz}{LeftParen (}{RightParen )}{Informative const} (35) |
| // CHECK-NOQUALS: CXXMethod:{ResultType void}{TypedText bingo}{LeftParen (}{RightParen )}{Informative volatile} (35) |
| // RUN: c-index-test -code-completion-at=%s:21:6 %s | FileCheck -check-prefix=CHECK-CONST %s |
| // RUN: c-index-test -code-completion-at=%s:22:8 %s | FileCheck -check-prefix=CHECK-CONST %s |
| // RUN: c-index-test -code-completion-at=%s:24:8 %s | FileCheck -check-prefix=CHECK-CONST %s |
| // CHECK-CONST: CXXMethod:{ResultType void}{TypedText babble}{LeftParen (}{RightParen )}{Informative const volatile} (35) |
| // CHECK-CONST-NOT: bar |
| // CHECK-CONST: CXXMethod:{ResultType void}{TypedText baz}{LeftParen (}{RightParen )}{Informative const} (34) |
| // CHECK-CONST-NOT: bingo |
| // CHECK-CONST: theend |
| // RUN: c-index-test -code-completion-at=%s:25:8 %s | FileCheck -check-prefix=CHECK-VOLATILE %s |
| // CHECK-VOLATILE: CXXMethod:{ResultType void}{TypedText babble}{LeftParen (}{RightParen )}{Informative const volatile} (35) |
| // CHECK-VOLATILE-NOT: baz |
| // CHECK-VOLATILE: CXXMethod:{ResultType void}{TypedText bingo}{LeftParen (}{RightParen )}{Informative volatile} (34) |
| |
| // Check implicit member access expressions. |
| // RUN: c-index-test -code-completion-at=%s:29:2 %s | FileCheck -check-prefix=CHECK-IMPLICIT-NOQUALS %s |
| // CHECK-IMPLICIT-NOQUALS: CXXMethod:{ResultType void}{TypedText babble}{LeftParen (}{RightParen )}{Informative const volatile} (35) |
| // CHECK-IMPLICIT-NOQUALS: CXXMethod:{ResultType void}{TypedText bar}{LeftParen (}{RightParen )} (34) |
| // CHECK-IMPLICIT-NOQUALS: CXXMethod:{ResultType void}{TypedText baz}{LeftParen (}{RightParen )}{Informative const} (35) |
| // CHECK-IMPLICIT-NOQUALS: CXXMethod:{ResultType void}{TypedText bingo}{LeftParen (}{RightParen )}{Informative volatile} (35) |
| |
| // RUN: c-index-test -code-completion-at=%s:33:1 %s | FileCheck -check-prefix=CHECK-IMPLICIT-CONST %s |
| // CHECK-IMPLICIT-CONST: CXXMethod:{ResultType void}{TypedText babble}{LeftParen (}{RightParen )}{Informative const volatile} (35) |
| // CHECK-IMPLICIT-CONST-NOT: bar |
| // CHECK-IMPLICIT-CONST: CXXMethod:{ResultType void}{TypedText baz}{LeftParen (}{RightParen )}{Informative const} (34) |
| // CHECK-IMPLICIT-CONST-NOT: bingo |
| // CHECK-IMPLICIT-CONST: theend |
| |
| // RUN: c-index-test -code-completion-at=%s:37:1 %s | FileCheck -check-prefix=CHECK-IMPLICIT-VOLATILE %s |
| // CHECK-IMPLICIT-VOLATILE: CXXMethod:{ResultType void}{TypedText babble}{LeftParen (}{RightParen )}{Informative const volatile} (35) |
| // CHECK-IMPLICIT-VOLATILE-NOT: baz |
| // CHECK-IMPLICIT-VOLATILE: CXXMethod:{ResultType void}{TypedText bingo}{LeftParen (}{RightParen )}{Informative volatile} (34) |
| |
| // RUN: c-index-test -code-completion-at=%s:4:17 %s | FileCheck -check-prefix=CHECK-CVQUAL-AFTER %s |
| // CHECK-CVQUAL-AFTER: NotImplemented:{TypedText const} (40) |
| // CHECK-CVQUAL-AFTER: NotImplemented:{TypedText volatile} (40) |
| |
| // RUN: c-index-test -code-completion-at=%s:4:23 %s | FileCheck -check-prefix=CHECK-CVQUAL-AFTER2 %s |
| // CHECK-CVQUAL-AFTER2-NOT: NotImplemented:{TypedText const} (40) |
| // CHECK-CVQUAL-AFTER2: NotImplemented:{TypedText volatile} (40) |