Skip to content

Commit

Permalink
Ignore all macros in redundant_field_names
Browse files Browse the repository at this point in the history
  • Loading branch information
ordovicia committed Mar 11, 2018
1 parent 6776e51 commit ed769a3
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 20 deletions.
1 change: 1 addition & 0 deletions Cargo.toml
Expand Up @@ -49,6 +49,7 @@ lazy_static = "1.0"
serde_derive = "1.0"
clippy-mini-macro-test = { version = "0.2", path = "mini-macro" }
serde = "1.0"
derive-new = "0.5"

[features]
debugging = []
4 changes: 2 additions & 2 deletions clippy_lints/src/redundant_field_names.rs
@@ -1,6 +1,6 @@
use rustc::lint::*;
use rustc::hir::*;
use utils::{is_range_expression, match_var, span_lint_and_sugg};
use utils::{in_macro, is_range_expression, match_var, span_lint_and_sugg};

/// **What it does:** Checks for fields in struct literals where shorthands
/// could be used.
Expand Down Expand Up @@ -39,7 +39,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for RedundantFieldNames {
// 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) {
if in_macro(expr.span) || is_range_expression(expr.span) {
return;
}

Expand Down
8 changes: 8 additions & 0 deletions tests/ui/redundant_field_names.rs
Expand Up @@ -2,6 +2,9 @@
#![allow(unused_variables)]
#![feature(inclusive_range, inclusive_range_syntax)]

#[macro_use]
extern crate derive_new;

use std::ops::{Range, RangeFrom, RangeTo, RangeInclusive, RangeToInclusive};

mod foo {
Expand All @@ -16,6 +19,11 @@ struct Person {
foo: u8,
}

#[derive(new)]
pub struct S {
v: String,
}

fn main() {
let gender: u8 = 42;
let age = 0;
Expand Down
36 changes: 18 additions & 18 deletions tests/ui/redundant_field_names.stderr
@@ -1,57 +1,57 @@
error: redundant field names in struct initialization
--> $DIR/redundant_field_names.rs:26:9
--> $DIR/redundant_field_names.rs:34:9
|
26 | gender: gender,
34 | gender: gender,
| ^^^^^^^^^^^^^^ help: replace it with: `gender`
|
= note: `-D redundant-field-names` implied by `-D warnings`

error: redundant field names in struct initialization
--> $DIR/redundant_field_names.rs:27:9
--> $DIR/redundant_field_names.rs:35:9
|
27 | age: age,
35 | age: age,
| ^^^^^^^^ help: replace it with: `age`

error: redundant field names in struct initialization
--> $DIR/redundant_field_names.rs:45:25
--> $DIR/redundant_field_names.rs:53:25
|
45 | let _ = RangeFrom { start: start };
53 | let _ = RangeFrom { start: start };
| ^^^^^^^^^^^^ help: replace it with: `start`

error: redundant field names in struct initialization
--> $DIR/redundant_field_names.rs:46:23
--> $DIR/redundant_field_names.rs:54:23
|
46 | let _ = RangeTo { end: end };
54 | let _ = RangeTo { end: end };
| ^^^^^^^^ help: replace it with: `end`

error: redundant field names in struct initialization
--> $DIR/redundant_field_names.rs:47:21
--> $DIR/redundant_field_names.rs:55:21
|
47 | let _ = Range { start: start, end: end };
55 | let _ = Range { start: start, end: end };
| ^^^^^^^^^^^^ help: replace it with: `start`

error: redundant field names in struct initialization
--> $DIR/redundant_field_names.rs:47:35
--> $DIR/redundant_field_names.rs:55:35
|
47 | let _ = Range { start: start, end: end };
55 | let _ = Range { start: start, end: end };
| ^^^^^^^^ help: replace it with: `end`

error: redundant field names in struct initialization
--> $DIR/redundant_field_names.rs:48:30
--> $DIR/redundant_field_names.rs:56:30
|
48 | let _ = RangeInclusive { start: start, end: end };
56 | let _ = RangeInclusive { start: start, end: end };
| ^^^^^^^^^^^^ help: replace it with: `start`

error: redundant field names in struct initialization
--> $DIR/redundant_field_names.rs:48:44
--> $DIR/redundant_field_names.rs:56:44
|
48 | let _ = RangeInclusive { start: start, end: end };
56 | let _ = RangeInclusive { start: start, end: end };
| ^^^^^^^^ help: replace it with: `end`

error: redundant field names in struct initialization
--> $DIR/redundant_field_names.rs:49:32
--> $DIR/redundant_field_names.rs:57:32
|
49 | let _ = RangeToInclusive { end: end };
57 | let _ = RangeToInclusive { end: end };
| ^^^^^^^^ help: replace it with: `end`

error: aborting due to 9 previous errors
Expand Down

0 comments on commit ed769a3

Please sign in to comment.