blob: 9068ef840bda2b779e4d58ea79a37614e1c0bbe4 [file] [log] [blame]
Douglas Gregor6b5f4102010-08-26 16:36:48 +00001// The run lines are below, because this test is line- and
2// column-number sensitive.
3struct Foo {
4 void babble() const volatile;
5 void bar();
6 void baz() const;
7 void bingo() volatile;
8 void theend() const volatile;
9};
10
11template<typename T>
12struct smart_ptr {
13 T *operator->();
14 const T* operator->() const;
15};
16
17void 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
28void Foo::bar() {
29
30}
31
32void Foo::baz() const {
33
34}
35
36void 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
Douglas Gregor503fd9a2010-10-19 00:03:23 +000044// 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)
Douglas Gregor6b5f4102010-08-26 16:36:48 +000048// 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
Douglas Gregor503fd9a2010-10-19 00:03:23 +000051// CHECK-CONST: CXXMethod:{ResultType void}{TypedText babble}{LeftParen (}{RightParen )}{Informative const volatile} (35)
Douglas Gregor6b5f4102010-08-26 16:36:48 +000052// CHECK-CONST-NOT: bar
Douglas Gregor503fd9a2010-10-19 00:03:23 +000053// CHECK-CONST: CXXMethod:{ResultType void}{TypedText baz}{LeftParen (}{RightParen )}{Informative const} (34)
Douglas Gregor6b5f4102010-08-26 16:36:48 +000054// 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
Douglas Gregor503fd9a2010-10-19 00:03:23 +000057// CHECK-VOLATILE: CXXMethod:{ResultType void}{TypedText babble}{LeftParen (}{RightParen )}{Informative const volatile} (35)
Douglas Gregor6b5f4102010-08-26 16:36:48 +000058// CHECK-VOLATILE-NOT: baz
Douglas Gregor503fd9a2010-10-19 00:03:23 +000059// CHECK-VOLATILE: CXXMethod:{ResultType void}{TypedText bingo}{LeftParen (}{RightParen )}{Informative volatile} (34)
Douglas Gregor6b5f4102010-08-26 16:36:48 +000060
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
Douglas Gregor503fd9a2010-10-19 00:03:23 +000063// 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)
Douglas Gregor6b5f4102010-08-26 16:36:48 +000067
68// RUN: c-index-test -code-completion-at=%s:33:1 %s | FileCheck -check-prefix=CHECK-IMPLICIT-CONST %s
Douglas Gregor503fd9a2010-10-19 00:03:23 +000069// CHECK-IMPLICIT-CONST: CXXMethod:{ResultType void}{TypedText babble}{LeftParen (}{RightParen )}{Informative const volatile} (35)
Douglas Gregor6b5f4102010-08-26 16:36:48 +000070// CHECK-IMPLICIT-CONST-NOT: bar
Douglas Gregor503fd9a2010-10-19 00:03:23 +000071// CHECK-IMPLICIT-CONST: CXXMethod:{ResultType void}{TypedText baz}{LeftParen (}{RightParen )}{Informative const} (34)
Douglas Gregor6b5f4102010-08-26 16:36:48 +000072// 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
Douglas Gregor503fd9a2010-10-19 00:03:23 +000076// CHECK-IMPLICIT-VOLATILE: CXXMethod:{ResultType void}{TypedText babble}{LeftParen (}{RightParen )}{Informative const volatile} (35)
Douglas Gregor6b5f4102010-08-26 16:36:48 +000077// CHECK-IMPLICIT-VOLATILE-NOT: baz
Douglas Gregor503fd9a2010-10-19 00:03:23 +000078// CHECK-IMPLICIT-VOLATILE: CXXMethod:{ResultType void}{TypedText bingo}{LeftParen (}{RightParen )}{Informative volatile} (34)
Douglas Gregor9862d9e2010-08-27 17:35:51 +000079
80// RUN: c-index-test -code-completion-at=%s:4:17 %s | FileCheck -check-prefix=CHECK-CVQUAL-AFTER %s
Douglas Gregor503fd9a2010-10-19 00:03:23 +000081// CHECK-CVQUAL-AFTER: NotImplemented:{TypedText const} (40)
82// CHECK-CVQUAL-AFTER: NotImplemented:{TypedText volatile} (40)
Douglas Gregor9862d9e2010-08-27 17:35:51 +000083
84// RUN: c-index-test -code-completion-at=%s:4:23 %s | FileCheck -check-prefix=CHECK-CVQUAL-AFTER2 %s
Douglas Gregor503fd9a2010-10-19 00:03:23 +000085// CHECK-CVQUAL-AFTER2-NOT: NotImplemented:{TypedText const} (40)
86// CHECK-CVQUAL-AFTER2: NotImplemented:{TypedText volatile} (40)