@@ -16,8 +16,8 @@ use rustc_span::{BytePos, Span, sym};
16
16
17
17
use crate :: errors:: {
18
18
BreakInsideClosure , BreakInsideCoroutine , BreakNonLoop , ConstContinueBadLabel ,
19
- ContinueLabeledBlock , LoopMatchBadRhs , LoopMatchBadStatements , LoopMatchMissingAssignment ,
20
- OutsideLoop , OutsideLoopSuggestion , UnlabeledCfInWhileCondition , UnlabeledInLabeledBlock ,
19
+ ContinueLabeledBlock , OutsideLoop , OutsideLoopSuggestion , UnlabeledCfInWhileCondition ,
20
+ UnlabeledInLabeledBlock ,
21
21
} ;
22
22
23
23
/// The context in which a block is encountered.
@@ -438,43 +438,24 @@ impl<'hir> CheckLoopVisitor<'hir> {
438
438
return None ;
439
439
}
440
440
441
- let dcx = self . tcx . dcx ( ) ;
441
+ // NOTE: diagnostics are emitted during MIR construction.
442
442
443
443
// accept either `state = expr` or `state = expr;`
444
444
let loop_body_expr = match body. stmts {
445
445
[ ] => match body. expr {
446
446
Some ( expr) => expr,
447
- None => {
448
- dcx. emit_err ( LoopMatchMissingAssignment { span : body. span } ) ;
449
- return None ;
450
- }
447
+ None => return None ,
451
448
} ,
452
449
[ single] if body. expr . is_none ( ) => match single. kind {
453
450
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 ,
458
452
} ,
459
- [ first @ last] | [ first, .., last] => {
460
- dcx. emit_err ( LoopMatchBadStatements { span : first. span . to ( last. span ) } ) ;
461
- return None ;
462
- }
453
+ [ ..] => return None ,
463
454
} ;
464
455
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 } ;
469
457
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 } ;
478
459
479
460
label
480
461
}
0 commit comments