@@ -224,9 +224,22 @@ impl ExprCollector<'_> {
224
224
self . alloc_expr ( Expr :: Unsafe { body } , syntax_ptr)
225
225
}
226
226
// FIXME: we need to record these effects somewhere...
227
- ast:: Effect :: Async ( _) | ast:: Effect :: Label ( _) => {
228
- self . collect_block_opt ( e. block_expr ( ) )
229
- }
227
+ ast:: Effect :: Label ( label) => match e. block_expr ( ) {
228
+ Some ( block) => {
229
+ let res = self . collect_block ( block) ;
230
+ match & mut self . body . exprs [ res] {
231
+ Expr :: Block { label : block_label, .. } => {
232
+ * block_label =
233
+ label. lifetime_token ( ) . map ( |t| Name :: new_lifetime ( & t) )
234
+ }
235
+ _ => unreachable ! ( ) ,
236
+ }
237
+ res
238
+ }
239
+ None => self . missing_expr ( ) ,
240
+ } ,
241
+ // FIXME: we need to record these effects somewhere...
242
+ ast:: Effect :: Async ( _) => self . collect_block_opt ( e. block_expr ( ) ) ,
230
243
} ,
231
244
ast:: Expr :: BlockExpr ( e) => self . collect_block ( e) ,
232
245
ast:: Expr :: LoopExpr ( e) => {
@@ -618,8 +631,7 @@ impl ExprCollector<'_> {
618
631
} )
619
632
. collect ( ) ;
620
633
let tail = block. expr ( ) . map ( |e| self . collect_expr ( e) ) ;
621
- let label = block. label ( ) . and_then ( |l| l. lifetime_token ( ) ) . map ( |t| Name :: new_lifetime ( & t) ) ;
622
- self . alloc_expr ( Expr :: Block { statements, tail, label } , syntax_node_ptr)
634
+ self . alloc_expr ( Expr :: Block { statements, tail, label : None } , syntax_node_ptr)
623
635
}
624
636
625
637
fn collect_block_items ( & mut self , block : & ast:: BlockExpr ) {
0 commit comments