1f4a2713aSLionel Sambuc // Test is line- and column-sensitive. Run lines are below.
2f4a2713aSLionel Sambuc
3f4a2713aSLionel Sambuc struct X {
4f4a2713aSLionel Sambuc X();
5f4a2713aSLionel Sambuc X(int);
6f4a2713aSLionel Sambuc X(int, int);
7f4a2713aSLionel Sambuc X(const X&);
8f4a2713aSLionel Sambuc };
9f4a2713aSLionel Sambuc
getX(int value)10f4a2713aSLionel Sambuc X getX(int value) {
11f4a2713aSLionel Sambuc switch (value) {
12f4a2713aSLionel Sambuc case 1: return X(value);
13f4a2713aSLionel Sambuc case 2: return X(value, value);
14f4a2713aSLionel Sambuc case 3: return (X)value;
15f4a2713aSLionel Sambuc default: break;
16f4a2713aSLionel Sambuc }
17f4a2713aSLionel Sambuc return X();
18f4a2713aSLionel Sambuc }
19f4a2713aSLionel Sambuc
20f4a2713aSLionel Sambuc struct Y {
21f4a2713aSLionel Sambuc int member;
22f4a2713aSLionel Sambuc
23f4a2713aSLionel Sambuc X getX();
24f4a2713aSLionel Sambuc };
25f4a2713aSLionel Sambuc
getX()26f4a2713aSLionel Sambuc X Y::getX() {
27f4a2713aSLionel Sambuc return member;
28f4a2713aSLionel Sambuc }
29f4a2713aSLionel Sambuc
30f4a2713aSLionel Sambuc struct YDerived : Y {
getAnotherXYDerived31f4a2713aSLionel Sambuc X getAnotherX() { return member; }
32f4a2713aSLionel Sambuc };
33f4a2713aSLionel Sambuc
test()34f4a2713aSLionel Sambuc void test() {
35f4a2713aSLionel Sambuc X foo;
36f4a2713aSLionel Sambuc
37f4a2713aSLionel Sambuc try {
38f4a2713aSLionel Sambuc } catch (X e) {
39f4a2713aSLionel Sambuc X x;
40f4a2713aSLionel Sambuc }
41f4a2713aSLionel Sambuc
42f4a2713aSLionel Sambuc struct LocalS {
43f4a2713aSLionel Sambuc void meth() {
44f4a2713aSLionel Sambuc int x;
45f4a2713aSLionel Sambuc ++x;
46f4a2713aSLionel Sambuc }
47f4a2713aSLionel Sambuc };
48f4a2713aSLionel Sambuc }
49f4a2713aSLionel Sambuc
50f4a2713aSLionel Sambuc template <bool (*tfn)(X*)>
51f4a2713aSLionel Sambuc struct TS {
52f4a2713aSLionel Sambuc void foo();
53f4a2713aSLionel Sambuc };
54f4a2713aSLionel Sambuc
55f4a2713aSLionel Sambuc template <bool (*tfn)(X*)>
foo()56f4a2713aSLionel Sambuc void TS<tfn>::foo() {}
57f4a2713aSLionel Sambuc
58f4a2713aSLionel Sambuc template <typename T>
59f4a2713aSLionel Sambuc class TC {
60f4a2713aSLionel Sambuc void init();
61f4a2713aSLionel Sambuc };
62f4a2713aSLionel Sambuc
63f4a2713aSLionel Sambuc template<> void TC<char>::init();
64f4a2713aSLionel Sambuc
65f4a2713aSLionel Sambuc #define EXTERN_TEMPLATE(...) extern template __VA_ARGS__;
66f4a2713aSLionel Sambuc EXTERN_TEMPLATE(class TC<char>)
67f4a2713aSLionel Sambuc
68*0a6a1f1dSLionel Sambuc class A {
69*0a6a1f1dSLionel Sambuc A();
70*0a6a1f1dSLionel Sambuc virtual ~A();
71*0a6a1f1dSLionel Sambuc
72*0a6a1f1dSLionel Sambuc // Assignment operators
73*0a6a1f1dSLionel Sambuc A& operator=(const A&);
74*0a6a1f1dSLionel Sambuc A& operator=(A&&) noexcept;
75*0a6a1f1dSLionel Sambuc
76*0a6a1f1dSLionel Sambuc // Unary operators
77*0a6a1f1dSLionel Sambuc A operator+() const;
78*0a6a1f1dSLionel Sambuc A operator-() const;
79*0a6a1f1dSLionel Sambuc A operator~() const;
80*0a6a1f1dSLionel Sambuc A operator*() const;
81*0a6a1f1dSLionel Sambuc A operator&() const;
82*0a6a1f1dSLionel Sambuc bool operator!() const;
83*0a6a1f1dSLionel Sambuc
84*0a6a1f1dSLionel Sambuc // (pre-|post-) increment and decrement
85*0a6a1f1dSLionel Sambuc A& operator++();
86*0a6a1f1dSLionel Sambuc A& operator--();
87*0a6a1f1dSLionel Sambuc A operator++(int);
88*0a6a1f1dSLionel Sambuc A operator--(int);
89*0a6a1f1dSLionel Sambuc
90*0a6a1f1dSLionel Sambuc // Arithmetic operators
91*0a6a1f1dSLionel Sambuc A operator+(const A&) const;
92*0a6a1f1dSLionel Sambuc A operator-(const A&) const;
93*0a6a1f1dSLionel Sambuc A operator*(const A&) const;
94*0a6a1f1dSLionel Sambuc A operator/(const A&) const;
95*0a6a1f1dSLionel Sambuc A operator%(const A&) const;
96*0a6a1f1dSLionel Sambuc A operator&(const A&) const;
97*0a6a1f1dSLionel Sambuc A operator|(const A&) const;
98*0a6a1f1dSLionel Sambuc A operator^(const A&) const;
99*0a6a1f1dSLionel Sambuc
100*0a6a1f1dSLionel Sambuc A operator<<(const A&) const;
101*0a6a1f1dSLionel Sambuc A operator>>(const A&) const;
102*0a6a1f1dSLionel Sambuc
103*0a6a1f1dSLionel Sambuc // Arithmetic-assignment operators
104*0a6a1f1dSLionel Sambuc A& operator+=(const A&);
105*0a6a1f1dSLionel Sambuc A& operator-=(const A&);
106*0a6a1f1dSLionel Sambuc A& operator*=(const A&);
107*0a6a1f1dSLionel Sambuc A& operator/=(const A&);
108*0a6a1f1dSLionel Sambuc A& operator%=(const A&);
109*0a6a1f1dSLionel Sambuc A& operator&=(const A&);
110*0a6a1f1dSLionel Sambuc A& operator|=(const A&);
111*0a6a1f1dSLionel Sambuc A& operator^=(const A&);
112*0a6a1f1dSLionel Sambuc
113*0a6a1f1dSLionel Sambuc A& operator<<=(const A&);
114*0a6a1f1dSLionel Sambuc A& operator>>=(const A&);
115*0a6a1f1dSLionel Sambuc
116*0a6a1f1dSLionel Sambuc // Logical operators
117*0a6a1f1dSLionel Sambuc bool operator<(const A&) const;
118*0a6a1f1dSLionel Sambuc bool operator>(const A&) const;
119*0a6a1f1dSLionel Sambuc
120*0a6a1f1dSLionel Sambuc bool operator&&(const A&) const;
121*0a6a1f1dSLionel Sambuc bool operator||(const A&) const;
122*0a6a1f1dSLionel Sambuc bool operator<=(const A&) const;
123*0a6a1f1dSLionel Sambuc bool operator>=(const A&) const;
124*0a6a1f1dSLionel Sambuc bool operator!=(const A&) const;
125*0a6a1f1dSLionel Sambuc bool operator==(const A&) const;
126*0a6a1f1dSLionel Sambuc
127*0a6a1f1dSLionel Sambuc // Special operators
128*0a6a1f1dSLionel Sambuc A& operator[](unsigned long long);
129*0a6a1f1dSLionel Sambuc A* operator->();
130*0a6a1f1dSLionel Sambuc A operator()(unsigned, int) const;
131*0a6a1f1dSLionel Sambuc
132*0a6a1f1dSLionel Sambuc explicit operator bool() const;
133*0a6a1f1dSLionel Sambuc };
134*0a6a1f1dSLionel Sambuc
135*0a6a1f1dSLionel Sambuc struct TestColl {
136*0a6a1f1dSLionel Sambuc int* begin();
137*0a6a1f1dSLionel Sambuc int* end();
138*0a6a1f1dSLionel Sambuc };
139*0a6a1f1dSLionel Sambuc
test(TestColl coll)140*0a6a1f1dSLionel Sambuc void test(TestColl coll) {
141*0a6a1f1dSLionel Sambuc for (auto lv : coll) {
142*0a6a1f1dSLionel Sambuc (void)lv;
143*0a6a1f1dSLionel Sambuc }
144*0a6a1f1dSLionel Sambuc }
145*0a6a1f1dSLionel Sambuc
146f4a2713aSLionel Sambuc // RUN: c-index-test -cursor-at=%s:6:4 %s | FileCheck -check-prefix=CHECK-COMPLETION-1 %s
147f4a2713aSLionel Sambuc // CHECK-COMPLETION-1: CXXConstructor=X:6:3
148f4a2713aSLionel Sambuc // CHECK-COMPLETION-1-NEXT: Completion string: {TypedText X}{LeftParen (}{Placeholder int}{Comma , }{Placeholder int}{RightParen )}
149f4a2713aSLionel Sambuc
150f4a2713aSLionel Sambuc // RUN: c-index-test -cursor-at=%s:31:16 %s | FileCheck -check-prefix=CHECK-COMPLETION-2 %s
151f4a2713aSLionel Sambuc // CHECK-COMPLETION-2: CXXMethod=getAnotherX:31:5 (Definition)
152f4a2713aSLionel Sambuc // CHECK-COMPLETION-2-NEXT: Completion string: {ResultType X}{TypedText getAnotherX}{LeftParen (}{RightParen )}
153f4a2713aSLionel Sambuc
154f4a2713aSLionel Sambuc // RUN: c-index-test -cursor-at=%s:12:20 %s | FileCheck -check-prefix=CHECK-VALUE-REF %s
155f4a2713aSLionel Sambuc // RUN: c-index-test -cursor-at=%s:13:21 %s | FileCheck -check-prefix=CHECK-VALUE-REF %s
156f4a2713aSLionel Sambuc // RUN: c-index-test -cursor-at=%s:13:28 %s | FileCheck -check-prefix=CHECK-VALUE-REF %s
157f4a2713aSLionel Sambuc // RUN: c-index-test -cursor-at=%s:14:23 %s | FileCheck -check-prefix=CHECK-VALUE-REF %s
158f4a2713aSLionel Sambuc // CHECK-VALUE-REF: DeclRefExpr=value:10:12
159f4a2713aSLionel Sambuc
160f4a2713aSLionel Sambuc // RUN: c-index-test -cursor-at=%s:12:18 %s | FileCheck -check-prefix=CHECK-CONSTRUCTOR1 %s
161f4a2713aSLionel Sambuc // RUN: c-index-test -cursor-at=%s:13:18 %s | FileCheck -check-prefix=CHECK-CONSTRUCTOR2 %s
162f4a2713aSLionel Sambuc // RUN: c-index-test -cursor-at=%s:14:19 %s | FileCheck -check-prefix=CHECK-CONSTRUCTOR1 %s
163f4a2713aSLionel Sambuc // RUN: c-index-test -cursor-at=%s:17:10 %s | FileCheck -check-prefix=CHECK-CONSTRUCTOR3 %s
164f4a2713aSLionel Sambuc // CHECK-TYPE-REF: TypeRef=struct X:3:8
165f4a2713aSLionel Sambuc // CHECK-CONSTRUCTOR1: CallExpr=X:5:3
166f4a2713aSLionel Sambuc // CHECK-CONSTRUCTOR2: CallExpr=X:6:3
167f4a2713aSLionel Sambuc // CHECK-CONSTRUCTOR3: CallExpr=X:4:3
168f4a2713aSLionel Sambuc
169f4a2713aSLionel Sambuc // RUN: c-index-test -cursor-at=%s:23:3 %s | FileCheck -check-prefix=CHECK-RETTYPE %s
170f4a2713aSLionel Sambuc // RUN: c-index-test -cursor-at=%s:26:1 %s | FileCheck -check-prefix=CHECK-RETTYPE %s
171f4a2713aSLionel Sambuc // CHECK-RETTYPE: TypeRef=struct X:3:8
172f4a2713aSLionel Sambuc
173f4a2713aSLionel Sambuc // RUN: c-index-test -cursor-at=%s:23:7 %s | FileCheck -check-prefix=CHECK-MEMFUNC-DECL %s
174f4a2713aSLionel Sambuc // CHECK-MEMFUNC-DECL: CXXMethod=getX:23:5
175f4a2713aSLionel Sambuc // RUN: c-index-test -cursor-at=%s:26:7 %s | FileCheck -check-prefix=CHECK-MEMFUNC-DEF %s
176f4a2713aSLionel Sambuc // CHECK-MEMFUNC-DEF: CXXMethod=getX:26:6
177f4a2713aSLionel Sambuc
178f4a2713aSLionel Sambuc // RUN: c-index-test -cursor-at=%s:26:3 %s | FileCheck -check-prefix=CHECK-TYPEREF-Y %s
179f4a2713aSLionel Sambuc // CHECK-TYPEREF-Y: TypeRef=struct Y:20:8
180f4a2713aSLionel Sambuc
181f4a2713aSLionel Sambuc // RUN: c-index-test -cursor-at=%s:27:10 %s | FileCheck -check-prefix=CHECK-IMPLICIT-MEMREF %s
182f4a2713aSLionel Sambuc // RUN: c-index-test -cursor-at=%s:31:28 %s | FileCheck -check-prefix=CHECK-IMPLICIT-MEMREF %s
183f4a2713aSLionel Sambuc // CHECK-IMPLICIT-MEMREF: MemberRefExpr=member:21:7
184f4a2713aSLionel Sambuc
185f4a2713aSLionel Sambuc // RUN: c-index-test -cursor-at=%s:35:5 %s | FileCheck -check-prefix=CHECK-DECL %s
186f4a2713aSLionel Sambuc // CHECK-DECL: VarDecl=foo:35:5
187f4a2713aSLionel Sambuc
188f4a2713aSLionel Sambuc // RUN: c-index-test -cursor-at=%s:21:3 %s | FileCheck -check-prefix=CHECK-MEMBER %s
189f4a2713aSLionel Sambuc // CHECK-MEMBER: FieldDecl=member:21:7 (Definition)
190f4a2713aSLionel Sambuc // CHECK-MEMBER-NEXT: Completion string: {ResultType int}{TypedText member}
191f4a2713aSLionel Sambuc
192f4a2713aSLionel Sambuc // RUN: c-index-test -cursor-at=%s:38:12 -cursor-at=%s:39:5 %s | FileCheck -check-prefix=CHECK-CXXCATCH %s
193f4a2713aSLionel Sambuc // CHECK-CXXCATCH: TypeRef=struct X:3:8
194f4a2713aSLionel Sambuc // CHECK-CXXCATCH-NEXT: TypeRef=struct X:3:8
195f4a2713aSLionel Sambuc
196f4a2713aSLionel Sambuc // RUN: c-index-test -test-load-source-usrs local %s | FileCheck -check-prefix=CHECK-USR %s
197f4a2713aSLionel Sambuc // CHECK-USR: get-cursor.cpp c:get-cursor.cpp@472@F@test#@e Extent=[38:12 - 38:15]
198f4a2713aSLionel Sambuc // CHECK-USR: get-cursor.cpp c:get-cursor.cpp@483@F@test#@x Extent=[39:5 - 39:8]
199f4a2713aSLionel Sambuc
200f4a2713aSLionel Sambuc // RUN: c-index-test -cursor-at=%s:45:9 %s | FileCheck -check-prefix=CHECK-LOCALCLASS %s
201f4a2713aSLionel Sambuc // CHECK-LOCALCLASS: 45:9 DeclRefExpr=x:44:11 Extent=[45:9 - 45:10] Spelling=x ([45:9 - 45:10])
202f4a2713aSLionel Sambuc
203f4a2713aSLionel Sambuc // RUN: c-index-test -cursor-at=%s:50:23 -cursor-at=%s:55:23 %s | FileCheck -check-prefix=CHECK-TEMPLPARAM %s
204f4a2713aSLionel Sambuc // CHECK-TEMPLPARAM: 50:23 TypeRef=struct X:3:8 Extent=[50:23 - 50:24] Spelling=struct X ([50:23 - 50:24])
205f4a2713aSLionel Sambuc // CHECK-TEMPLPARAM: 55:23 TypeRef=struct X:3:8 Extent=[55:23 - 55:24] Spelling=struct X ([55:23 - 55:24])
206f4a2713aSLionel Sambuc
207f4a2713aSLionel Sambuc // RUN: c-index-test -cursor-at=%s:66:23 %s | FileCheck -check-prefix=CHECK-TEMPLSPEC %s
208f4a2713aSLionel Sambuc // CHECK-TEMPLSPEC: 66:23 ClassDecl=TC:66:23 (Definition) [Specialization of TC:59:7] Extent=[66:1 - 66:31] Spelling=TC ([66:23 - 66:25])
209*0a6a1f1dSLionel Sambuc
210*0a6a1f1dSLionel Sambuc // RUN: c-index-test -cursor-at=%s:69:3 -cursor-at=%s:70:11 -cursor-at=%s:73:6 -cursor-at=%s:74:6 -cursor-at=%s:77:8 -cursor-at=%s:78:8 -cursor-at=%s:79:8 -cursor-at=%s:80:8 -cursor-at=%s:81:8 -cursor-at=%s:82:8 -cursor-at=%s:85:6 -cursor-at=%s:86:6 -cursor-at=%s:87:6 -cursor-at=%s:88:6 -cursor-at=%s:91:5 -cursor-at=%s:92:5 -cursor-at=%s:93:5 -cursor-at=%s:94:5 -cursor-at=%s:95:5 -cursor-at=%s:96:5 -cursor-at=%s:97:5 -cursor-at=%s:98:5 -cursor-at=%s:100:5 -cursor-at=%s:101:5 -cursor-at=%s:104:6 -cursor-at=%s:105:6 -cursor-at=%s:106:6 -cursor-at=%s:107:6 -cursor-at=%s:108:6 -cursor-at=%s:109:6 -cursor-at=%s:110:6 -cursor-at=%s:111:6 -cursor-at=%s:113:6 -cursor-at=%s:114:6 -cursor-at=%s:117:8 -cursor-at=%s:118:8 -cursor-at=%s:120:8 -cursor-at=%s:121:8 -cursor-at=%s:122:8 -cursor-at=%s:123:8 -cursor-at=%s:124:8 -cursor-at=%s:125:8 -cursor-at=%s:128:6 -cursor-at=%s:129:6 -cursor-at=%s:130:6 -cursor-at=%s:132:3 -std=c++11 %s | FileCheck -check-prefix=CHECK-SPELLING %s
211*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 69:3 CXXConstructor=A:69:3 Extent=[69:3 - 69:6] Spelling=A ([69:3 - 69:4])
212*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 70:11 CXXDestructor=~A:70:11 (virtual) Extent=[70:3 - 70:15] Spelling=~A ([70:11 - 70:13])
213*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 73:6 CXXMethod=operator=:73:6 Extent=[73:3 - 73:25] Spelling=operator= ([73:6 - 73:15])
214*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 74:6 CXXMethod=operator=:74:6 Extent=[74:3 - 74:29] Spelling=operator= ([74:6 - 74:15])
215*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 77:8 CXXMethod=operator+:77:8 (const) Extent=[77:3 - 77:25] Spelling=operator+ ([77:8 - 77:17])
216*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 78:8 CXXMethod=operator-:78:8 (const) Extent=[78:3 - 78:25] Spelling=operator- ([78:8 - 78:17])
217*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 79:8 CXXMethod=operator~:79:8 (const) Extent=[79:3 - 79:25] Spelling=operator~ ([79:8 - 79:17])
218*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 80:8 CXXMethod=operator*:80:8 (const) Extent=[80:3 - 80:25] Spelling=operator* ([80:8 - 80:17])
219*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 81:8 CXXMethod=operator&:81:8 (const) Extent=[81:3 - 81:25] Spelling=operator& ([81:8 - 81:17])
220*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 82:8 CXXMethod=operator!:82:8 (const) Extent=[82:3 - 82:25] Spelling=operator! ([82:8 - 82:17])
221*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 85:6 CXXMethod=operator++:85:6 Extent=[85:3 - 85:18] Spelling=operator++ ([85:6 - 85:16])
222*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 86:6 CXXMethod=operator--:86:6 Extent=[86:3 - 86:18] Spelling=operator-- ([86:6 - 86:16])
223*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 87:6 CXXMethod=operator++:87:6 Extent=[87:3 - 87:21] Spelling=operator++ ([87:6 - 87:16])
224*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 88:6 CXXMethod=operator--:88:6 Extent=[88:3 - 88:21] Spelling=operator-- ([88:6 - 88:16])
225*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 91:5 CXXMethod=operator+:91:5 (const) Extent=[91:3 - 91:30] Spelling=operator+ ([91:5 - 91:14])
226*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 92:5 CXXMethod=operator-:92:5 (const) Extent=[92:3 - 92:30] Spelling=operator- ([92:5 - 92:14])
227*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 93:5 CXXMethod=operator*:93:5 (const) Extent=[93:3 - 93:30] Spelling=operator* ([93:5 - 93:14])
228*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 94:5 CXXMethod=operator/:94:5 (const) Extent=[94:3 - 94:30] Spelling=operator/ ([94:5 - 94:14])
229*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 95:5 CXXMethod=operator%:95:5 (const) Extent=[95:3 - 95:30] Spelling=operator% ([95:5 - 95:14])
230*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 96:5 CXXMethod=operator&:96:5 (const) Extent=[96:3 - 96:30] Spelling=operator& ([96:5 - 96:14])
231*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 97:5 CXXMethod=operator|:97:5 (const) Extent=[97:3 - 97:30] Spelling=operator| ([97:5 - 97:14])
232*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 98:5 CXXMethod=operator^:98:5 (const) Extent=[98:3 - 98:30] Spelling=operator^ ([98:5 - 98:14])
233*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 100:5 CXXMethod=operator<<:100:5 (const) Extent=[100:3 - 100:31] Spelling=operator<< ([100:5 - 100:15])
234*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 101:5 CXXMethod=operator>>:101:5 (const) Extent=[101:3 - 101:31] Spelling=operator>> ([101:5 - 101:15])
235*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 104:6 CXXMethod=operator+=:104:6 Extent=[104:3 - 104:26] Spelling=operator+= ([104:6 - 104:16])
236*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 105:6 CXXMethod=operator-=:105:6 Extent=[105:3 - 105:26] Spelling=operator-= ([105:6 - 105:16])
237*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 106:6 CXXMethod=operator*=:106:6 Extent=[106:3 - 106:26] Spelling=operator*= ([106:6 - 106:16])
238*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 107:6 CXXMethod=operator/=:107:6 Extent=[107:3 - 107:26] Spelling=operator/= ([107:6 - 107:16])
239*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 108:6 CXXMethod=operator%=:108:6 Extent=[108:3 - 108:26] Spelling=operator%= ([108:6 - 108:16])
240*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 109:6 CXXMethod=operator&=:109:6 Extent=[109:3 - 109:26] Spelling=operator&= ([109:6 - 109:16])
241*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 110:6 CXXMethod=operator|=:110:6 Extent=[110:3 - 110:26] Spelling=operator|= ([110:6 - 110:16])
242*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 111:6 CXXMethod=operator^=:111:6 Extent=[111:3 - 111:26] Spelling=operator^= ([111:6 - 111:16])
243*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 113:6 CXXMethod=operator<<=:113:6 Extent=[113:3 - 113:27] Spelling=operator<<= ([113:6 - 113:17])
244*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 114:6 CXXMethod=operator>>=:114:6 Extent=[114:3 - 114:27] Spelling=operator>>= ([114:6 - 114:17])
245*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 117:8 CXXMethod=operator<:117:8 (const) Extent=[117:3 - 117:33] Spelling=operator< ([117:8 - 117:17])
246*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 118:8 CXXMethod=operator>:118:8 (const) Extent=[118:3 - 118:33] Spelling=operator> ([118:8 - 118:17])
247*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 120:8 CXXMethod=operator&&:120:8 (const) Extent=[120:3 - 120:34] Spelling=operator&& ([120:8 - 120:18])
248*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 121:8 CXXMethod=operator||:121:8 (const) Extent=[121:3 - 121:34] Spelling=operator|| ([121:8 - 121:18])
249*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 122:8 CXXMethod=operator<=:122:8 (const) Extent=[122:3 - 122:34] Spelling=operator<= ([122:8 - 122:18])
250*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 123:8 CXXMethod=operator>=:123:8 (const) Extent=[123:3 - 123:34] Spelling=operator>= ([123:8 - 123:18])
251*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 124:8 CXXMethod=operator!=:124:8 (const) Extent=[124:3 - 124:34] Spelling=operator!= ([124:8 - 124:18])
252*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 125:8 CXXMethod=operator==:125:8 (const) Extent=[125:3 - 125:34] Spelling=operator== ([125:8 - 125:18])
253*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 128:6 CXXMethod=operator[]:128:6 Extent=[128:3 - 128:36] Spelling=operator[] ([128:6 - 128:16])
254*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 129:6 CXXMethod=operator->:129:6 Extent=[129:3 - 129:18] Spelling=operator-> ([129:6 - 129:16])
255*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 130:6 CXXMethod=operator():130:6 (const) Extent=[130:3 - 130:37] Spelling=operator() ([130:6 - 130:16])
256*0a6a1f1dSLionel Sambuc // CHECK-SPELLING: 132:12 CXXConversion=operator bool:132:12 (const) Extent=[132:3 - 132:33] Spelling=operator bool ([132:12 - 132:25])
257*0a6a1f1dSLionel Sambuc
258*0a6a1f1dSLionel Sambuc // RUN: c-index-test -cursor-at=%s:141:13 -cursor-at=%s:141:18 -cursor-at=%s:142:11 -std=c++11 %s | FileCheck -check-prefix=CHECK-FORRANGE %s
259*0a6a1f1dSLionel Sambuc // CHECK-FORRANGE: 141:13 VarDecl=lv:141:13 (Definition) Extent=[141:8 - 141:17] Spelling=lv ([141:13 - 141:15])
260*0a6a1f1dSLionel Sambuc // CHECK-FORRANGE: 141:18 DeclRefExpr=coll:140:20 Extent=[141:18 - 141:22] Spelling=coll ([141:18 - 141:22])
261*0a6a1f1dSLionel Sambuc // CHECK-FORRANGE: 142:11 DeclRefExpr=lv:141:13 Extent=[142:11 - 142:13] Spelling=lv ([142:11 - 142:13])
262