@@ -195,10 +195,7 @@ impl<'d, D: DiagnosticSink> Resolver<'d, D> {
195195 let sym = self . scopes . lookup ( self . current_scope , name) . unwrap ( ) ;
196196 r:: StmtKind :: Let { sym, value }
197197 }
198- p:: StmtKind :: Expr { expr, terminated } => r:: StmtKind :: Expr {
199- expr : self . resolve_expr ( expr) ,
200- terminated
201- } ,
198+ p:: StmtKind :: Expr ( expr) => r:: StmtKind :: Expr ( self . resolve_expr ( expr) ) ,
202199 p:: StmtKind :: Empty => r:: StmtKind :: Empty ,
203200 p:: StmtKind :: Error => r:: StmtKind :: Error ,
204201 } ;
@@ -220,7 +217,7 @@ impl<'d, D: DiagnosticSink> Resolver<'d, D> {
220217 let right = Box :: new ( self . resolve_expr ( * right) ) ;
221218 r:: ExprKind :: BinaryOp { op, left, right }
222219 }
223- p:: ExprKind :: Block { stmts } => {
220+ p:: ExprKind :: Block { stmts, tail_expr } => {
224221 let outer = self . current_scope ;
225222 self . current_scope = self . scopes . new_scope ( Some ( outer) ) ;
226223
@@ -232,9 +229,11 @@ impl<'d, D: DiagnosticSink> Resolver<'d, D> {
232229 . into_iter ( )
233230 . map ( |stmt| self . resolve_stmt ( stmt) )
234231 . collect ( ) ;
232+
233+ let resolved_expr = tail_expr. map ( |expr| self . resolve_expr ( expr) ) ;
235234
236235 self . current_scope = outer;
237- r:: ExprKind :: Block { stmts : resolved_stmts }
236+ r:: ExprKind :: Block { stmts : resolved_stmts, tail_expr : resolved_expr }
238237 }
239238 p:: ExprKind :: Error => r:: ExprKind :: Error ,
240239 } ;
@@ -312,14 +311,14 @@ mod tests {
312311 span: Span { start: 0 , end: 10 }
313312 } ,
314313 p:: Stmt {
315- kind: p:: StmtKind :: Expr { expr : p:: Expr {
314+ kind: p:: StmtKind :: Expr ( p:: Expr {
316315 kind: p:: ExprKind :: BinaryOp {
317316 op: p:: BinaryOp :: Add ,
318317 left: Box :: new( p:: Expr { kind: p:: ExprKind :: Identifier { name: "x" } , span: Span :: new( 11 , 12 ) } ) ,
319318 right: Box :: new( p:: Expr { kind: p:: ExprKind :: Identifier { name: "x" } , span: Span :: new( 15 , 16 ) } ) ,
320319 } ,
321320 span: Span :: new( 11 , 16 )
322- } , terminated : true } ,
321+ } ) ,
323322 span: Span :: new( 11 , 17 )
324323 }
325324 ] ,
@@ -339,14 +338,14 @@ mod tests {
339338 span: Span { start: 0 , end: 10 }
340339 } ,
341340 r:: Stmt {
342- kind: r:: StmtKind :: Expr { expr : r:: Expr {
341+ kind: r:: StmtKind :: Expr ( r:: Expr {
343342 kind: r:: ExprKind :: BinaryOp {
344343 op: r:: BinaryOp :: Add ,
345344 left: Box :: new( r:: Expr { kind: r:: ExprKind :: Identifier { sym: SymbolId ( 0 ) } , span: Span :: new( 11 , 12 ) } ) ,
346345 right: Box :: new( r:: Expr { kind: r:: ExprKind :: Identifier { sym: SymbolId ( 0 ) } , span: Span :: new( 15 , 16 ) } ) ,
347346 } ,
348347 span: Span :: new( 11 , 16 )
349- } , terminated : true } ,
348+ } ) ,
350349 span: Span :: new( 11 , 17 )
351350 }
352351 ] ,
0 commit comments