1 // The run lines are below, because this test is line- and 2 // column-number sensitive. 3 struct Foo { 4 void babble() const volatile; 5 void bar(); 6 void baz() const; 7 void bingo() volatile; 8 void theend() const volatile; 9 }; 10 11 template<typename T> 12 struct smart_ptr { 13 T *operator->(); 14 const T* operator->() const; 15 }; 16 17 void text(Foo f, Foo *fp, const Foo &fc, const Foo *fcp, 18 smart_ptr<Foo> sf, const smart_ptr<Foo> &sfc, Foo volatile *fvp) { 19 f.bar(); 20 fp->bar(); 21 fc.baz(); 22 fcp->baz(); 23 sf->bar(); 24 sfc->baz(); 25 fvp->babble(); 26 } 27 28 void Foo::bar() { 29 30 } 31 32 void Foo::baz() const { 33 34 } 35 36 void Foo::bingo() volatile { 37 38 } 39 40 // Check member access expressions. 41 // RUN: c-index-test -code-completion-at=%s:19:5 %s | FileCheck -check-prefix=CHECK-NOQUALS %s 42 // RUN: c-index-test -code-completion-at=%s:20:7 %s | FileCheck -check-prefix=CHECK-NOQUALS %s 43 // RUN: c-index-test -code-completion-at=%s:23:7 %s | FileCheck -check-prefix=CHECK-NOQUALS %s 44 // CHECK-NOQUALS: CXXMethod:{ResultType void}{TypedText babble}{LeftParen (}{RightParen )}{Informative const volatile} (35) 45 // CHECK-NOQUALS: CXXMethod:{ResultType void}{TypedText bar}{LeftParen (}{RightParen )} (34) 46 // CHECK-NOQUALS: CXXMethod:{ResultType void}{TypedText baz}{LeftParen (}{RightParen )}{Informative const} (35) 47 // CHECK-NOQUALS: CXXMethod:{ResultType void}{TypedText bingo}{LeftParen (}{RightParen )}{Informative volatile} (35) 48 // RUN: c-index-test -code-completion-at=%s:21:6 %s | FileCheck -check-prefix=CHECK-CONST %s 49 // RUN: c-index-test -code-completion-at=%s:22:8 %s | FileCheck -check-prefix=CHECK-CONST %s 50 // RUN: c-index-test -code-completion-at=%s:24:8 %s | FileCheck -check-prefix=CHECK-CONST %s 51 // CHECK-CONST: CXXMethod:{ResultType void}{TypedText babble}{LeftParen (}{RightParen )}{Informative const volatile} (35) 52 // CHECK-CONST-NOT: bar 53 // CHECK-CONST: CXXMethod:{ResultType void}{TypedText baz}{LeftParen (}{RightParen )}{Informative const} (34) 54 // CHECK-CONST-NOT: bingo 55 // CHECK-CONST: theend 56 // RUN: c-index-test -code-completion-at=%s:25:8 %s | FileCheck -check-prefix=CHECK-VOLATILE %s 57 // CHECK-VOLATILE: CXXMethod:{ResultType void}{TypedText babble}{LeftParen (}{RightParen )}{Informative const volatile} (35) 58 // CHECK-VOLATILE-NOT: baz 59 // CHECK-VOLATILE: CXXMethod:{ResultType void}{TypedText bingo}{LeftParen (}{RightParen )}{Informative volatile} (34) 60 61 // Check implicit member access expressions. 62 // RUN: c-index-test -code-completion-at=%s:29:2 %s | FileCheck -check-prefix=CHECK-IMPLICIT-NOQUALS %s 63 // CHECK-IMPLICIT-NOQUALS: CXXMethod:{ResultType void}{TypedText babble}{LeftParen (}{RightParen )}{Informative const volatile} (35) 64 // CHECK-IMPLICIT-NOQUALS: CXXMethod:{ResultType void}{TypedText bar}{LeftParen (}{RightParen )} (34) 65 // CHECK-IMPLICIT-NOQUALS: CXXMethod:{ResultType void}{TypedText baz}{LeftParen (}{RightParen )}{Informative const} (35) 66 // CHECK-IMPLICIT-NOQUALS: CXXMethod:{ResultType void}{TypedText bingo}{LeftParen (}{RightParen )}{Informative volatile} (35) 67 68 // RUN: c-index-test -code-completion-at=%s:33:1 %s | FileCheck -check-prefix=CHECK-IMPLICIT-CONST %s 69 // CHECK-IMPLICIT-CONST: CXXMethod:{ResultType void}{TypedText babble}{LeftParen (}{RightParen )}{Informative const volatile} (35) 70 // CHECK-IMPLICIT-CONST-NOT: bar 71 // CHECK-IMPLICIT-CONST: CXXMethod:{ResultType void}{TypedText baz}{LeftParen (}{RightParen )}{Informative const} (34) 72 // CHECK-IMPLICIT-CONST-NOT: bingo 73 // CHECK-IMPLICIT-CONST: theend 74 75 // RUN: c-index-test -code-completion-at=%s:37:1 %s | FileCheck -check-prefix=CHECK-IMPLICIT-VOLATILE %s 76 // CHECK-IMPLICIT-VOLATILE: CXXMethod:{ResultType void}{TypedText babble}{LeftParen (}{RightParen )}{Informative const volatile} (35) 77 // CHECK-IMPLICIT-VOLATILE-NOT: baz 78 // CHECK-IMPLICIT-VOLATILE: CXXMethod:{ResultType void}{TypedText bingo}{LeftParen (}{RightParen )}{Informative volatile} (34) 79 80 // RUN: c-index-test -code-completion-at=%s:4:17 %s | FileCheck -check-prefix=CHECK-CVQUAL-AFTER %s 81 // CHECK-CVQUAL-AFTER: NotImplemented:{TypedText const} (40) 82 // CHECK-CVQUAL-AFTER: NotImplemented:{TypedText volatile} (40) 83 84 // RUN: c-index-test -code-completion-at=%s:4:23 %s | FileCheck -check-prefix=CHECK-CVQUAL-AFTER2 %s 85 // CHECK-CVQUAL-AFTER2-NOT: NotImplemented:{TypedText const} (40) 86 // CHECK-CVQUAL-AFTER2: NotImplemented:{TypedText volatile} (40) 87