1
Fork 0

Avoid lowering a MacArgs::Eq twice.

Fixes #96847.
This commit is contained in:
Nicholas Nethercote 2022-08-09 15:03:56 +10:00
parent c32969d8e6
commit ce78042a42
2 changed files with 15 additions and 3 deletions

View file

@ -1534,15 +1534,13 @@ impl<'hir> LoweringContext<'_, 'hir> {
hir::MatchSource::ForLoopDesugar,
));
let attrs: Vec<_> = e.attrs.iter().map(|a| self.lower_attr(a)).collect();
// This is effectively `{ let _result = ...; _result }`.
// The construct was introduced in #21984 and is necessary to make sure that
// temporaries in the `head` expression are dropped and do not leak to the
// surrounding scope of the `match` since the `match` is not a terminating scope.
//
// Also, add the attributes to the outer returned expr node.
self.expr_drop_temps_mut(for_span, match_expr, attrs.into())
self.expr_drop_temps_mut(for_span, match_expr, e.attrs.clone())
}
/// Desugar `ExprKind::Try` from: `<expr>?` into: