File tree Expand file tree Collapse file tree 4 files changed +121
-47
lines changed Expand file tree Collapse file tree 4 files changed +121
-47
lines changed Original file line number Diff line number Diff line change @@ -252,12 +252,10 @@ fn closure_expr(p: &mut Parser) -> CompletedMarker {
252
252
// test lambda_ret_block
253
253
// fn main() { || -> i32 { 92 }(); }
254
254
block_expr ( p) ;
255
+ } else if p. at_ts ( EXPR_FIRST ) {
256
+ expr ( p) ;
255
257
} else {
256
- if p. at_ts ( EXPR_FIRST ) {
257
- expr ( p) ;
258
- } else {
259
- p. error ( "expected expression" ) ;
260
- }
258
+ p. error ( "expected expression" ) ;
261
259
}
262
260
m. complete ( p, CLOSURE_EXPR )
263
261
}
Original file line number Diff line number Diff line change @@ -260,33 +260,116 @@ pub enum SyntaxKind {
260
260
use self :: SyntaxKind :: * ;
261
261
impl SyntaxKind {
262
262
pub fn is_keyword ( self ) -> bool {
263
- match self {
264
- AS_KW | ASYNC_KW | AWAIT_KW | BOX_KW | BREAK_KW | CONST_KW | CONTINUE_KW | CRATE_KW
265
- | DYN_KW | ELSE_KW | ENUM_KW | EXTERN_KW | FALSE_KW | FN_KW | FOR_KW | IF_KW
266
- | IMPL_KW | IN_KW | LET_KW | LOOP_KW | MACRO_KW | MATCH_KW | MOD_KW | MOVE_KW
267
- | MUT_KW | PUB_KW | REF_KW | RETURN_KW | SELF_KW | STATIC_KW | STRUCT_KW | SUPER_KW
268
- | TRAIT_KW | TRUE_KW | TRY_KW | TYPE_KW | UNSAFE_KW | USE_KW | WHERE_KW | WHILE_KW
269
- | YIELD_KW | AUTO_KW | DEFAULT_KW | EXISTENTIAL_KW | UNION_KW | RAW_KW
270
- | MACRO_RULES_KW => true ,
271
- _ => false ,
272
- }
263
+ matches ! (
264
+ self ,
265
+ AS_KW
266
+ | ASYNC_KW
267
+ | AWAIT_KW
268
+ | BOX_KW
269
+ | BREAK_KW
270
+ | CONST_KW
271
+ | CONTINUE_KW
272
+ | CRATE_KW
273
+ | DYN_KW
274
+ | ELSE_KW
275
+ | ENUM_KW
276
+ | EXTERN_KW
277
+ | FALSE_KW
278
+ | FN_KW
279
+ | FOR_KW
280
+ | IF_KW
281
+ | IMPL_KW
282
+ | IN_KW
283
+ | LET_KW
284
+ | LOOP_KW
285
+ | MACRO_KW
286
+ | MATCH_KW
287
+ | MOD_KW
288
+ | MOVE_KW
289
+ | MUT_KW
290
+ | PUB_KW
291
+ | REF_KW
292
+ | RETURN_KW
293
+ | SELF_KW
294
+ | STATIC_KW
295
+ | STRUCT_KW
296
+ | SUPER_KW
297
+ | TRAIT_KW
298
+ | TRUE_KW
299
+ | TRY_KW
300
+ | TYPE_KW
301
+ | UNSAFE_KW
302
+ | USE_KW
303
+ | WHERE_KW
304
+ | WHILE_KW
305
+ | YIELD_KW
306
+ | AUTO_KW
307
+ | DEFAULT_KW
308
+ | EXISTENTIAL_KW
309
+ | UNION_KW
310
+ | RAW_KW
311
+ | MACRO_RULES_KW
312
+ )
273
313
}
274
314
pub fn is_punct ( self ) -> bool {
275
- match self {
276
- SEMICOLON | COMMA | L_PAREN | R_PAREN | L_CURLY | R_CURLY | L_BRACK | R_BRACK
277
- | L_ANGLE | R_ANGLE | AT | POUND | TILDE | QUESTION | DOLLAR | AMP | PIPE | PLUS
278
- | STAR | SLASH | CARET | PERCENT | UNDERSCORE | DOT | DOT2 | DOT3 | DOT2EQ | COLON
279
- | COLON2 | EQ | EQ2 | FAT_ARROW | BANG | NEQ | MINUS | THIN_ARROW | LTEQ | GTEQ
280
- | PLUSEQ | MINUSEQ | PIPEEQ | AMPEQ | CARETEQ | SLASHEQ | STAREQ | PERCENTEQ | AMP2
281
- | PIPE2 | SHL | SHR | SHLEQ | SHREQ => true ,
282
- _ => false ,
283
- }
315
+ matches ! (
316
+ self ,
317
+ SEMICOLON
318
+ | COMMA
319
+ | L_PAREN
320
+ | R_PAREN
321
+ | L_CURLY
322
+ | R_CURLY
323
+ | L_BRACK
324
+ | R_BRACK
325
+ | L_ANGLE
326
+ | R_ANGLE
327
+ | AT
328
+ | POUND
329
+ | TILDE
330
+ | QUESTION
331
+ | DOLLAR
332
+ | AMP
333
+ | PIPE
334
+ | PLUS
335
+ | STAR
336
+ | SLASH
337
+ | CARET
338
+ | PERCENT
339
+ | UNDERSCORE
340
+ | DOT
341
+ | DOT2
342
+ | DOT3
343
+ | DOT2EQ
344
+ | COLON
345
+ | COLON2
346
+ | EQ
347
+ | EQ2
348
+ | FAT_ARROW
349
+ | BANG
350
+ | NEQ
351
+ | MINUS
352
+ | THIN_ARROW
353
+ | LTEQ
354
+ | GTEQ
355
+ | PLUSEQ
356
+ | MINUSEQ
357
+ | PIPEEQ
358
+ | AMPEQ
359
+ | CARETEQ
360
+ | SLASHEQ
361
+ | STAREQ
362
+ | PERCENTEQ
363
+ | AMP2
364
+ | PIPE2
365
+ | SHL
366
+ | SHR
367
+ | SHLEQ
368
+ | SHREQ
369
+ )
284
370
}
285
371
pub fn is_literal ( self ) -> bool {
286
- match self {
287
- INT_NUMBER | FLOAT_NUMBER | CHAR | BYTE | STRING | BYTE_STRING => true ,
288
- _ => false ,
289
- }
372
+ matches ! ( self , INT_NUMBER | FLOAT_NUMBER | CHAR | BYTE | STRING | BYTE_STRING )
290
373
}
291
374
pub fn from_keyword ( ident : & str ) -> Option < SyntaxKind > {
292
375
let kw = match ident {
Original file line number Diff line number Diff line change @@ -238,14 +238,9 @@ fn extract_line_annotations(mut line: &str) -> Vec<LineAnnotation> {
238
238
let mut res = Vec :: new ( ) ;
239
239
let mut offset: TextSize = 0 . into ( ) ;
240
240
let marker: fn ( char ) -> bool = if line. contains ( '^' ) { |c| c == '^' } else { |c| c == '|' } ;
241
- loop {
242
- match line. find ( marker) {
243
- Some ( idx) => {
244
- offset += TextSize :: try_from ( idx) . unwrap ( ) ;
245
- line = & line[ idx..] ;
246
- }
247
- None => break ,
248
- } ;
241
+ while let Some ( idx) = line. find ( marker) {
242
+ offset += TextSize :: try_from ( idx) . unwrap ( ) ;
243
+ line = & line[ idx..] ;
249
244
250
245
let mut len = line. chars ( ) . take_while ( |& it| it == '^' ) . count ( ) ;
251
246
let mut continuation = false ;
Original file line number Diff line number Diff line change @@ -94,18 +94,16 @@ fn generate_nodes(kinds: KindsSrc<'_>, grammar: &AstSrc) -> Result<String> {
94
94
support:: children( & self . syntax)
95
95
}
96
96
}
97
- } else {
98
- if let Some ( token_kind) = field. token_kind ( ) {
99
- quote ! {
100
- pub fn #method_name( & self ) -> Option <#ty> {
101
- support:: token( & self . syntax, #token_kind)
102
- }
97
+ } else if let Some ( token_kind) = field. token_kind ( ) {
98
+ quote ! {
99
+ pub fn #method_name( & self ) -> Option <#ty> {
100
+ support:: token( & self . syntax, #token_kind)
103
101
}
104
- } else {
105
- quote ! {
106
- pub fn #method_name ( & self ) -> Option <#ty> {
107
- support :: child ( & self . syntax )
108
- }
102
+ }
103
+ } else {
104
+ quote ! {
105
+ pub fn #method_name ( & self ) -> Option <#ty> {
106
+ support :: child ( & self . syntax )
109
107
}
110
108
}
111
109
}
You can’t perform that action at this time.
0 commit comments