/// ```rust
/// let mut x = 0;
///
- /// // Bad
/// let a = {
/// x = 1;
/// 1
/// } + x;
/// // Unclear whether a is 1 or 2.
+ /// ```
///
- /// // Good
+ /// Use instead:
+ /// ```rust
+ /// # let mut x = 0;
/// let tmp = {
/// x = 1;
/// 1
impl<'a, 'tcx> DivergenceVisitor<'a, 'tcx> {
fn maybe_walk_expr(&mut self, e: &'tcx Expr<'_>) {
match e.kind {
- ExprKind::Closure(..) => {},
+ ExprKind::Closure { .. } => {},
ExprKind::Match(e, arms, _) => {
self.visit_expr(e);
for arm in arms {
walk_expr(vis, expr);
}
},
- ExprKind::Closure(_, _, _, _, _) => {
+ ExprKind::Closure { .. } => {
// Either
//
// * `var` is defined in the closure body, in which case we've reached the top of the enclosing
// We're about to descend a closure. Since we don't know when (or
// if) the closure will be evaluated, any reads in it might not
// occur here (or ever). Like above, bail to avoid false positives.
- ExprKind::Closure(_, _, _, _, _) |
+ ExprKind::Closure{..} |
// We want to avoid a false positive when a variable name occurs
// only to have its address taken, so we stop here. Technically,