Skip to content

Commit

Permalink
Add enough attrs to the test file so the fix compiles with no errors,…
Browse files Browse the repository at this point in the history
… fmt/`clippy`
  • Loading branch information
DevinR528 committed Jun 9, 2020
1 parent 288df59 commit e521a4e
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 18 deletions.
29 changes: 16 additions & 13 deletions clippy_lints/src/macro_use.rs
Original file line number Diff line number Diff line change
Expand Up @@ -164,34 +164,37 @@ impl<'l, 'txc> LateLintPass<'l, 'txc> for MacroUseImports {
let seg = import.split("::").collect::<Vec<_>>();

match seg.as_slice() {
[] => unreachable!("this should never be empty"),
[_] => unreachable!("path must have two segments ?"),
// an empty path is impossible
// a path should always consist of 2 or more segments
[] | [_] => return,
[root, item] => {
if !check_dup.contains(&(*item).to_string()) {
used.entry((root.to_string(), span))
.or_insert_with(|| vec![])
.push(item.to_string());
check_dup.push(item.to_string());
used.entry(((*root).to_string(), span))
.or_insert_with(Vec::new)
.push((*item).to_string());
check_dup.push((*item).to_string());
}
},
[root, rest @ ..] => {
if rest.iter().all(|item| !check_dup.contains(&(*item).to_string())) {
let filtered = rest
.iter()
.filter_map(|item| if check_dup.contains(&(*item).to_string()) {
None
} else {
Some(item.to_string())
.filter_map(|item| {
if check_dup.contains(&(*item).to_string()) {
None
} else {
Some((*item).to_string())
}
})
.collect::<Vec<_>>();
used.entry(((*root).to_string(), span))
.or_insert_with(|| vec![])
.or_insert_with(Vec::new)
.push(filtered.join("::"));
check_dup.extend(filtered);
} else {
let rest = rest.to_vec();
used.entry((root.to_string(), span))
.or_insert_with(|| vec![])
used.entry(((*root).to_string(), span))
.or_insert_with(Vec::new)
.push(rest.join("::"));
check_dup.extend(rest.iter().map(ToString::to_string));
}
Expand Down
2 changes: 2 additions & 0 deletions tests/ui/macro_use_imports.fixed
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@
// aux-build:macro_rules.rs
// aux-build:macro_use_helper.rs
// run-rustfix
// ignore-32bit

#![allow(unused_imports, unreachable_code, unused_variables, dead_code)]
#![allow(clippy::single_component_path_imports)]
#![warn(clippy::macro_use_imports)]

Expand Down
2 changes: 2 additions & 0 deletions tests/ui/macro_use_imports.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@
// aux-build:macro_rules.rs
// aux-build:macro_use_helper.rs
// run-rustfix
// ignore-32bit

#![allow(unused_imports, unreachable_code, unused_variables, dead_code)]
#![allow(clippy::single_component_path_imports)]
#![warn(clippy::macro_use_imports)]

Expand Down
10 changes: 5 additions & 5 deletions tests/ui/macro_use_imports.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,24 @@ error: `macro_use` attributes are no longer needed in the Rust 2018 edition
--> $DIR/macro_use_imports.rs:18:5
|
LL | #[macro_use]
| ^^^^^^^^^^^^ help: remove the attribute and import the macro directly, try: `use mini_mac::ClippyMiniMacroTest;`
| ^^^^^^^^^^^^ help: remove the attribute and import the macro directly, try: `use mac::{pub_macro, inner_mod_macro, function_macro, ty_macro, pub_in_private_macro};`
|
= note: `-D clippy::macro-use-imports` implied by `-D warnings`

error: `macro_use` attributes are no longer needed in the Rust 2018 edition
--> $DIR/macro_use_imports.rs:20:5
|
LL | #[macro_use]
| ^^^^^^^^^^^^ help: remove the attribute and import the macro directly, try: `use mac::{inner::foofoo, inner::try_err};`
| ^^^^^^^^^^^^ help: remove the attribute and import the macro directly, try: `use mini_mac::ClippyMiniMacroTest;`

error: `macro_use` attributes are no longer needed in the Rust 2018 edition
--> $DIR/macro_use_imports.rs:16:5
--> $DIR/macro_use_imports.rs:22:5
|
LL | #[macro_use]
| ^^^^^^^^^^^^ help: remove the attribute and import the macro directly, try: `use mac::{pub_macro, inner_mod_macro, function_macro, ty_macro, pub_in_private_macro};`
| ^^^^^^^^^^^^ help: remove the attribute and import the macro directly, try: `use mac::{inner::foofoo, inner::try_err};`

error: `macro_use` attributes are no longer needed in the Rust 2018 edition
--> $DIR/macro_use_imports.rs:22:5
--> $DIR/macro_use_imports.rs:24:5
|
LL | #[macro_use]
| ^^^^^^^^^^^^ help: remove the attribute and import the macro directly, try: `use mac::inner::nested::string_add;`
Expand Down

0 comments on commit e521a4e

Please sign in to comment.