Skip to content

Commit 6162a97

Browse files
committed
let_chains: Handle in unused parenthesis lint.
1 parent 7e4e53e commit 6162a97

File tree

1 file changed

+21
-15
lines changed

1 file changed

+21
-15
lines changed

src/librustc_lint/unused.rs

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -294,20 +294,28 @@ impl UnusedParens {
294294
value: &ast::Expr,
295295
msg: &str,
296296
followed_by_block: bool) {
297-
if let ast::ExprKind::Paren(ref inner) = value.node {
298-
let necessary = followed_by_block && match inner.node {
299-
ast::ExprKind::Ret(_) | ast::ExprKind::Break(..) => true,
300-
_ => parser::contains_exterior_struct_lit(&inner),
301-
};
302-
if !necessary {
303-
let expr_text = if let Ok(snippet) = cx.sess().source_map()
304-
.span_to_snippet(value.span) {
305-
snippet
306-
} else {
307-
pprust::expr_to_string(value)
308-
};
309-
Self::remove_outer_parens(cx, value.span, &expr_text, msg);
297+
match value.node {
298+
ast::ExprKind::Paren(ref inner) => {
299+
let necessary = followed_by_block && match inner.node {
300+
ast::ExprKind::Ret(_) | ast::ExprKind::Break(..) => true,
301+
_ => parser::contains_exterior_struct_lit(&inner),
302+
};
303+
if !necessary {
304+
let expr_text = if let Ok(snippet) = cx.sess().source_map()
305+
.span_to_snippet(value.span) {
306+
snippet
307+
} else {
308+
pprust::expr_to_string(value)
309+
};
310+
Self::remove_outer_parens(cx, value.span, &expr_text, msg);
311+
}
312+
}
313+
ast::ExprKind::Let(_, ref expr) => {
314+
// FIXME(#60336): Properly handle `let true = (false && true)`
315+
// actually needing the parenthesis.
316+
self.check_unused_parens_expr(cx, expr, "`let` scrutinee", followed_by_block);
310317
}
318+
_ => {}
311319
}
312320
}
313321

@@ -369,8 +377,6 @@ impl EarlyLintPass for UnusedParens {
369377
let (value, msg, followed_by_block) = match e.node {
370378
If(ref cond, ..) => (cond, "`if` condition", true),
371379
While(ref cond, ..) => (cond, "`while` condition", true),
372-
IfLet(_, ref cond, ..) => (cond, "`if let` head expression", true),
373-
WhileLet(_, ref cond, ..) => (cond, "`while let` head expression", true),
374380
ForLoop(_, ref cond, ..) => (cond, "`for` head expression", true),
375381
Match(ref head, _) => (head, "`match` head expression", true),
376382
Ret(Some(ref value)) => (value, "`return` value", false),

0 commit comments

Comments
 (0)