@@ -32,6 +32,7 @@ use ast::{UseTree, UseTreeKind};
3232use ast:: { BinOpKind , UnOp } ;
3333use ast:: { RangeEnd , RangeSyntax } ;
3434use { ast, attr} ;
35+ use ext:: base:: DummyResult ;
3536use source_map:: { self , SourceMap , Spanned , respan} ;
3637use syntax_pos:: { self , Span , MultiSpan , BytePos , FileName } ;
3738use errors:: { self , Applicability , DiagnosticBuilder , DiagnosticId } ;
@@ -4966,16 +4967,16 @@ impl<'a> Parser<'a> {
49664967 /// Precondition: already parsed the '{'.
49674968 fn parse_block_tail ( & mut self , lo : Span , s : BlockCheckMode ) -> PResult < ' a , P < Block > > {
49684969 let mut stmts = vec ! [ ] ;
4969- let mut recovered = false ;
4970-
49714970 while !self . eat ( & token:: CloseDelim ( token:: Brace ) ) {
49724971 let stmt = match self . parse_full_stmt ( false ) {
49734972 Err ( mut err) => {
49744973 err. emit ( ) ;
49754974 self . recover_stmt_ ( SemiColonMode :: Ignore , BlockMode :: Ignore ) ;
4976- self . eat ( & token:: CloseDelim ( token:: Brace ) ) ;
4977- recovered = true ;
4978- break ;
4975+ Some ( Stmt {
4976+ id : ast:: DUMMY_NODE_ID ,
4977+ node : StmtKind :: Expr ( DummyResult :: raw_expr ( self . span ) ) ,
4978+ span : self . span ,
4979+ } )
49794980 }
49804981 Ok ( stmt) => stmt,
49814982 } ;
@@ -4993,7 +4994,6 @@ impl<'a> Parser<'a> {
49934994 id : ast:: DUMMY_NODE_ID ,
49944995 rules : s,
49954996 span : lo. to ( self . prev_span ) ,
4996- recovered,
49974997 } ) )
49984998 }
49994999
0 commit comments