diff --git a/clippy_lints/src/redundant_field_names.rs b/clippy_lints/src/redundant_field_names.rs index 885e1aa9f8d..6775129f9df 100644 --- a/clippy_lints/src/redundant_field_names.rs +++ b/clippy_lints/src/redundant_field_names.rs @@ -36,17 +36,17 @@ impl LintPass for RedundantFieldNames { impl<'a, 'tcx> LateLintPass<'a, 'tcx> for RedundantFieldNames { fn check_expr(&mut self, cx: &LateContext<'a, 'tcx>, expr: &'tcx Expr) { - if let ExprStruct(ref path, ref fields, _) = expr.node { + // Do not care about range expressions. + // They could have redundant field name when desugared to structs. + // e.g. `start..end` is desugared to `Range { start: start, end: end }` + if is_range_expression(expr.span) { + return; + } + + if let ExprStruct(_, ref fields, _) = expr.node { for field in fields { let name = field.name.node; - // Do not care about range expressions. - // They could have redundant field name when desugared to structs. - // e.g. `start..end` is desugared to `Range { start: start, end: end }` - if is_range_expression(expr.span) { - continue; - } - if match_var(&field.expr, name) && !field.is_shorthand { span_lint_and_sugg ( cx,