@@ -42,6 +42,7 @@ use ast::{UseTree, UseTreeKind};
4242use ast:: { BinOpKind , UnOp } ;
4343use ast:: { RangeEnd , RangeSyntax } ;
4444use { ast, attr} ;
45+ use ext:: base:: DummyResult ;
4546use source_map:: { self , SourceMap , Spanned , respan} ;
4647use syntax_pos:: { self , Span , MultiSpan , BytePos , FileName } ;
4748use errors:: { self , Applicability , DiagnosticBuilder , DiagnosticId } ;
@@ -4976,16 +4977,16 @@ impl<'a> Parser<'a> {
49764977 /// Precondition: already parsed the '{'.
49774978 fn parse_block_tail ( & mut self , lo : Span , s : BlockCheckMode ) -> PResult < ' a , P < Block > > {
49784979 let mut stmts = vec ! [ ] ;
4979- let mut recovered = false ;
4980-
49814980 while !self . eat ( & token:: CloseDelim ( token:: Brace ) ) {
49824981 let stmt = match self . parse_full_stmt ( false ) {
49834982 Err ( mut err) => {
49844983 err. emit ( ) ;
49854984 self . recover_stmt_ ( SemiColonMode :: Ignore , BlockMode :: Ignore ) ;
4986- self . eat ( & token:: CloseDelim ( token:: Brace ) ) ;
4987- recovered = true ;
4988- break ;
4985+ Some ( Stmt {
4986+ id : ast:: DUMMY_NODE_ID ,
4987+ node : StmtKind :: Expr ( DummyResult :: raw_expr ( self . span ) ) ,
4988+ span : self . span ,
4989+ } )
49894990 }
49904991 Ok ( stmt) => stmt,
49914992 } ;
@@ -5003,7 +5004,6 @@ impl<'a> Parser<'a> {
50035004 id : ast:: DUMMY_NODE_ID ,
50045005 rules : s,
50055006 span : lo. to ( self . prev_span ) ,
5006- recovered,
50075007 } ) )
50085008 }
50095009
0 commit comments