@@ -2480,9 +2480,9 @@ impl<'a> Parser<'a> {
24802480
24812481 let mut checker = CondChecker :: new ( self ) ;
24822482 checker. visit_expr ( & mut cond) ;
2483- if checker. seen_missing_let {
2483+ if checker. seen_missing_let . is_some ( ) {
24842484 // Avoid unnecessary resolve errors as we know we'll have some.
2485- * self . sess . silence_resolve_errors . borrow_mut ( ) = true ;
2485+ * self . sess . silence_resolve_errors . borrow_mut ( ) = checker . seen_missing_let ;
24862486 }
24872487 self . sess . silence_missing_comparison . borrow_mut ( ) . append ( & mut checker. seen_comparison ) ;
24882488
@@ -3562,7 +3562,7 @@ struct CondChecker<'a> {
35623562 parser : & ' a Parser < ' a > ,
35633563 forbid_let_reason : Option < ForbiddenLetReason > ,
35643564 missing_let : Option < errors:: MaybeMissingLet > ,
3565- seen_missing_let : bool ,
3565+ seen_missing_let : Option < ErrorGuaranteed > ,
35663566 comparison : Option < errors:: MaybeComparison > ,
35673567 seen_comparison : Vec < Span > ,
35683568}
@@ -3573,7 +3573,7 @@ impl<'a> CondChecker<'a> {
35733573 parser,
35743574 forbid_let_reason : None ,
35753575 missing_let : None ,
3576- seen_missing_let : false ,
3576+ seen_missing_let : None ,
35773577 comparison : None ,
35783578 seen_comparison : vec ! [ ] ,
35793579 }
@@ -3591,13 +3591,16 @@ impl MutVisitor for CondChecker<'_> {
35913591 if let Some ( comparison) = self . comparison {
35923592 self . seen_comparison . push ( comparison. span ) ;
35933593 }
3594- * is_recovered =
3595- Some ( self . parser . sess . emit_err ( errors:: ExpectedExpressionFoundLet {
3596- span,
3597- reason,
3598- missing_let : self . missing_let ,
3599- comparison : self . comparison ,
3600- } ) ) ;
3594+ let error = self . parser . sess . emit_err ( errors:: ExpectedExpressionFoundLet {
3595+ span,
3596+ reason,
3597+ missing_let : self . missing_let ,
3598+ comparison : self . comparison ,
3599+ } ) ;
3600+ * is_recovered = Some ( error) ;
3601+ if self . missing_let . is_some ( ) {
3602+ self . seen_missing_let = Some ( error) ;
3603+ }
36013604 } else {
36023605 self . parser . sess . gated_spans . gate ( sym:: let_chains, span) ;
36033606 }
@@ -3631,7 +3634,6 @@ impl MutVisitor for CondChecker<'_> {
36313634 | ExprKind :: Call ( _, _)
36323635 | ExprKind :: Array ( _) = rhs. kind
36333636 {
3634- self . seen_missing_let = true ;
36353637 self . missing_let =
36363638 Some ( errors:: MaybeMissingLet { span : rhs. span . shrink_to_lo ( ) } ) ;
36373639 }
0 commit comments