Lines Matching refs:Tokens

48   auto Tokens = annotate("auto x = [](const decltype(x) &ptr) {};");  in TEST_F()  local
49 EXPECT_EQ(Tokens.size(), 18u) << Tokens; in TEST_F()
50 EXPECT_TOKEN(Tokens[7], tok::kw_decltype, TT_Unknown); in TEST_F()
51 EXPECT_TOKEN(Tokens[8], tok::l_paren, TT_TypeDeclarationParen); in TEST_F()
52 EXPECT_TOKEN(Tokens[9], tok::identifier, TT_Unknown); in TEST_F()
53 EXPECT_TOKEN(Tokens[10], tok::r_paren, TT_TypeDeclarationParen); in TEST_F()
54 EXPECT_TOKEN(Tokens[11], tok::amp, TT_PointerOrReference); in TEST_F()
56 Tokens = annotate("auto x = [](const decltype(x) *ptr) {};"); in TEST_F()
57 EXPECT_EQ(Tokens.size(), 18u) << Tokens; in TEST_F()
58 EXPECT_TOKEN(Tokens[10], tok::r_paren, TT_TypeDeclarationParen); in TEST_F()
59 EXPECT_TOKEN(Tokens[11], tok::star, TT_PointerOrReference); in TEST_F()
61 Tokens = annotate("#define lambda [](const decltype(x) &ptr) {}"); in TEST_F()
62 EXPECT_EQ(Tokens.size(), 17u) << Tokens; in TEST_F()
63 EXPECT_TOKEN(Tokens[7], tok::kw_decltype, TT_Unknown); in TEST_F()
64 EXPECT_TOKEN(Tokens[8], tok::l_paren, TT_TypeDeclarationParen); in TEST_F()
65 EXPECT_TOKEN(Tokens[9], tok::identifier, TT_Unknown); in TEST_F()
66 EXPECT_TOKEN(Tokens[10], tok::r_paren, TT_TypeDeclarationParen); in TEST_F()
67 EXPECT_TOKEN(Tokens[11], tok::amp, TT_PointerOrReference); in TEST_F()
69 Tokens = annotate("#define lambda [](const decltype(x) *ptr) {}"); in TEST_F()
70 EXPECT_EQ(Tokens.size(), 17u) << Tokens; in TEST_F()
71 EXPECT_TOKEN(Tokens[10], tok::r_paren, TT_TypeDeclarationParen); in TEST_F()
72 EXPECT_TOKEN(Tokens[11], tok::star, TT_PointerOrReference); in TEST_F()
74 Tokens = annotate("void f() {\n" in TEST_F()
78 EXPECT_EQ(Tokens.size(), 21u) << Tokens; in TEST_F()
79 EXPECT_TOKEN(Tokens[10], tok::ampamp, TT_BinaryOperator); in TEST_F()
80 EXPECT_TOKEN(Tokens[11], tok::star, TT_UnaryOperator); in TEST_F()
82 Tokens = annotate("case *x:"); in TEST_F()
83 EXPECT_EQ(Tokens.size(), 5u) << Tokens; in TEST_F()
84 EXPECT_TOKEN(Tokens[1], tok::star, TT_UnaryOperator); in TEST_F()
85 Tokens = annotate("case &x:"); in TEST_F()
86 EXPECT_EQ(Tokens.size(), 5u) << Tokens; in TEST_F()
87 EXPECT_TOKEN(Tokens[1], tok::amp, TT_UnaryOperator); in TEST_F()
89 Tokens = annotate("bool b = 3 == int{3} && true;\n"); in TEST_F()
90 EXPECT_EQ(Tokens.size(), 13u) << Tokens; in TEST_F()
91 EXPECT_TOKEN(Tokens[9], tok::ampamp, TT_BinaryOperator); in TEST_F()
93 Tokens = annotate("struct {\n" in TEST_F()
95 EXPECT_EQ(Tokens.size(), 7u) << Tokens; in TEST_F()
96 EXPECT_TOKEN(Tokens[3], tok::star, TT_PointerOrReference); in TEST_F()
97 Tokens = annotate("union {\n" in TEST_F()
99 EXPECT_EQ(Tokens.size(), 7u) << Tokens; in TEST_F()
100 EXPECT_TOKEN(Tokens[3], tok::star, TT_PointerOrReference); in TEST_F()
101 Tokens = annotate("class {\n" in TEST_F()
103 EXPECT_EQ(Tokens.size(), 7u) << Tokens; in TEST_F()
104 EXPECT_TOKEN(Tokens[3], tok::star, TT_PointerOrReference); in TEST_F()
106 Tokens = annotate("struct {\n" in TEST_F()
108 EXPECT_EQ(Tokens.size(), 10u) << Tokens; in TEST_F()
109 EXPECT_TOKEN(Tokens[3], tok::ampamp, TT_PointerOrReference); in TEST_F()
110 Tokens = annotate("union {\n" in TEST_F()
112 EXPECT_EQ(Tokens.size(), 10u) << Tokens; in TEST_F()
113 EXPECT_TOKEN(Tokens[3], tok::ampamp, TT_PointerOrReference); in TEST_F()
114 Tokens = annotate("class {\n" in TEST_F()
116 EXPECT_EQ(Tokens.size(), 10u) << Tokens; in TEST_F()
117 EXPECT_TOKEN(Tokens[3], tok::ampamp, TT_PointerOrReference); in TEST_F()
118 Tokens = annotate("int i = int{42} * 2;"); in TEST_F()
119 EXPECT_EQ(Tokens.size(), 11u) << Tokens; in TEST_F()
120 EXPECT_TOKEN(Tokens[7], tok::star, TT_BinaryOperator); in TEST_F()
124 auto Tokens = annotate("x - 0"); in TEST_F() local
125 ASSERT_EQ(Tokens.size(), 4u) << Tokens; in TEST_F()
126 EXPECT_TOKEN(Tokens[1], tok::minus, TT_BinaryOperator); in TEST_F()
127 Tokens = annotate("0 + 0"); in TEST_F()
128 ASSERT_EQ(Tokens.size(), 4u) << Tokens; in TEST_F()
129 EXPECT_TOKEN(Tokens[1], tok::plus, TT_BinaryOperator); in TEST_F()
130 Tokens = annotate("x + +0"); in TEST_F()
131 ASSERT_EQ(Tokens.size(), 5u) << Tokens; in TEST_F()
132 EXPECT_TOKEN(Tokens[2], tok::plus, TT_UnaryOperator); in TEST_F()
133 Tokens = annotate("x ? -0 : +0"); in TEST_F()
134 ASSERT_EQ(Tokens.size(), 8u) << Tokens; in TEST_F()
135 EXPECT_TOKEN(Tokens[2], tok::minus, TT_UnaryOperator); in TEST_F()
136 EXPECT_TOKEN(Tokens[5], tok::plus, TT_UnaryOperator); in TEST_F()
137 Tokens = annotate("(-0)"); in TEST_F()
138 ASSERT_EQ(Tokens.size(), 5u) << Tokens; in TEST_F()
139 EXPECT_TOKEN(Tokens[1], tok::minus, TT_UnaryOperator); in TEST_F()
140 Tokens = annotate("0, -0"); in TEST_F()
141 ASSERT_EQ(Tokens.size(), 5u) << Tokens; in TEST_F()
142 EXPECT_TOKEN(Tokens[2], tok::minus, TT_UnaryOperator); in TEST_F()
143 Tokens = annotate("for (; -1;) {\n}"); in TEST_F()
144 ASSERT_EQ(Tokens.size(), 10u) << Tokens; in TEST_F()
145 EXPECT_TOKEN(Tokens[3], tok::minus, TT_UnaryOperator); in TEST_F()
146 Tokens = annotate("x = -1;"); in TEST_F()
147 ASSERT_EQ(Tokens.size(), 6u) << Tokens; in TEST_F()
148 EXPECT_TOKEN(Tokens[2], tok::minus, TT_UnaryOperator); in TEST_F()
149 Tokens = annotate("x[-1]"); in TEST_F()
150 ASSERT_EQ(Tokens.size(), 6u) << Tokens; in TEST_F()
151 EXPECT_TOKEN(Tokens[2], tok::minus, TT_UnaryOperator); in TEST_F()
152 Tokens = annotate("x = {-1};"); in TEST_F()
153 ASSERT_EQ(Tokens.size(), 8u) << Tokens; in TEST_F()
154 EXPECT_TOKEN(Tokens[3], tok::minus, TT_UnaryOperator); in TEST_F()
155 Tokens = annotate("case -x:"); in TEST_F()
156 ASSERT_EQ(Tokens.size(), 5u) << Tokens; in TEST_F()
157 EXPECT_TOKEN(Tokens[1], tok::minus, TT_UnaryOperator); in TEST_F()
158 Tokens = annotate("co_await -x;"); in TEST_F()
159 ASSERT_EQ(Tokens.size(), 5u) << Tokens; in TEST_F()
160 EXPECT_TOKEN(Tokens[1], tok::minus, TT_UnaryOperator); in TEST_F()
161 Tokens = annotate("co_return -x;"); in TEST_F()
162 ASSERT_EQ(Tokens.size(), 5u) << Tokens; in TEST_F()
163 EXPECT_TOKEN(Tokens[1], tok::minus, TT_UnaryOperator); in TEST_F()
164 Tokens = annotate("co_yield -x;"); in TEST_F()
165 ASSERT_EQ(Tokens.size(), 5u) << Tokens; in TEST_F()
166 EXPECT_TOKEN(Tokens[1], tok::minus, TT_UnaryOperator); in TEST_F()
167 Tokens = annotate("delete -x;"); in TEST_F()
168 ASSERT_EQ(Tokens.size(), 5u) << Tokens; in TEST_F()
169 EXPECT_TOKEN(Tokens[1], tok::minus, TT_UnaryOperator); in TEST_F()
170 Tokens = annotate("return -x;"); in TEST_F()
171 ASSERT_EQ(Tokens.size(), 5u) << Tokens; in TEST_F()
172 EXPECT_TOKEN(Tokens[1], tok::minus, TT_UnaryOperator); in TEST_F()
173 Tokens = annotate("throw -x;"); in TEST_F()
174 ASSERT_EQ(Tokens.size(), 5u) << Tokens; in TEST_F()
175 EXPECT_TOKEN(Tokens[1], tok::minus, TT_UnaryOperator); in TEST_F()
176 Tokens = annotate("sizeof -x"); in TEST_F()
177 ASSERT_EQ(Tokens.size(), 4u) << Tokens; in TEST_F()
178 EXPECT_TOKEN(Tokens[1], tok::minus, TT_UnaryOperator); in TEST_F()
179 Tokens = annotate("co_await +x;"); in TEST_F()
180 ASSERT_EQ(Tokens.size(), 5u) << Tokens; in TEST_F()
181 EXPECT_TOKEN(Tokens[1], tok::plus, TT_UnaryOperator); in TEST_F()
182 Tokens = annotate("co_return +x;"); in TEST_F()
183 ASSERT_EQ(Tokens.size(), 5u) << Tokens; in TEST_F()
184 EXPECT_TOKEN(Tokens[1], tok::plus, TT_UnaryOperator); in TEST_F()
185 Tokens = annotate("co_yield +x;"); in TEST_F()
186 ASSERT_EQ(Tokens.size(), 5u) << Tokens; in TEST_F()
187 EXPECT_TOKEN(Tokens[1], tok::plus, TT_UnaryOperator); in TEST_F()
188 Tokens = annotate("delete +x;"); in TEST_F()
189 ASSERT_EQ(Tokens.size(), 5u) << Tokens; in TEST_F()
190 EXPECT_TOKEN(Tokens[1], tok::plus, TT_UnaryOperator); in TEST_F()
191 Tokens = annotate("return +x;"); in TEST_F()
192 ASSERT_EQ(Tokens.size(), 5u) << Tokens; in TEST_F()
193 EXPECT_TOKEN(Tokens[1], tok::plus, TT_UnaryOperator); in TEST_F()
194 Tokens = annotate("throw +x;"); in TEST_F()
195 ASSERT_EQ(Tokens.size(), 5u) << Tokens; in TEST_F()
196 EXPECT_TOKEN(Tokens[1], tok::plus, TT_UnaryOperator); in TEST_F()
197 Tokens = annotate("sizeof +x"); in TEST_F()
198 ASSERT_EQ(Tokens.size(), 4u) << Tokens; in TEST_F()
199 EXPECT_TOKEN(Tokens[1], tok::plus, TT_UnaryOperator); in TEST_F()
200 Tokens = annotate("(int)-x"); in TEST_F()
201 ASSERT_EQ(Tokens.size(), 6u) << Tokens; in TEST_F()
202 EXPECT_TOKEN(Tokens[3], tok::minus, TT_UnaryOperator); in TEST_F()
203 Tokens = annotate("(-x)"); in TEST_F()
204 ASSERT_EQ(Tokens.size(), 5u) << Tokens; in TEST_F()
205 EXPECT_TOKEN(Tokens[1], tok::minus, TT_UnaryOperator); in TEST_F()
206 Tokens = annotate("!+x"); in TEST_F()
207 ASSERT_EQ(Tokens.size(), 4u) << Tokens; in TEST_F()
208 EXPECT_TOKEN(Tokens[0], tok::exclaim, TT_UnaryOperator); in TEST_F()
209 EXPECT_TOKEN(Tokens[1], tok::plus, TT_UnaryOperator); in TEST_F()
213 auto Tokens = annotate("class C {};"); in TEST_F() local
214 EXPECT_EQ(Tokens.size(), 6u) << Tokens; in TEST_F()
215 EXPECT_TOKEN(Tokens[2], tok::l_brace, TT_ClassLBrace); in TEST_F()
217 Tokens = annotate("const class C {} c;"); in TEST_F()
218 EXPECT_EQ(Tokens.size(), 8u) << Tokens; in TEST_F()
219 EXPECT_TOKEN(Tokens[3], tok::l_brace, TT_ClassLBrace); in TEST_F()
221 Tokens = annotate("const class {} c;"); in TEST_F()
222 EXPECT_EQ(Tokens.size(), 7u) << Tokens; in TEST_F()
223 EXPECT_TOKEN(Tokens[2], tok::l_brace, TT_ClassLBrace); in TEST_F()
227 auto Tokens = annotate("struct S {};"); in TEST_F() local
228 EXPECT_EQ(Tokens.size(), 6u) << Tokens; in TEST_F()
229 EXPECT_TOKEN(Tokens[2], tok::l_brace, TT_StructLBrace); in TEST_F()
233 auto Tokens = annotate("union U {};"); in TEST_F() local
234 EXPECT_EQ(Tokens.size(), 6u) << Tokens; in TEST_F()
235 EXPECT_TOKEN(Tokens[2], tok::l_brace, TT_UnionLBrace); in TEST_F()
237 Tokens = annotate("union U { void f() { return; } };"); in TEST_F()
238 EXPECT_EQ(Tokens.size(), 14u) << Tokens; in TEST_F()
239 EXPECT_TOKEN(Tokens[2], tok::l_brace, TT_UnionLBrace); in TEST_F()
240 EXPECT_TOKEN(Tokens[7], tok::l_brace, TT_FunctionLBrace); in TEST_F()
244 auto Tokens = annotate("enum E {};"); in TEST_F() local
245 EXPECT_EQ(Tokens.size(), 6u) << Tokens; in TEST_F()
246 EXPECT_TOKEN(Tokens[2], tok::l_brace, TT_EnumLBrace); in TEST_F()
250 auto Tokens = annotate("auto operator<=>(const T &) const & = default;"); in TEST_F() local
251 EXPECT_EQ(Tokens.size(), 14u) << Tokens; in TEST_F()
252 EXPECT_TOKEN(Tokens[9], tok::amp, TT_PointerOrReference); in TEST_F()
254 Tokens = annotate("template <typename T> void F(T) && = delete;"); in TEST_F()
255 EXPECT_EQ(Tokens.size(), 15u) << Tokens; in TEST_F()
256 EXPECT_TOKEN(Tokens[10], tok::ampamp, TT_PointerOrReference); in TEST_F()
260 auto Tokens = in TEST_F() local
262 EXPECT_EQ(Tokens.size(), 15u) << Tokens; in TEST_F()
263 EXPECT_TOKEN(Tokens[8], tok::ampamp, TT_BinaryOperator); in TEST_F()
267 auto Tokens = in TEST_F() local
270 EXPECT_EQ(Tokens.size(), 20u) << Tokens; in TEST_F()
271 EXPECT_TOKEN(Tokens[13], tok::ampamp, TT_BinaryOperator); in TEST_F()
275 auto Tokens = annotate("#define BEGIN NS {"); in TEST_F() local
276 EXPECT_EQ(Tokens.size(), 6u) << Tokens; in TEST_F()
277 EXPECT_TOKEN(Tokens[4], tok::l_brace, TT_Unknown); in TEST_F()
281 auto Tokens = annotate("delete (void *)p;"); in TEST_F() local
282 EXPECT_EQ(Tokens.size(), 8u) << Tokens; in TEST_F()
283 EXPECT_TOKEN(Tokens[4], tok::r_paren, TT_CastRParen); in TEST_F()
285 Tokens = annotate("delete[] (void *)p;"); in TEST_F()
286 EXPECT_EQ(Tokens.size(), 10u) << Tokens; in TEST_F()
287 EXPECT_TOKEN(Tokens[6], tok::r_paren, TT_CastRParen); in TEST_F()
289 Tokens = annotate("delete[] /*comment*/ (void *)p;"); in TEST_F()
290 EXPECT_EQ(Tokens.size(), 11u) << Tokens; in TEST_F()
291 EXPECT_TOKEN(Tokens[7], tok::r_paren, TT_CastRParen); in TEST_F()
293 Tokens = annotate("delete[/*comment*/] (void *)p;"); in TEST_F()
294 EXPECT_EQ(Tokens.size(), 11u) << Tokens; in TEST_F()
295 EXPECT_TOKEN(Tokens[7], tok::r_paren, TT_CastRParen); in TEST_F()
297 Tokens = annotate("delete/*comment*/[] (void *)p;"); in TEST_F()
298 EXPECT_EQ(Tokens.size(), 11u) << Tokens; in TEST_F()
299 EXPECT_TOKEN(Tokens[7], tok::r_paren, TT_CastRParen); in TEST_F()
303 auto Tokens = annotate("void f() &;"); in TEST_F() local
304 EXPECT_EQ(Tokens.size(), 7u) << Tokens; in TEST_F()
305 EXPECT_TOKEN(Tokens[4], tok::amp, TT_PointerOrReference); in TEST_F()
307 Tokens = annotate("void operator=(T) &&;"); in TEST_F()
308 EXPECT_EQ(Tokens.size(), 9u) << Tokens; in TEST_F()
309 EXPECT_TOKEN(Tokens[6], tok::ampamp, TT_PointerOrReference); in TEST_F()
311 Tokens = annotate("template <typename T> void f() &;"); in TEST_F()
312 EXPECT_EQ(Tokens.size(), 12u) << Tokens; in TEST_F()
313 EXPECT_TOKEN(Tokens[9], tok::amp, TT_PointerOrReference); in TEST_F()
315 Tokens = annotate("template <typename T> void operator=(T) &;"); in TEST_F()
316 EXPECT_EQ(Tokens.size(), 14u) << Tokens; in TEST_F()
317 EXPECT_TOKEN(Tokens[11], tok::amp, TT_PointerOrReference); in TEST_F()
321 auto Tokens = annotate("template <typename T>\n" in TEST_F() local
324 ASSERT_EQ(Tokens.size(), 21u) << Tokens; in TEST_F()
325 EXPECT_TOKEN(Tokens[10], tok::ampamp, TT_BinaryOperator); in TEST_F()
326 EXPECT_TOKEN(Tokens[13], tok::ampamp, TT_BinaryOperator); in TEST_F()
327 EXPECT_TOKEN(Tokens[16], tok::ampamp, TT_BinaryOperator); in TEST_F()
329 Tokens = annotate("template <typename T>\n" in TEST_F()
333 ASSERT_EQ(Tokens.size(), 35u) << Tokens; in TEST_F()
334 EXPECT_TOKEN(Tokens[8], tok::kw_requires, TT_RequiresExpression); in TEST_F()
335 EXPECT_TOKEN(Tokens[9], tok::l_paren, TT_RequiresExpressionLParen); in TEST_F()
336 EXPECT_TOKEN(Tokens[13], tok::l_brace, TT_RequiresExpressionLBrace); in TEST_F()
337 EXPECT_TOKEN(Tokens[23], tok::ampamp, TT_BinaryOperator); in TEST_F()
338 EXPECT_TOKEN(Tokens[28], tok::ampamp, TT_BinaryOperator); in TEST_F()
340 Tokens = annotate("template<typename T>\n" in TEST_F()
343 ASSERT_EQ(Tokens.size(), 36u) << Tokens; in TEST_F()
344 EXPECT_TOKEN(Tokens[5], tok::kw_requires, TT_RequiresClause); in TEST_F()
345 EXPECT_TOKEN(Tokens[6], tok::identifier, TT_Unknown); in TEST_F()
346 EXPECT_EQ(Tokens[6]->FakeLParens.size(), 1u); in TEST_F()
347 EXPECT_TOKEN(Tokens[10], tok::ampamp, TT_BinaryOperator); in TEST_F()
348 EXPECT_TOKEN(Tokens[16], tok::pipepipe, TT_BinaryOperator); in TEST_F()
349 EXPECT_TOKEN(Tokens[21], tok::ampamp, TT_BinaryOperator); in TEST_F()
350 EXPECT_TOKEN(Tokens[27], tok::ampamp, TT_BinaryOperator); in TEST_F()
351 EXPECT_TOKEN(Tokens[31], tok::greater, TT_TemplateCloser); in TEST_F()
352 EXPECT_EQ(Tokens[31]->FakeRParens, 1u); in TEST_F()
353 EXPECT_TRUE(Tokens[31]->ClosesRequiresClause); in TEST_F()
355 Tokens = in TEST_F()
359 ASSERT_EQ(Tokens.size(), 38u) << Tokens; in TEST_F()
360 EXPECT_TOKEN(Tokens[5], tok::kw_requires, TT_RequiresClause); in TEST_F()
361 EXPECT_TOKEN(Tokens[7], tok::identifier, TT_Unknown); in TEST_F()
362 EXPECT_EQ(Tokens[7]->FakeLParens.size(), 1u); in TEST_F()
363 EXPECT_TOKEN(Tokens[11], tok::ampamp, TT_BinaryOperator); in TEST_F()
364 EXPECT_TOKEN(Tokens[17], tok::pipepipe, TT_BinaryOperator); in TEST_F()
365 EXPECT_TOKEN(Tokens[22], tok::ampamp, TT_BinaryOperator); in TEST_F()
366 EXPECT_TOKEN(Tokens[28], tok::ampamp, TT_BinaryOperator); in TEST_F()
367 EXPECT_TOKEN(Tokens[32], tok::greater, TT_TemplateCloser); in TEST_F()
368 EXPECT_EQ(Tokens[32]->FakeRParens, 1u); in TEST_F()
369 EXPECT_TOKEN(Tokens[33], tok::r_paren, TT_Unknown); in TEST_F()
370 EXPECT_TRUE(Tokens[33]->ClosesRequiresClause); in TEST_F()
372 Tokens = annotate("template <typename T>\n" in TEST_F()
374 ASSERT_EQ(Tokens.size(), 18u) << Tokens; in TEST_F()
375 EXPECT_TOKEN(Tokens[11], tok::kw_requires, TT_RequiresClause); in TEST_F()
377 Tokens = annotate("template <typename T>\n" in TEST_F()
387 ASSERT_EQ(Tokens.size(), 85u) << Tokens; in TEST_F()
388 EXPECT_TOKEN(Tokens[13], tok::kw_requires, TT_RequiresClause); in TEST_F()
389 EXPECT_TOKEN(Tokens[25], tok::kw_requires, TT_RequiresClause); in TEST_F()
390 EXPECT_TOKEN(Tokens[36], tok::kw_requires, TT_RequiresClause); in TEST_F()
391 EXPECT_TOKEN(Tokens[49], tok::kw_requires, TT_RequiresClause); in TEST_F()
392 EXPECT_TOKEN(Tokens[61], tok::kw_requires, TT_RequiresClause); in TEST_F()
393 EXPECT_TOKEN(Tokens[77], tok::kw_requires, TT_RequiresClause); in TEST_F()
395 Tokens = annotate("void Class::member() && requires(Constant) {}"); in TEST_F()
396 ASSERT_EQ(Tokens.size(), 14u) << Tokens; in TEST_F()
397 EXPECT_TOKEN(Tokens[7], tok::kw_requires, TT_RequiresClause); in TEST_F()
399 Tokens = annotate("void Class::member() && requires(Constant<T>) {}"); in TEST_F()
400 ASSERT_EQ(Tokens.size(), 17u) << Tokens; in TEST_F()
401 EXPECT_TOKEN(Tokens[7], tok::kw_requires, TT_RequiresClause); in TEST_F()
403 Tokens = in TEST_F()
405 ASSERT_EQ(Tokens.size(), 19u) << Tokens; in TEST_F()
406 EXPECT_TOKEN(Tokens[7], tok::kw_requires, TT_RequiresClause); in TEST_F()
408 Tokens = annotate("void Class::member() && requires(typename " in TEST_F()
410 ASSERT_EQ(Tokens.size(), 24u) << Tokens; in TEST_F()
411 EXPECT_TOKEN(Tokens[7], tok::kw_requires, TT_RequiresClause); in TEST_F()
413 Tokens = annotate("struct [[nodiscard]] zero_t {\n" in TEST_F()
419 ASSERT_EQ(Tokens.size(), 44u); in TEST_F()
420 EXPECT_TOKEN(Tokens[13], tok::kw_requires, TT_RequiresClause); in TEST_F()
421 EXPECT_TOKEN(Tokens[14], tok::kw_requires, TT_RequiresExpression); in TEST_F()
422 EXPECT_TOKEN(Tokens[15], tok::l_brace, TT_RequiresExpressionLBrace); in TEST_F()
423 EXPECT_TOKEN(Tokens[21], tok::r_brace, TT_Unknown); in TEST_F()
424 EXPECT_EQ(Tokens[21]->MatchingParen, Tokens[15]); in TEST_F()
425 EXPECT_TRUE(Tokens[21]->ClosesRequiresClause); in TEST_F()
427 Tokens = in TEST_F()
430 ASSERT_EQ(Tokens.size(), 31u) << Tokens; in TEST_F()
431 EXPECT_TOKEN(Tokens[8], tok::kw_concept, TT_Unknown); in TEST_F()
432 EXPECT_TOKEN(Tokens[14], tok::less, TT_TemplateOpener); in TEST_F()
433 EXPECT_TOKEN(Tokens[18], tok::less, TT_TemplateOpener); in TEST_F()
434 EXPECT_TOKEN(Tokens[20], tok::greater, TT_TemplateCloser); in TEST_F()
435 EXPECT_TOKEN(Tokens[25], tok::less, TT_TemplateOpener); in TEST_F()
436 EXPECT_TOKEN(Tokens[27], tok::greater, TT_TemplateCloser); in TEST_F()
437 EXPECT_TOKEN(Tokens[28], tok::greater, TT_TemplateCloser); in TEST_F()
439 Tokens = annotate("auto bar() -> int requires(is_integral_v<T>) {}"); in TEST_F()
440 ASSERT_EQ(Tokens.size(), 16u) << Tokens; in TEST_F()
441 EXPECT_TOKEN(Tokens[6], tok::kw_requires, TT_RequiresClause); in TEST_F()
443 Tokens = annotate("auto bar() -> void requires(is_integral_v<T>) {}"); in TEST_F()
444 ASSERT_EQ(Tokens.size(), 16u) << Tokens; in TEST_F()
445 EXPECT_TOKEN(Tokens[6], tok::kw_requires, TT_RequiresClause); in TEST_F()
447 Tokens = annotate("auto bar() -> MyType requires(is_integral_v<T>) {}"); in TEST_F()
448 ASSERT_EQ(Tokens.size(), 16u) << Tokens; in TEST_F()
449 EXPECT_TOKEN(Tokens[6], tok::kw_requires, TT_RequiresClause); in TEST_F()
451 Tokens = in TEST_F()
453 ASSERT_EQ(Tokens.size(), 16u) << Tokens; in TEST_F()
454 EXPECT_TOKEN(Tokens[6], tok::kw_requires, TT_RequiresClause); in TEST_F()
456 Tokens = in TEST_F()
458 ASSERT_EQ(Tokens.size(), 18u) << Tokens; in TEST_F()
459 EXPECT_TOKEN(Tokens[8], tok::kw_requires, TT_RequiresClause); in TEST_F()
461 Tokens = in TEST_F()
463 ASSERT_EQ(Tokens.size(), 19u) << Tokens; in TEST_F()
464 EXPECT_TOKEN(Tokens[9], tok::kw_requires, TT_RequiresClause); in TEST_F()
468 auto Tokens = annotate("bool b = requires(int i) { i + 5; };"); in TEST_F() local
469 ASSERT_EQ(Tokens.size(), 16u) << Tokens; in TEST_F()
470 EXPECT_TOKEN(Tokens[3], tok::kw_requires, TT_RequiresExpression); in TEST_F()
471 EXPECT_TOKEN(Tokens[4], tok::l_paren, TT_RequiresExpressionLParen); in TEST_F()
472 EXPECT_TOKEN(Tokens[8], tok::l_brace, TT_RequiresExpressionLBrace); in TEST_F()
474 Tokens = annotate("if (requires(int i) { i + 5; }) return;"); in TEST_F()
475 ASSERT_EQ(Tokens.size(), 17u) << Tokens; in TEST_F()
476 EXPECT_TOKEN(Tokens[2], tok::kw_requires, TT_RequiresExpression); in TEST_F()
477 EXPECT_TOKEN(Tokens[3], tok::l_paren, TT_RequiresExpressionLParen); in TEST_F()
478 EXPECT_TOKEN(Tokens[7], tok::l_brace, TT_RequiresExpressionLBrace); in TEST_F()
480 Tokens = annotate("if (func() && requires(int i) { i + 5; }) return;"); in TEST_F()
481 ASSERT_EQ(Tokens.size(), 21u) << Tokens; in TEST_F()
482 EXPECT_TOKEN(Tokens[6], tok::kw_requires, TT_RequiresExpression); in TEST_F()
483 EXPECT_TOKEN(Tokens[7], tok::l_paren, TT_RequiresExpressionLParen); in TEST_F()
484 EXPECT_TOKEN(Tokens[11], tok::l_brace, TT_RequiresExpressionLBrace); in TEST_F()
486 Tokens = annotate("foo(requires(const T t) {});"); in TEST_F()
487 ASSERT_EQ(Tokens.size(), 13u) << Tokens; in TEST_F()
488 EXPECT_TOKEN(Tokens[2], tok::kw_requires, TT_RequiresExpression); in TEST_F()
489 EXPECT_TOKEN(Tokens[3], tok::l_paren, TT_RequiresExpressionLParen); in TEST_F()
490 EXPECT_TOKEN(Tokens[8], tok::l_brace, TT_RequiresExpressionLBrace); in TEST_F()
492 Tokens = annotate("foo(requires(const int t) {});"); in TEST_F()
493 ASSERT_EQ(Tokens.size(), 13u) << Tokens; in TEST_F()
494 EXPECT_TOKEN(Tokens[2], tok::kw_requires, TT_RequiresExpression); in TEST_F()
495 EXPECT_TOKEN(Tokens[3], tok::l_paren, TT_RequiresExpressionLParen); in TEST_F()
496 EXPECT_TOKEN(Tokens[8], tok::l_brace, TT_RequiresExpressionLBrace); in TEST_F()
498 Tokens = annotate("foo(requires(const T t) {});"); in TEST_F()
499 ASSERT_EQ(Tokens.size(), 13u) << Tokens; in TEST_F()
500 EXPECT_TOKEN(Tokens[2], tok::kw_requires, TT_RequiresExpression); in TEST_F()
501 EXPECT_TOKEN(Tokens[3], tok::l_paren, TT_RequiresExpressionLParen); in TEST_F()
502 EXPECT_TOKEN(Tokens[8], tok::l_brace, TT_RequiresExpressionLBrace); in TEST_F()
504 Tokens = annotate("foo(requires(int const* volatile t) {});"); in TEST_F()
505 ASSERT_EQ(Tokens.size(), 15u) << Tokens; in TEST_F()
506 EXPECT_TOKEN(Tokens[2], tok::kw_requires, TT_RequiresExpression); in TEST_F()
507 EXPECT_TOKEN(Tokens[3], tok::l_paren, TT_RequiresExpressionLParen); in TEST_F()
508 EXPECT_TOKEN(Tokens[10], tok::l_brace, TT_RequiresExpressionLBrace); in TEST_F()
510 Tokens = annotate("foo(requires(T const* volatile t) {});"); in TEST_F()
511 ASSERT_EQ(Tokens.size(), 15u) << Tokens; in TEST_F()
512 EXPECT_TOKEN(Tokens[2], tok::kw_requires, TT_RequiresExpression); in TEST_F()
513 EXPECT_TOKEN(Tokens[3], tok::l_paren, TT_RequiresExpressionLParen); in TEST_F()
514 EXPECT_TOKEN(Tokens[10], tok::l_brace, TT_RequiresExpressionLBrace); in TEST_F()
516 Tokens = in TEST_F()
518 ASSERT_EQ(Tokens.size(), 21u) << Tokens; in TEST_F()
519 EXPECT_TOKEN(Tokens[2], tok::kw_requires, TT_RequiresExpression); in TEST_F()
520 EXPECT_TOKEN(Tokens[3], tok::l_paren, TT_RequiresExpressionLParen); in TEST_F()
521 EXPECT_TOKEN(Tokens[16], tok::l_brace, TT_RequiresExpressionLBrace); in TEST_F()
523 Tokens = annotate("template <typename T>\n" in TEST_F()
527 ASSERT_EQ(Tokens.size(), 28u) << Tokens; in TEST_F()
528 EXPECT_TOKEN(Tokens[8], tok::kw_requires, TT_RequiresExpression); in TEST_F()
529 EXPECT_TOKEN(Tokens[9], tok::l_paren, TT_RequiresExpressionLParen); in TEST_F()
530 EXPECT_TOKEN(Tokens[13], tok::l_brace, TT_RequiresExpressionLBrace); in TEST_F()
531 EXPECT_TOKEN(Tokens[14], tok::kw_requires, in TEST_F()
534 Tokens = annotate("template <typename T>\n" in TEST_F()
539 ASSERT_EQ(Tokens.size(), 43u) << Tokens; in TEST_F()
540 EXPECT_TOKEN(Tokens[8], tok::kw_requires, TT_RequiresExpression); in TEST_F()
541 EXPECT_TOKEN(Tokens[9], tok::l_paren, TT_RequiresExpressionLParen); in TEST_F()
542 EXPECT_TOKEN(Tokens[13], tok::l_brace, TT_RequiresExpressionLBrace); in TEST_F()
543 EXPECT_TOKEN(Tokens[29], tok::kw_requires, in TEST_F()
547 Tokens = annotate("bool r10 = requires (struct new_struct { int x; } s) { " in TEST_F()
549 ASSERT_EQ(Tokens.size(), 21u) << Tokens; in TEST_F()
550 EXPECT_TOKEN(Tokens[3], tok::kw_requires, TT_RequiresExpression); in TEST_F()
551 EXPECT_TOKEN(Tokens[4], tok::l_paren, TT_RequiresExpressionLParen); in TEST_F()
552 EXPECT_TOKEN(Tokens[14], tok::l_brace, TT_RequiresExpressionLBrace); in TEST_F()
724 auto Tokens = annotate("__asm{\n" in TEST_F() local
727 ASSERT_EQ(Tokens.size(), 7u) << Tokens; in TEST_F()
728 EXPECT_TOKEN(Tokens[0], tok::kw_asm, TT_Unknown); in TEST_F()
729 EXPECT_TOKEN(Tokens[1], tok::l_brace, TT_InlineASMBrace); in TEST_F()
730 EXPECT_TOKEN(Tokens[4], tok::r_brace, TT_InlineASMBrace); in TEST_F()
734 auto Tokens = annotate("int (^)() = ^ ()\n" in TEST_F() local
738 ASSERT_EQ(Tokens.size(), 21u) << Tokens; in TEST_F()
739 EXPECT_TOKEN(Tokens[1], tok::l_paren, TT_ObjCBlockLParen); in TEST_F()
740 EXPECT_TOKEN(Tokens[13], tok::l_brace, TT_ObjCBlockLBrace); in TEST_F()
742 Tokens = annotate("int *p = ^int*(){ //\n" in TEST_F()
745 ASSERT_EQ(Tokens.size(), 19u) << Tokens; in TEST_F()
746 EXPECT_TOKEN(Tokens[9], tok::l_brace, TT_ObjCBlockLBrace); in TEST_F()
750 auto Tokens = annotate("[]() constexpr {}"); in TEST_F() local
751 ASSERT_EQ(Tokens.size(), 8u) << Tokens; in TEST_F()
752 EXPECT_TOKEN(Tokens[0], tok::l_square, TT_LambdaLSquare); in TEST_F()
753 EXPECT_TOKEN(Tokens[5], tok::l_brace, TT_LambdaLBrace); in TEST_F()