File tree Expand file tree Collapse file tree 3 files changed +15
-10
lines changed
src/librustc_parse/parser Expand file tree Collapse file tree 3 files changed +15
-10
lines changed Original file line number Diff line number Diff line change @@ -1450,9 +1450,7 @@ impl<'a> Parser<'a> {
1450
1450
self . struct_span_err ( sp, "missing condition for `if` expression" )
1451
1451
. span_label ( sp, "expected if condition here" )
1452
1452
. emit ( ) ;
1453
- let expr = self . mk_expr_err ( span) ;
1454
- let stmt = self . mk_stmt ( span, ast:: StmtKind :: Expr ( expr) ) ;
1455
- self . mk_block ( vec ! [ stmt] , BlockCheckMode :: Default , span)
1453
+ self . mk_block_err ( span)
1456
1454
}
1457
1455
1458
1456
/// Parses the condition of a `if` or `while` expression.
Original file line number Diff line number Diff line change @@ -406,9 +406,11 @@ impl<'a> Parser<'a> {
406
406
if self . token . is_bool_lit ( ) {
407
407
self . parse_literal_maybe_minus ( ) ?
408
408
} else {
409
- return Err (
410
- self . fatal ( "identifiers may currently not be used for const generics" )
411
- ) ;
409
+ let span = self . token . span ;
410
+ let msg = "identifiers may currently not be used for const generics" ;
411
+ self . struct_span_err ( span, msg) . emit ( ) ;
412
+ let block = self . mk_block_err ( span) ;
413
+ self . mk_expr ( span, ast:: ExprKind :: Block ( block, None ) , ast:: AttrVec :: new ( ) )
412
414
}
413
415
} else {
414
416
self . parse_literal_maybe_minus ( ) ?
Original file line number Diff line number Diff line change @@ -398,10 +398,7 @@ impl<'a> Parser<'a> {
398
398
self . maybe_annotate_with_ascription ( & mut err, false ) ;
399
399
err. emit ( ) ;
400
400
self . recover_stmt_ ( SemiColonMode :: Ignore , BlockMode :: Ignore ) ;
401
- Some ( self . mk_stmt (
402
- self . token . span ,
403
- StmtKind :: Expr ( self . mk_expr_err ( self . token . span ) ) ,
404
- ) )
401
+ Some ( self . mk_stmt_err ( self . token . span ) )
405
402
}
406
403
Ok ( stmt) => stmt,
407
404
} ;
@@ -479,4 +476,12 @@ impl<'a> Parser<'a> {
479
476
pub ( super ) fn mk_stmt ( & self , span : Span , kind : StmtKind ) -> Stmt {
480
477
Stmt { id : DUMMY_NODE_ID , kind, span }
481
478
}
479
+
480
+ fn mk_stmt_err ( & self , span : Span ) -> Stmt {
481
+ self . mk_stmt ( span, StmtKind :: Expr ( self . mk_expr_err ( span) ) )
482
+ }
483
+
484
+ pub ( super ) fn mk_block_err ( & self , span : Span ) -> P < Block > {
485
+ self . mk_block ( vec ! [ self . mk_stmt_err( span) ] , BlockCheckMode :: Default , span)
486
+ }
482
487
}
You can’t perform that action at this time.
0 commit comments