@@ -16,8 +16,8 @@ use rustc_span::{BytePos, Span, sym};
1616
1717use crate :: errors:: {
1818 BreakInsideClosure , BreakInsideCoroutine , BreakNonLoop , ConstContinueBadLabel ,
19- ContinueLabeledBlock , LoopMatchBadRhs , LoopMatchBadStatements , LoopMatchMissingAssignment ,
20- OutsideLoop , OutsideLoopSuggestion , UnlabeledCfInWhileCondition , UnlabeledInLabeledBlock ,
19+ ContinueLabeledBlock , OutsideLoop , OutsideLoopSuggestion , UnlabeledCfInWhileCondition ,
20+ UnlabeledInLabeledBlock ,
2121} ;
2222
2323/// The context in which a block is encountered.
@@ -438,43 +438,24 @@ impl<'hir> CheckLoopVisitor<'hir> {
438438 return None ;
439439 }
440440
441- let dcx = self . tcx . dcx ( ) ;
441+ // NOTE: diagnostics are emitted during MIR construction.
442442
443443 // accept either `state = expr` or `state = expr;`
444444 let loop_body_expr = match body. stmts {
445445 [ ] => match body. expr {
446446 Some ( expr) => expr,
447- None => {
448- dcx. emit_err ( LoopMatchMissingAssignment { span : body. span } ) ;
449- return None ;
450- }
447+ None => return None ,
451448 } ,
452449 [ single] if body. expr . is_none ( ) => match single. kind {
453450 hir:: StmtKind :: Expr ( expr) | hir:: StmtKind :: Semi ( expr) => expr,
454- _ => {
455- dcx. emit_err ( LoopMatchMissingAssignment { span : body. span } ) ;
456- return None ;
457- }
451+ _ => return None ,
458452 } ,
459- [ first @ last] | [ first, .., last] => {
460- dcx. emit_err ( LoopMatchBadStatements { span : first. span . to ( last. span ) } ) ;
461- return None ;
462- }
453+ [ ..] => return None ,
463454 } ;
464455
465- let hir:: ExprKind :: Assign ( _, rhs_expr, _) = loop_body_expr. kind else {
466- dcx. emit_err ( LoopMatchMissingAssignment { span : loop_body_expr. span } ) ;
467- return None ;
468- } ;
456+ let hir:: ExprKind :: Assign ( _, rhs_expr, _) = loop_body_expr. kind else { return None } ;
469457
470- let hir:: ExprKind :: Block ( _, label) = rhs_expr. kind else {
471- dcx. emit_err ( LoopMatchBadRhs { span : rhs_expr. span } ) ;
472- return None ;
473- } ;
474-
475- if label. is_none ( ) {
476- todo ! ( )
477- }
458+ let hir:: ExprKind :: Block ( _, label) = rhs_expr. kind else { return None } ;
478459
479460 label
480461 }
0 commit comments