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 | |