From eaff0fc25bfe6f831038953ff5bd8fa2372dba22 Mon Sep 17 00:00:00 2001 From: Yuki Okushi Date: Fri, 30 Jul 2021 05:35:03 +0900 Subject: [PATCH 1/3] Add a hint that the expressions produce a value --- compiler/rustc_lint/src/unused.rs | 13 +++- src/test/ui/lint/fn_must_use.stderr | 8 ++- src/test/ui/lint/must-use-ops.stderr | 83 +++++++++++++++++++------- src/test/ui/lint/unused-borrows.stderr | 23 +++++-- src/test/ui/unused/issue-85913.rs | 13 ++++ src/test/ui/unused/issue-85913.stderr | 15 +++++ 6 files changed, 125 insertions(+), 30 deletions(-) create mode 100644 src/test/ui/unused/issue-85913.rs create mode 100644 src/test/ui/unused/issue-85913.stderr diff --git a/compiler/rustc_lint/src/unused.rs b/compiler/rustc_lint/src/unused.rs index c431c048ca0..5437174a683 100644 --- a/compiler/rustc_lint/src/unused.rs +++ b/compiler/rustc_lint/src/unused.rs @@ -161,7 +161,18 @@ impl<'tcx> LateLintPass<'tcx> for UnusedResults { if let Some(must_use_op) = must_use_op { cx.struct_span_lint(UNUSED_MUST_USE, expr.span, |lint| { - lint.build(&format!("unused {} that must be used", must_use_op)).emit() + let mut lint = lint.build(&format!("unused {} that must be used", must_use_op)); + lint.note(&format!("the {} produces a value", must_use_op)); + if let Ok(snippet) = cx.sess().source_map().span_to_snippet(expr.span) { + lint.span_suggestion( + expr.span, + "use `let _ = ...` to ignore it", + format!("let _ = {}", snippet), + Applicability::MachineApplicable, + ) + .emit() + } + lint.emit(); }); op_warned = true; } diff --git a/src/test/ui/lint/fn_must_use.stderr b/src/test/ui/lint/fn_must_use.stderr index d6b1cf3ae1f..75a22823329 100644 --- a/src/test/ui/lint/fn_must_use.stderr +++ b/src/test/ui/lint/fn_must_use.stderr @@ -47,13 +47,17 @@ warning: unused comparison that must be used --> $DIR/fn_must_use.rs:74:5 | LL | 2 == 3; - | ^^^^^^ + | ^^^^^^ help: use `let _ = ...` to ignore it: `let _ = 2 == 3` + | + = note: the comparison produces a value warning: unused comparison that must be used --> $DIR/fn_must_use.rs:75:5 | LL | m == n; - | ^^^^^^ + | ^^^^^^ help: use `let _ = ...` to ignore it: `let _ = m == n` + | + = note: the comparison produces a value warning: 8 warnings emitted diff --git a/src/test/ui/lint/must-use-ops.stderr b/src/test/ui/lint/must-use-ops.stderr index 3fb80f7e798..73405d02a2e 100644 --- a/src/test/ui/lint/must-use-ops.stderr +++ b/src/test/ui/lint/must-use-ops.stderr @@ -2,133 +2,174 @@ warning: unused comparison that must be used --> $DIR/must-use-ops.rs:12:5 | LL | val == 1; - | ^^^^^^^^ + | ^^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = val == 1` | note: the lint level is defined here --> $DIR/must-use-ops.rs:5:9 | LL | #![warn(unused_must_use)] | ^^^^^^^^^^^^^^^ + = note: the comparison produces a value warning: unused comparison that must be used --> $DIR/must-use-ops.rs:13:5 | LL | val < 1; - | ^^^^^^^ + | ^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = val < 1` + | + = note: the comparison produces a value warning: unused comparison that must be used --> $DIR/must-use-ops.rs:14:5 | LL | val <= 1; - | ^^^^^^^^ + | ^^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = val <= 1` + | + = note: the comparison produces a value warning: unused comparison that must be used --> $DIR/must-use-ops.rs:15:5 | LL | val != 1; - | ^^^^^^^^ + | ^^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = val != 1` + | + = note: the comparison produces a value warning: unused comparison that must be used --> $DIR/must-use-ops.rs:16:5 | LL | val >= 1; - | ^^^^^^^^ + | ^^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = val >= 1` + | + = note: the comparison produces a value warning: unused comparison that must be used --> $DIR/must-use-ops.rs:17:5 | LL | val > 1; - | ^^^^^^^ + | ^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = val > 1` + | + = note: the comparison produces a value warning: unused arithmetic operation that must be used --> $DIR/must-use-ops.rs:20:5 | LL | val + 2; - | ^^^^^^^ + | ^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = val + 2` + | + = note: the arithmetic operation produces a value warning: unused arithmetic operation that must be used --> $DIR/must-use-ops.rs:21:5 | LL | val - 2; - | ^^^^^^^ + | ^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = val - 2` + | + = note: the arithmetic operation produces a value warning: unused arithmetic operation that must be used --> $DIR/must-use-ops.rs:22:5 | LL | val / 2; - | ^^^^^^^ + | ^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = val / 2` + | + = note: the arithmetic operation produces a value warning: unused arithmetic operation that must be used --> $DIR/must-use-ops.rs:23:5 | LL | val * 2; - | ^^^^^^^ + | ^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = val * 2` + | + = note: the arithmetic operation produces a value warning: unused arithmetic operation that must be used --> $DIR/must-use-ops.rs:24:5 | LL | val % 2; - | ^^^^^^^ + | ^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = val % 2` + | + = note: the arithmetic operation produces a value warning: unused logical operation that must be used --> $DIR/must-use-ops.rs:27:5 | LL | true && true; - | ^^^^^^^^^^^^ + | ^^^^^^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = true && true` + | + = note: the logical operation produces a value warning: unused logical operation that must be used --> $DIR/must-use-ops.rs:28:5 | LL | false || true; - | ^^^^^^^^^^^^^ + | ^^^^^^^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = false || true` + | + = note: the logical operation produces a value warning: unused bitwise operation that must be used --> $DIR/must-use-ops.rs:31:5 | LL | 5 ^ val; - | ^^^^^^^ + | ^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = 5 ^ val` + | + = note: the bitwise operation produces a value warning: unused bitwise operation that must be used --> $DIR/must-use-ops.rs:32:5 | LL | 5 & val; - | ^^^^^^^ + | ^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = 5 & val` + | + = note: the bitwise operation produces a value warning: unused bitwise operation that must be used --> $DIR/must-use-ops.rs:33:5 | LL | 5 | val; - | ^^^^^^^ + | ^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = 5 | val` + | + = note: the bitwise operation produces a value warning: unused bitwise operation that must be used --> $DIR/must-use-ops.rs:34:5 | LL | 5 << val; - | ^^^^^^^^ + | ^^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = 5 << val` + | + = note: the bitwise operation produces a value warning: unused bitwise operation that must be used --> $DIR/must-use-ops.rs:35:5 | LL | 5 >> val; - | ^^^^^^^^ + | ^^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = 5 >> val` + | + = note: the bitwise operation produces a value warning: unused unary operation that must be used --> $DIR/must-use-ops.rs:38:5 | LL | !val; - | ^^^^ + | ^^^^ help: use `let _ = ...` to ignore it: `let _ = !val` + | + = note: the unary operation produces a value warning: unused unary operation that must be used --> $DIR/must-use-ops.rs:39:5 | LL | -val; - | ^^^^ + | ^^^^ help: use `let _ = ...` to ignore it: `let _ = -val` + | + = note: the unary operation produces a value warning: unused unary operation that must be used --> $DIR/must-use-ops.rs:40:5 | LL | *val_pointer; - | ^^^^^^^^^^^^ + | ^^^^^^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = *val_pointer` + | + = note: the unary operation produces a value warning: 21 warnings emitted diff --git a/src/test/ui/lint/unused-borrows.stderr b/src/test/ui/lint/unused-borrows.stderr index 24899fe992b..459381b642c 100644 --- a/src/test/ui/lint/unused-borrows.stderr +++ b/src/test/ui/lint/unused-borrows.stderr @@ -2,43 +2,54 @@ error: unused borrow that must be used --> $DIR/unused-borrows.rs:6:5 | LL | &42; - | ^^^ + | ^^^ help: use `let _ = ...` to ignore it: `let _ = &42` | note: the lint level is defined here --> $DIR/unused-borrows.rs:1:9 | LL | #![deny(unused_must_use)] | ^^^^^^^^^^^^^^^ + = note: the borrow produces a value error: unused borrow that must be used --> $DIR/unused-borrows.rs:9:5 | LL | &mut foo(42); - | ^^^^^^^^^^^^ + | ^^^^^^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = &mut foo(42)` + | + = note: the borrow produces a value error: unused borrow that must be used --> $DIR/unused-borrows.rs:12:5 | LL | &&42; - | ^^^^ + | ^^^^ help: use `let _ = ...` to ignore it: `let _ = &&42` + | + = note: the borrow produces a value error: unused borrow that must be used --> $DIR/unused-borrows.rs:15:5 | LL | &&mut 42; - | ^^^^^^^^ + | ^^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = &&mut 42` + | + = note: the borrow produces a value error: unused borrow that must be used --> $DIR/unused-borrows.rs:18:5 | LL | &mut &42; - | ^^^^^^^^ + | ^^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = &mut &42` + | + = note: the borrow produces a value error: unused borrow that must be used --> $DIR/unused-borrows.rs:23:5 | LL | && foo(42); - | ^^^^^^^^^^ + | ^^^^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = && foo(42)` + | + = note: the borrow produces a value error: aborting due to 6 previous errors diff --git a/src/test/ui/unused/issue-85913.rs b/src/test/ui/unused/issue-85913.rs new file mode 100644 index 00000000000..7f3817b6ef1 --- /dev/null +++ b/src/test/ui/unused/issue-85913.rs @@ -0,0 +1,13 @@ +#![deny(unused_must_use)] + +pub fn fun() -> i32 { + function() && return 1; + //~^ ERROR: unused logical operation that must be used + return 0; +} + +fn function() -> bool { + true +} + +fn main() {} diff --git a/src/test/ui/unused/issue-85913.stderr b/src/test/ui/unused/issue-85913.stderr new file mode 100644 index 00000000000..d5d99f0f7d3 --- /dev/null +++ b/src/test/ui/unused/issue-85913.stderr @@ -0,0 +1,15 @@ +error: unused logical operation that must be used + --> $DIR/issue-85913.rs:4:5 + | +LL | function() && return 1; + | ^^^^^^^^^^^^^^^^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = function() && return 1` + | +note: the lint level is defined here + --> $DIR/issue-85913.rs:1:9 + | +LL | #![deny(unused_must_use)] + | ^^^^^^^^^^^^^^^ + = note: the logical operation produces a value + +error: aborting due to previous error + From f3c59a8df68fb0d1c40a6788e34b765c29e9cbd0 Mon Sep 17 00:00:00 2001 From: Yuki Okushi Date: Fri, 30 Jul 2021 05:41:10 +0900 Subject: [PATCH 2/3] Move the `unused` dir to `lint`s subdir --- .../ui/lint/{ => unused}/auxiliary/lint_unused_extern_crate.rs | 0 .../ui/lint/{ => unused}/auxiliary/lint_unused_extern_crate2.rs | 0 .../ui/lint/{ => unused}/auxiliary/lint_unused_extern_crate3.rs | 0 .../ui/lint/{ => unused}/auxiliary/lint_unused_extern_crate4.rs | 0 .../ui/lint/{ => unused}/auxiliary/lint_unused_extern_crate5.rs | 0 src/test/ui/{ => lint}/unused/issue-30730.rs | 0 src/test/ui/{ => lint}/unused/issue-30730.stderr | 0 src/test/ui/{ => lint}/unused/issue-46576.rs | 0 src/test/ui/{ => lint}/unused/issue-46576.stderr | 0 .../{ => unused}/issue-47390-unused-variable-in-struct-pattern.rs | 0 .../issue-47390-unused-variable-in-struct-pattern.stderr | 0 src/test/ui/lint/{ => unused}/issue-54180-unused-ref-field.fixed | 0 src/test/ui/lint/{ => unused}/issue-54180-unused-ref-field.rs | 0 src/test/ui/lint/{ => unused}/issue-54180-unused-ref-field.stderr | 0 .../ui/lint/{ => unused}/issue-54538-unused-parens-lint.fixed | 0 src/test/ui/lint/{ => unused}/issue-54538-unused-parens-lint.rs | 0 .../ui/lint/{ => unused}/issue-54538-unused-parens-lint.stderr | 0 src/test/ui/{ => lint}/unused/issue-59896.rs | 0 src/test/ui/{ => lint}/unused/issue-59896.stderr | 0 .../lint/{ => unused}/issue-67691-unused-field-in-or-pattern.rs | 0 .../{ => unused}/issue-67691-unused-field-in-or-pattern.stderr | 0 src/test/ui/{ => lint}/unused/issue-70041.rs | 0 src/test/ui/{ => lint}/unused/issue-70041.stderr | 0 src/test/ui/lint/{ => unused}/issue-71290-unused-paren-binop.rs | 0 .../ui/lint/{ => unused}/issue-74883-unused-paren-baren-yield.rs | 0 .../lint/{ => unused}/issue-74883-unused-paren-baren-yield.stderr | 0 src/test/ui/lint/{ => unused}/issue-81314-unused-span-ident.fixed | 0 src/test/ui/lint/{ => unused}/issue-81314-unused-span-ident.rs | 0 .../ui/lint/{ => unused}/issue-81314-unused-span-ident.stderr | 0 src/test/ui/{ => lint}/unused/issue-85913.rs | 0 src/test/ui/{ => lint}/unused/issue-85913.stderr | 0 src/test/ui/lint/{ => unused}/lint-unused-extern-crate.rs | 0 src/test/ui/lint/{ => unused}/lint-unused-extern-crate.stderr | 0 src/test/ui/lint/{ => unused}/lint-unused-imports.rs | 0 src/test/ui/lint/{ => unused}/lint-unused-imports.stderr | 0 src/test/ui/lint/{ => unused}/lint-unused-mut-self.fixed | 0 src/test/ui/lint/{ => unused}/lint-unused-mut-self.rs | 0 src/test/ui/lint/{ => unused}/lint-unused-mut-self.stderr | 0 src/test/ui/lint/{ => unused}/lint-unused-mut-variables.rs | 0 src/test/ui/lint/{ => unused}/lint-unused-mut-variables.stderr | 0 src/test/ui/lint/{ => unused}/lint-unused-variables.rs | 0 src/test/ui/lint/{ => unused}/lint-unused-variables.stderr | 0 src/test/ui/lint/{ => unused}/must-use-ops.rs | 0 src/test/ui/lint/{ => unused}/must-use-ops.stderr | 0 src/test/ui/lint/{ => unused}/must_use-array.rs | 0 src/test/ui/lint/{ => unused}/must_use-array.stderr | 0 src/test/ui/lint/{ => unused}/must_use-in-stdlib-traits.rs | 0 src/test/ui/lint/{ => unused}/must_use-in-stdlib-traits.stderr | 0 src/test/ui/lint/{ => unused}/must_use-trait.rs | 0 src/test/ui/lint/{ => unused}/must_use-trait.stderr | 0 src/test/ui/lint/{ => unused}/must_use-tuple.rs | 0 src/test/ui/lint/{ => unused}/must_use-tuple.stderr | 0 src/test/ui/lint/{ => unused}/must_use-unit.rs | 0 src/test/ui/lint/{ => unused}/must_use-unit.stderr | 0 src/test/ui/lint/{ => unused}/no-unused-parens-return-block.rs | 0 src/test/ui/{ => lint}/unused/unused-attr-macro-rules.rs | 0 src/test/ui/{ => lint}/unused/unused-attr-macro-rules.stderr | 0 src/test/ui/{ => lint}/unused/unused-attr.rs | 0 src/test/ui/{ => lint}/unused/unused-attr.stderr | 0 src/test/ui/{ => lint}/unused/unused-closure.rs | 0 src/test/ui/{ => lint}/unused/unused-closure.stderr | 0 src/test/ui/{ => lint}/unused/unused-doc-comments-edge-cases.rs | 0 .../ui/{ => lint}/unused/unused-doc-comments-edge-cases.stderr | 0 src/test/ui/{ => lint}/unused/unused-doc-comments-for-macros.rs | 0 .../ui/{ => lint}/unused/unused-doc-comments-for-macros.stderr | 0 src/test/ui/{ => lint}/unused/unused-macro-rules.rs | 0 src/test/ui/{ => lint}/unused/unused-macro-rules.stderr | 0 src/test/ui/{ => lint}/unused/unused-macro-with-bad-frag-spec.rs | 0 .../ui/{ => lint}/unused/unused-macro-with-bad-frag-spec.stderr | 0 .../ui/{ => lint}/unused/unused-macro-with-follow-violation.rs | 0 .../{ => lint}/unused/unused-macro-with-follow-violation.stderr | 0 src/test/ui/{ => lint}/unused/unused-macro.rs | 0 src/test/ui/{ => lint}/unused/unused-macro.stderr | 0 .../ui/{ => lint}/unused/unused-mut-warning-captured-var.fixed | 0 src/test/ui/{ => lint}/unused/unused-mut-warning-captured-var.rs | 0 .../ui/{ => lint}/unused/unused-mut-warning-captured-var.stderr | 0 src/test/ui/{ => lint}/unused/unused-result.rs | 0 src/test/ui/{ => lint}/unused/unused-result.stderr | 0 src/test/ui/{ => lint}/unused/useless-comment.rs | 0 src/test/ui/{ => lint}/unused/useless-comment.stderr | 0 80 files changed, 0 insertions(+), 0 deletions(-) rename src/test/ui/lint/{ => unused}/auxiliary/lint_unused_extern_crate.rs (100%) rename src/test/ui/lint/{ => unused}/auxiliary/lint_unused_extern_crate2.rs (100%) rename src/test/ui/lint/{ => unused}/auxiliary/lint_unused_extern_crate3.rs (100%) rename src/test/ui/lint/{ => unused}/auxiliary/lint_unused_extern_crate4.rs (100%) rename src/test/ui/lint/{ => unused}/auxiliary/lint_unused_extern_crate5.rs (100%) rename src/test/ui/{ => lint}/unused/issue-30730.rs (100%) rename src/test/ui/{ => lint}/unused/issue-30730.stderr (100%) rename src/test/ui/{ => lint}/unused/issue-46576.rs (100%) rename src/test/ui/{ => lint}/unused/issue-46576.stderr (100%) rename src/test/ui/lint/{ => unused}/issue-47390-unused-variable-in-struct-pattern.rs (100%) rename src/test/ui/lint/{ => unused}/issue-47390-unused-variable-in-struct-pattern.stderr (100%) rename src/test/ui/lint/{ => unused}/issue-54180-unused-ref-field.fixed (100%) rename src/test/ui/lint/{ => unused}/issue-54180-unused-ref-field.rs (100%) rename src/test/ui/lint/{ => unused}/issue-54180-unused-ref-field.stderr (100%) rename src/test/ui/lint/{ => unused}/issue-54538-unused-parens-lint.fixed (100%) rename src/test/ui/lint/{ => unused}/issue-54538-unused-parens-lint.rs (100%) rename src/test/ui/lint/{ => unused}/issue-54538-unused-parens-lint.stderr (100%) rename src/test/ui/{ => lint}/unused/issue-59896.rs (100%) rename src/test/ui/{ => lint}/unused/issue-59896.stderr (100%) rename src/test/ui/lint/{ => unused}/issue-67691-unused-field-in-or-pattern.rs (100%) rename src/test/ui/lint/{ => unused}/issue-67691-unused-field-in-or-pattern.stderr (100%) rename src/test/ui/{ => lint}/unused/issue-70041.rs (100%) rename src/test/ui/{ => lint}/unused/issue-70041.stderr (100%) rename src/test/ui/lint/{ => unused}/issue-71290-unused-paren-binop.rs (100%) rename src/test/ui/lint/{ => unused}/issue-74883-unused-paren-baren-yield.rs (100%) rename src/test/ui/lint/{ => unused}/issue-74883-unused-paren-baren-yield.stderr (100%) rename src/test/ui/lint/{ => unused}/issue-81314-unused-span-ident.fixed (100%) rename src/test/ui/lint/{ => unused}/issue-81314-unused-span-ident.rs (100%) rename src/test/ui/lint/{ => unused}/issue-81314-unused-span-ident.stderr (100%) rename src/test/ui/{ => lint}/unused/issue-85913.rs (100%) rename src/test/ui/{ => lint}/unused/issue-85913.stderr (100%) rename src/test/ui/lint/{ => unused}/lint-unused-extern-crate.rs (100%) rename src/test/ui/lint/{ => unused}/lint-unused-extern-crate.stderr (100%) rename src/test/ui/lint/{ => unused}/lint-unused-imports.rs (100%) rename src/test/ui/lint/{ => unused}/lint-unused-imports.stderr (100%) rename src/test/ui/lint/{ => unused}/lint-unused-mut-self.fixed (100%) rename src/test/ui/lint/{ => unused}/lint-unused-mut-self.rs (100%) rename src/test/ui/lint/{ => unused}/lint-unused-mut-self.stderr (100%) rename src/test/ui/lint/{ => unused}/lint-unused-mut-variables.rs (100%) rename src/test/ui/lint/{ => unused}/lint-unused-mut-variables.stderr (100%) rename src/test/ui/lint/{ => unused}/lint-unused-variables.rs (100%) rename src/test/ui/lint/{ => unused}/lint-unused-variables.stderr (100%) rename src/test/ui/lint/{ => unused}/must-use-ops.rs (100%) rename src/test/ui/lint/{ => unused}/must-use-ops.stderr (100%) rename src/test/ui/lint/{ => unused}/must_use-array.rs (100%) rename src/test/ui/lint/{ => unused}/must_use-array.stderr (100%) rename src/test/ui/lint/{ => unused}/must_use-in-stdlib-traits.rs (100%) rename src/test/ui/lint/{ => unused}/must_use-in-stdlib-traits.stderr (100%) rename src/test/ui/lint/{ => unused}/must_use-trait.rs (100%) rename src/test/ui/lint/{ => unused}/must_use-trait.stderr (100%) rename src/test/ui/lint/{ => unused}/must_use-tuple.rs (100%) rename src/test/ui/lint/{ => unused}/must_use-tuple.stderr (100%) rename src/test/ui/lint/{ => unused}/must_use-unit.rs (100%) rename src/test/ui/lint/{ => unused}/must_use-unit.stderr (100%) rename src/test/ui/lint/{ => unused}/no-unused-parens-return-block.rs (100%) rename src/test/ui/{ => lint}/unused/unused-attr-macro-rules.rs (100%) rename src/test/ui/{ => lint}/unused/unused-attr-macro-rules.stderr (100%) rename src/test/ui/{ => lint}/unused/unused-attr.rs (100%) rename src/test/ui/{ => lint}/unused/unused-attr.stderr (100%) rename src/test/ui/{ => lint}/unused/unused-closure.rs (100%) rename src/test/ui/{ => lint}/unused/unused-closure.stderr (100%) rename src/test/ui/{ => lint}/unused/unused-doc-comments-edge-cases.rs (100%) rename src/test/ui/{ => lint}/unused/unused-doc-comments-edge-cases.stderr (100%) rename src/test/ui/{ => lint}/unused/unused-doc-comments-for-macros.rs (100%) rename src/test/ui/{ => lint}/unused/unused-doc-comments-for-macros.stderr (100%) rename src/test/ui/{ => lint}/unused/unused-macro-rules.rs (100%) rename src/test/ui/{ => lint}/unused/unused-macro-rules.stderr (100%) rename src/test/ui/{ => lint}/unused/unused-macro-with-bad-frag-spec.rs (100%) rename src/test/ui/{ => lint}/unused/unused-macro-with-bad-frag-spec.stderr (100%) rename src/test/ui/{ => lint}/unused/unused-macro-with-follow-violation.rs (100%) rename src/test/ui/{ => lint}/unused/unused-macro-with-follow-violation.stderr (100%) rename src/test/ui/{ => lint}/unused/unused-macro.rs (100%) rename src/test/ui/{ => lint}/unused/unused-macro.stderr (100%) rename src/test/ui/{ => lint}/unused/unused-mut-warning-captured-var.fixed (100%) rename src/test/ui/{ => lint}/unused/unused-mut-warning-captured-var.rs (100%) rename src/test/ui/{ => lint}/unused/unused-mut-warning-captured-var.stderr (100%) rename src/test/ui/{ => lint}/unused/unused-result.rs (100%) rename src/test/ui/{ => lint}/unused/unused-result.stderr (100%) rename src/test/ui/{ => lint}/unused/useless-comment.rs (100%) rename src/test/ui/{ => lint}/unused/useless-comment.stderr (100%) diff --git a/src/test/ui/lint/auxiliary/lint_unused_extern_crate.rs b/src/test/ui/lint/unused/auxiliary/lint_unused_extern_crate.rs similarity index 100% rename from src/test/ui/lint/auxiliary/lint_unused_extern_crate.rs rename to src/test/ui/lint/unused/auxiliary/lint_unused_extern_crate.rs diff --git a/src/test/ui/lint/auxiliary/lint_unused_extern_crate2.rs b/src/test/ui/lint/unused/auxiliary/lint_unused_extern_crate2.rs similarity index 100% rename from src/test/ui/lint/auxiliary/lint_unused_extern_crate2.rs rename to src/test/ui/lint/unused/auxiliary/lint_unused_extern_crate2.rs diff --git a/src/test/ui/lint/auxiliary/lint_unused_extern_crate3.rs b/src/test/ui/lint/unused/auxiliary/lint_unused_extern_crate3.rs similarity index 100% rename from src/test/ui/lint/auxiliary/lint_unused_extern_crate3.rs rename to src/test/ui/lint/unused/auxiliary/lint_unused_extern_crate3.rs diff --git a/src/test/ui/lint/auxiliary/lint_unused_extern_crate4.rs b/src/test/ui/lint/unused/auxiliary/lint_unused_extern_crate4.rs similarity index 100% rename from src/test/ui/lint/auxiliary/lint_unused_extern_crate4.rs rename to src/test/ui/lint/unused/auxiliary/lint_unused_extern_crate4.rs diff --git a/src/test/ui/lint/auxiliary/lint_unused_extern_crate5.rs b/src/test/ui/lint/unused/auxiliary/lint_unused_extern_crate5.rs similarity index 100% rename from src/test/ui/lint/auxiliary/lint_unused_extern_crate5.rs rename to src/test/ui/lint/unused/auxiliary/lint_unused_extern_crate5.rs diff --git a/src/test/ui/unused/issue-30730.rs b/src/test/ui/lint/unused/issue-30730.rs similarity index 100% rename from src/test/ui/unused/issue-30730.rs rename to src/test/ui/lint/unused/issue-30730.rs diff --git a/src/test/ui/unused/issue-30730.stderr b/src/test/ui/lint/unused/issue-30730.stderr similarity index 100% rename from src/test/ui/unused/issue-30730.stderr rename to src/test/ui/lint/unused/issue-30730.stderr diff --git a/src/test/ui/unused/issue-46576.rs b/src/test/ui/lint/unused/issue-46576.rs similarity index 100% rename from src/test/ui/unused/issue-46576.rs rename to src/test/ui/lint/unused/issue-46576.rs diff --git a/src/test/ui/unused/issue-46576.stderr b/src/test/ui/lint/unused/issue-46576.stderr similarity index 100% rename from src/test/ui/unused/issue-46576.stderr rename to src/test/ui/lint/unused/issue-46576.stderr diff --git a/src/test/ui/lint/issue-47390-unused-variable-in-struct-pattern.rs b/src/test/ui/lint/unused/issue-47390-unused-variable-in-struct-pattern.rs similarity index 100% rename from src/test/ui/lint/issue-47390-unused-variable-in-struct-pattern.rs rename to src/test/ui/lint/unused/issue-47390-unused-variable-in-struct-pattern.rs diff --git a/src/test/ui/lint/issue-47390-unused-variable-in-struct-pattern.stderr b/src/test/ui/lint/unused/issue-47390-unused-variable-in-struct-pattern.stderr similarity index 100% rename from src/test/ui/lint/issue-47390-unused-variable-in-struct-pattern.stderr rename to src/test/ui/lint/unused/issue-47390-unused-variable-in-struct-pattern.stderr diff --git a/src/test/ui/lint/issue-54180-unused-ref-field.fixed b/src/test/ui/lint/unused/issue-54180-unused-ref-field.fixed similarity index 100% rename from src/test/ui/lint/issue-54180-unused-ref-field.fixed rename to src/test/ui/lint/unused/issue-54180-unused-ref-field.fixed diff --git a/src/test/ui/lint/issue-54180-unused-ref-field.rs b/src/test/ui/lint/unused/issue-54180-unused-ref-field.rs similarity index 100% rename from src/test/ui/lint/issue-54180-unused-ref-field.rs rename to src/test/ui/lint/unused/issue-54180-unused-ref-field.rs diff --git a/src/test/ui/lint/issue-54180-unused-ref-field.stderr b/src/test/ui/lint/unused/issue-54180-unused-ref-field.stderr similarity index 100% rename from src/test/ui/lint/issue-54180-unused-ref-field.stderr rename to src/test/ui/lint/unused/issue-54180-unused-ref-field.stderr diff --git a/src/test/ui/lint/issue-54538-unused-parens-lint.fixed b/src/test/ui/lint/unused/issue-54538-unused-parens-lint.fixed similarity index 100% rename from src/test/ui/lint/issue-54538-unused-parens-lint.fixed rename to src/test/ui/lint/unused/issue-54538-unused-parens-lint.fixed diff --git a/src/test/ui/lint/issue-54538-unused-parens-lint.rs b/src/test/ui/lint/unused/issue-54538-unused-parens-lint.rs similarity index 100% rename from src/test/ui/lint/issue-54538-unused-parens-lint.rs rename to src/test/ui/lint/unused/issue-54538-unused-parens-lint.rs diff --git a/src/test/ui/lint/issue-54538-unused-parens-lint.stderr b/src/test/ui/lint/unused/issue-54538-unused-parens-lint.stderr similarity index 100% rename from src/test/ui/lint/issue-54538-unused-parens-lint.stderr rename to src/test/ui/lint/unused/issue-54538-unused-parens-lint.stderr diff --git a/src/test/ui/unused/issue-59896.rs b/src/test/ui/lint/unused/issue-59896.rs similarity index 100% rename from src/test/ui/unused/issue-59896.rs rename to src/test/ui/lint/unused/issue-59896.rs diff --git a/src/test/ui/unused/issue-59896.stderr b/src/test/ui/lint/unused/issue-59896.stderr similarity index 100% rename from src/test/ui/unused/issue-59896.stderr rename to src/test/ui/lint/unused/issue-59896.stderr diff --git a/src/test/ui/lint/issue-67691-unused-field-in-or-pattern.rs b/src/test/ui/lint/unused/issue-67691-unused-field-in-or-pattern.rs similarity index 100% rename from src/test/ui/lint/issue-67691-unused-field-in-or-pattern.rs rename to src/test/ui/lint/unused/issue-67691-unused-field-in-or-pattern.rs diff --git a/src/test/ui/lint/issue-67691-unused-field-in-or-pattern.stderr b/src/test/ui/lint/unused/issue-67691-unused-field-in-or-pattern.stderr similarity index 100% rename from src/test/ui/lint/issue-67691-unused-field-in-or-pattern.stderr rename to src/test/ui/lint/unused/issue-67691-unused-field-in-or-pattern.stderr diff --git a/src/test/ui/unused/issue-70041.rs b/src/test/ui/lint/unused/issue-70041.rs similarity index 100% rename from src/test/ui/unused/issue-70041.rs rename to src/test/ui/lint/unused/issue-70041.rs diff --git a/src/test/ui/unused/issue-70041.stderr b/src/test/ui/lint/unused/issue-70041.stderr similarity index 100% rename from src/test/ui/unused/issue-70041.stderr rename to src/test/ui/lint/unused/issue-70041.stderr diff --git a/src/test/ui/lint/issue-71290-unused-paren-binop.rs b/src/test/ui/lint/unused/issue-71290-unused-paren-binop.rs similarity index 100% rename from src/test/ui/lint/issue-71290-unused-paren-binop.rs rename to src/test/ui/lint/unused/issue-71290-unused-paren-binop.rs diff --git a/src/test/ui/lint/issue-74883-unused-paren-baren-yield.rs b/src/test/ui/lint/unused/issue-74883-unused-paren-baren-yield.rs similarity index 100% rename from src/test/ui/lint/issue-74883-unused-paren-baren-yield.rs rename to src/test/ui/lint/unused/issue-74883-unused-paren-baren-yield.rs diff --git a/src/test/ui/lint/issue-74883-unused-paren-baren-yield.stderr b/src/test/ui/lint/unused/issue-74883-unused-paren-baren-yield.stderr similarity index 100% rename from src/test/ui/lint/issue-74883-unused-paren-baren-yield.stderr rename to src/test/ui/lint/unused/issue-74883-unused-paren-baren-yield.stderr diff --git a/src/test/ui/lint/issue-81314-unused-span-ident.fixed b/src/test/ui/lint/unused/issue-81314-unused-span-ident.fixed similarity index 100% rename from src/test/ui/lint/issue-81314-unused-span-ident.fixed rename to src/test/ui/lint/unused/issue-81314-unused-span-ident.fixed diff --git a/src/test/ui/lint/issue-81314-unused-span-ident.rs b/src/test/ui/lint/unused/issue-81314-unused-span-ident.rs similarity index 100% rename from src/test/ui/lint/issue-81314-unused-span-ident.rs rename to src/test/ui/lint/unused/issue-81314-unused-span-ident.rs diff --git a/src/test/ui/lint/issue-81314-unused-span-ident.stderr b/src/test/ui/lint/unused/issue-81314-unused-span-ident.stderr similarity index 100% rename from src/test/ui/lint/issue-81314-unused-span-ident.stderr rename to src/test/ui/lint/unused/issue-81314-unused-span-ident.stderr diff --git a/src/test/ui/unused/issue-85913.rs b/src/test/ui/lint/unused/issue-85913.rs similarity index 100% rename from src/test/ui/unused/issue-85913.rs rename to src/test/ui/lint/unused/issue-85913.rs diff --git a/src/test/ui/unused/issue-85913.stderr b/src/test/ui/lint/unused/issue-85913.stderr similarity index 100% rename from src/test/ui/unused/issue-85913.stderr rename to src/test/ui/lint/unused/issue-85913.stderr diff --git a/src/test/ui/lint/lint-unused-extern-crate.rs b/src/test/ui/lint/unused/lint-unused-extern-crate.rs similarity index 100% rename from src/test/ui/lint/lint-unused-extern-crate.rs rename to src/test/ui/lint/unused/lint-unused-extern-crate.rs diff --git a/src/test/ui/lint/lint-unused-extern-crate.stderr b/src/test/ui/lint/unused/lint-unused-extern-crate.stderr similarity index 100% rename from src/test/ui/lint/lint-unused-extern-crate.stderr rename to src/test/ui/lint/unused/lint-unused-extern-crate.stderr diff --git a/src/test/ui/lint/lint-unused-imports.rs b/src/test/ui/lint/unused/lint-unused-imports.rs similarity index 100% rename from src/test/ui/lint/lint-unused-imports.rs rename to src/test/ui/lint/unused/lint-unused-imports.rs diff --git a/src/test/ui/lint/lint-unused-imports.stderr b/src/test/ui/lint/unused/lint-unused-imports.stderr similarity index 100% rename from src/test/ui/lint/lint-unused-imports.stderr rename to src/test/ui/lint/unused/lint-unused-imports.stderr diff --git a/src/test/ui/lint/lint-unused-mut-self.fixed b/src/test/ui/lint/unused/lint-unused-mut-self.fixed similarity index 100% rename from src/test/ui/lint/lint-unused-mut-self.fixed rename to src/test/ui/lint/unused/lint-unused-mut-self.fixed diff --git a/src/test/ui/lint/lint-unused-mut-self.rs b/src/test/ui/lint/unused/lint-unused-mut-self.rs similarity index 100% rename from src/test/ui/lint/lint-unused-mut-self.rs rename to src/test/ui/lint/unused/lint-unused-mut-self.rs diff --git a/src/test/ui/lint/lint-unused-mut-self.stderr b/src/test/ui/lint/unused/lint-unused-mut-self.stderr similarity index 100% rename from src/test/ui/lint/lint-unused-mut-self.stderr rename to src/test/ui/lint/unused/lint-unused-mut-self.stderr diff --git a/src/test/ui/lint/lint-unused-mut-variables.rs b/src/test/ui/lint/unused/lint-unused-mut-variables.rs similarity index 100% rename from src/test/ui/lint/lint-unused-mut-variables.rs rename to src/test/ui/lint/unused/lint-unused-mut-variables.rs diff --git a/src/test/ui/lint/lint-unused-mut-variables.stderr b/src/test/ui/lint/unused/lint-unused-mut-variables.stderr similarity index 100% rename from src/test/ui/lint/lint-unused-mut-variables.stderr rename to src/test/ui/lint/unused/lint-unused-mut-variables.stderr diff --git a/src/test/ui/lint/lint-unused-variables.rs b/src/test/ui/lint/unused/lint-unused-variables.rs similarity index 100% rename from src/test/ui/lint/lint-unused-variables.rs rename to src/test/ui/lint/unused/lint-unused-variables.rs diff --git a/src/test/ui/lint/lint-unused-variables.stderr b/src/test/ui/lint/unused/lint-unused-variables.stderr similarity index 100% rename from src/test/ui/lint/lint-unused-variables.stderr rename to src/test/ui/lint/unused/lint-unused-variables.stderr diff --git a/src/test/ui/lint/must-use-ops.rs b/src/test/ui/lint/unused/must-use-ops.rs similarity index 100% rename from src/test/ui/lint/must-use-ops.rs rename to src/test/ui/lint/unused/must-use-ops.rs diff --git a/src/test/ui/lint/must-use-ops.stderr b/src/test/ui/lint/unused/must-use-ops.stderr similarity index 100% rename from src/test/ui/lint/must-use-ops.stderr rename to src/test/ui/lint/unused/must-use-ops.stderr diff --git a/src/test/ui/lint/must_use-array.rs b/src/test/ui/lint/unused/must_use-array.rs similarity index 100% rename from src/test/ui/lint/must_use-array.rs rename to src/test/ui/lint/unused/must_use-array.rs diff --git a/src/test/ui/lint/must_use-array.stderr b/src/test/ui/lint/unused/must_use-array.stderr similarity index 100% rename from src/test/ui/lint/must_use-array.stderr rename to src/test/ui/lint/unused/must_use-array.stderr diff --git a/src/test/ui/lint/must_use-in-stdlib-traits.rs b/src/test/ui/lint/unused/must_use-in-stdlib-traits.rs similarity index 100% rename from src/test/ui/lint/must_use-in-stdlib-traits.rs rename to src/test/ui/lint/unused/must_use-in-stdlib-traits.rs diff --git a/src/test/ui/lint/must_use-in-stdlib-traits.stderr b/src/test/ui/lint/unused/must_use-in-stdlib-traits.stderr similarity index 100% rename from src/test/ui/lint/must_use-in-stdlib-traits.stderr rename to src/test/ui/lint/unused/must_use-in-stdlib-traits.stderr diff --git a/src/test/ui/lint/must_use-trait.rs b/src/test/ui/lint/unused/must_use-trait.rs similarity index 100% rename from src/test/ui/lint/must_use-trait.rs rename to src/test/ui/lint/unused/must_use-trait.rs diff --git a/src/test/ui/lint/must_use-trait.stderr b/src/test/ui/lint/unused/must_use-trait.stderr similarity index 100% rename from src/test/ui/lint/must_use-trait.stderr rename to src/test/ui/lint/unused/must_use-trait.stderr diff --git a/src/test/ui/lint/must_use-tuple.rs b/src/test/ui/lint/unused/must_use-tuple.rs similarity index 100% rename from src/test/ui/lint/must_use-tuple.rs rename to src/test/ui/lint/unused/must_use-tuple.rs diff --git a/src/test/ui/lint/must_use-tuple.stderr b/src/test/ui/lint/unused/must_use-tuple.stderr similarity index 100% rename from src/test/ui/lint/must_use-tuple.stderr rename to src/test/ui/lint/unused/must_use-tuple.stderr diff --git a/src/test/ui/lint/must_use-unit.rs b/src/test/ui/lint/unused/must_use-unit.rs similarity index 100% rename from src/test/ui/lint/must_use-unit.rs rename to src/test/ui/lint/unused/must_use-unit.rs diff --git a/src/test/ui/lint/must_use-unit.stderr b/src/test/ui/lint/unused/must_use-unit.stderr similarity index 100% rename from src/test/ui/lint/must_use-unit.stderr rename to src/test/ui/lint/unused/must_use-unit.stderr diff --git a/src/test/ui/lint/no-unused-parens-return-block.rs b/src/test/ui/lint/unused/no-unused-parens-return-block.rs similarity index 100% rename from src/test/ui/lint/no-unused-parens-return-block.rs rename to src/test/ui/lint/unused/no-unused-parens-return-block.rs diff --git a/src/test/ui/unused/unused-attr-macro-rules.rs b/src/test/ui/lint/unused/unused-attr-macro-rules.rs similarity index 100% rename from src/test/ui/unused/unused-attr-macro-rules.rs rename to src/test/ui/lint/unused/unused-attr-macro-rules.rs diff --git a/src/test/ui/unused/unused-attr-macro-rules.stderr b/src/test/ui/lint/unused/unused-attr-macro-rules.stderr similarity index 100% rename from src/test/ui/unused/unused-attr-macro-rules.stderr rename to src/test/ui/lint/unused/unused-attr-macro-rules.stderr diff --git a/src/test/ui/unused/unused-attr.rs b/src/test/ui/lint/unused/unused-attr.rs similarity index 100% rename from src/test/ui/unused/unused-attr.rs rename to src/test/ui/lint/unused/unused-attr.rs diff --git a/src/test/ui/unused/unused-attr.stderr b/src/test/ui/lint/unused/unused-attr.stderr similarity index 100% rename from src/test/ui/unused/unused-attr.stderr rename to src/test/ui/lint/unused/unused-attr.stderr diff --git a/src/test/ui/unused/unused-closure.rs b/src/test/ui/lint/unused/unused-closure.rs similarity index 100% rename from src/test/ui/unused/unused-closure.rs rename to src/test/ui/lint/unused/unused-closure.rs diff --git a/src/test/ui/unused/unused-closure.stderr b/src/test/ui/lint/unused/unused-closure.stderr similarity index 100% rename from src/test/ui/unused/unused-closure.stderr rename to src/test/ui/lint/unused/unused-closure.stderr diff --git a/src/test/ui/unused/unused-doc-comments-edge-cases.rs b/src/test/ui/lint/unused/unused-doc-comments-edge-cases.rs similarity index 100% rename from src/test/ui/unused/unused-doc-comments-edge-cases.rs rename to src/test/ui/lint/unused/unused-doc-comments-edge-cases.rs diff --git a/src/test/ui/unused/unused-doc-comments-edge-cases.stderr b/src/test/ui/lint/unused/unused-doc-comments-edge-cases.stderr similarity index 100% rename from src/test/ui/unused/unused-doc-comments-edge-cases.stderr rename to src/test/ui/lint/unused/unused-doc-comments-edge-cases.stderr diff --git a/src/test/ui/unused/unused-doc-comments-for-macros.rs b/src/test/ui/lint/unused/unused-doc-comments-for-macros.rs similarity index 100% rename from src/test/ui/unused/unused-doc-comments-for-macros.rs rename to src/test/ui/lint/unused/unused-doc-comments-for-macros.rs diff --git a/src/test/ui/unused/unused-doc-comments-for-macros.stderr b/src/test/ui/lint/unused/unused-doc-comments-for-macros.stderr similarity index 100% rename from src/test/ui/unused/unused-doc-comments-for-macros.stderr rename to src/test/ui/lint/unused/unused-doc-comments-for-macros.stderr diff --git a/src/test/ui/unused/unused-macro-rules.rs b/src/test/ui/lint/unused/unused-macro-rules.rs similarity index 100% rename from src/test/ui/unused/unused-macro-rules.rs rename to src/test/ui/lint/unused/unused-macro-rules.rs diff --git a/src/test/ui/unused/unused-macro-rules.stderr b/src/test/ui/lint/unused/unused-macro-rules.stderr similarity index 100% rename from src/test/ui/unused/unused-macro-rules.stderr rename to src/test/ui/lint/unused/unused-macro-rules.stderr diff --git a/src/test/ui/unused/unused-macro-with-bad-frag-spec.rs b/src/test/ui/lint/unused/unused-macro-with-bad-frag-spec.rs similarity index 100% rename from src/test/ui/unused/unused-macro-with-bad-frag-spec.rs rename to src/test/ui/lint/unused/unused-macro-with-bad-frag-spec.rs diff --git a/src/test/ui/unused/unused-macro-with-bad-frag-spec.stderr b/src/test/ui/lint/unused/unused-macro-with-bad-frag-spec.stderr similarity index 100% rename from src/test/ui/unused/unused-macro-with-bad-frag-spec.stderr rename to src/test/ui/lint/unused/unused-macro-with-bad-frag-spec.stderr diff --git a/src/test/ui/unused/unused-macro-with-follow-violation.rs b/src/test/ui/lint/unused/unused-macro-with-follow-violation.rs similarity index 100% rename from src/test/ui/unused/unused-macro-with-follow-violation.rs rename to src/test/ui/lint/unused/unused-macro-with-follow-violation.rs diff --git a/src/test/ui/unused/unused-macro-with-follow-violation.stderr b/src/test/ui/lint/unused/unused-macro-with-follow-violation.stderr similarity index 100% rename from src/test/ui/unused/unused-macro-with-follow-violation.stderr rename to src/test/ui/lint/unused/unused-macro-with-follow-violation.stderr diff --git a/src/test/ui/unused/unused-macro.rs b/src/test/ui/lint/unused/unused-macro.rs similarity index 100% rename from src/test/ui/unused/unused-macro.rs rename to src/test/ui/lint/unused/unused-macro.rs diff --git a/src/test/ui/unused/unused-macro.stderr b/src/test/ui/lint/unused/unused-macro.stderr similarity index 100% rename from src/test/ui/unused/unused-macro.stderr rename to src/test/ui/lint/unused/unused-macro.stderr diff --git a/src/test/ui/unused/unused-mut-warning-captured-var.fixed b/src/test/ui/lint/unused/unused-mut-warning-captured-var.fixed similarity index 100% rename from src/test/ui/unused/unused-mut-warning-captured-var.fixed rename to src/test/ui/lint/unused/unused-mut-warning-captured-var.fixed diff --git a/src/test/ui/unused/unused-mut-warning-captured-var.rs b/src/test/ui/lint/unused/unused-mut-warning-captured-var.rs similarity index 100% rename from src/test/ui/unused/unused-mut-warning-captured-var.rs rename to src/test/ui/lint/unused/unused-mut-warning-captured-var.rs diff --git a/src/test/ui/unused/unused-mut-warning-captured-var.stderr b/src/test/ui/lint/unused/unused-mut-warning-captured-var.stderr similarity index 100% rename from src/test/ui/unused/unused-mut-warning-captured-var.stderr rename to src/test/ui/lint/unused/unused-mut-warning-captured-var.stderr diff --git a/src/test/ui/unused/unused-result.rs b/src/test/ui/lint/unused/unused-result.rs similarity index 100% rename from src/test/ui/unused/unused-result.rs rename to src/test/ui/lint/unused/unused-result.rs diff --git a/src/test/ui/unused/unused-result.stderr b/src/test/ui/lint/unused/unused-result.stderr similarity index 100% rename from src/test/ui/unused/unused-result.stderr rename to src/test/ui/lint/unused/unused-result.stderr diff --git a/src/test/ui/unused/useless-comment.rs b/src/test/ui/lint/unused/useless-comment.rs similarity index 100% rename from src/test/ui/unused/useless-comment.rs rename to src/test/ui/lint/unused/useless-comment.rs diff --git a/src/test/ui/unused/useless-comment.stderr b/src/test/ui/lint/unused/useless-comment.stderr similarity index 100% rename from src/test/ui/unused/useless-comment.stderr rename to src/test/ui/lint/unused/useless-comment.stderr From 924eddf30d0e72b61aa753daf8dc0c75790a8730 Mon Sep 17 00:00:00 2001 From: Yuki Okushi Date: Sat, 31 Jul 2021 06:21:52 +0900 Subject: [PATCH 3/3] Apply review suggestion --- compiler/rustc_lint/src/unused.rs | 17 +-- src/test/ui/lint/fn_must_use.stderr | 14 +- src/test/ui/lint/unused-borrows.stderr | 42 ++++-- src/test/ui/lint/unused/issue-85913.stderr | 7 +- src/test/ui/lint/unused/must-use-ops.stderr | 147 ++++++++++++++------ 5 files changed, 157 insertions(+), 70 deletions(-) diff --git a/compiler/rustc_lint/src/unused.rs b/compiler/rustc_lint/src/unused.rs index 5437174a683..2b580452a60 100644 --- a/compiler/rustc_lint/src/unused.rs +++ b/compiler/rustc_lint/src/unused.rs @@ -162,16 +162,13 @@ impl<'tcx> LateLintPass<'tcx> for UnusedResults { if let Some(must_use_op) = must_use_op { cx.struct_span_lint(UNUSED_MUST_USE, expr.span, |lint| { let mut lint = lint.build(&format!("unused {} that must be used", must_use_op)); - lint.note(&format!("the {} produces a value", must_use_op)); - if let Ok(snippet) = cx.sess().source_map().span_to_snippet(expr.span) { - lint.span_suggestion( - expr.span, - "use `let _ = ...` to ignore it", - format!("let _ = {}", snippet), - Applicability::MachineApplicable, - ) - .emit() - } + lint.span_label(expr.span, &format!("the {} produces a value", must_use_op)); + lint.span_suggestion_verbose( + expr.span.shrink_to_lo(), + "use `let _ = ...` to ignore the resulting value", + "let _ = ".to_string(), + Applicability::MachineApplicable, + ); lint.emit(); }); op_warned = true; diff --git a/src/test/ui/lint/fn_must_use.stderr b/src/test/ui/lint/fn_must_use.stderr index 75a22823329..6a5fdac4d91 100644 --- a/src/test/ui/lint/fn_must_use.stderr +++ b/src/test/ui/lint/fn_must_use.stderr @@ -47,17 +47,23 @@ warning: unused comparison that must be used --> $DIR/fn_must_use.rs:74:5 | LL | 2 == 3; - | ^^^^^^ help: use `let _ = ...` to ignore it: `let _ = 2 == 3` + | ^^^^^^ the comparison produces a value | - = note: the comparison produces a value +help: use `let _ = ...` to ignore the resulting value + | +LL | let _ = 2 == 3; + | ^^^^^^^ warning: unused comparison that must be used --> $DIR/fn_must_use.rs:75:5 | LL | m == n; - | ^^^^^^ help: use `let _ = ...` to ignore it: `let _ = m == n` + | ^^^^^^ the comparison produces a value | - = note: the comparison produces a value +help: use `let _ = ...` to ignore the resulting value + | +LL | let _ = m == n; + | ^^^^^^^ warning: 8 warnings emitted diff --git a/src/test/ui/lint/unused-borrows.stderr b/src/test/ui/lint/unused-borrows.stderr index 459381b642c..e91e02df476 100644 --- a/src/test/ui/lint/unused-borrows.stderr +++ b/src/test/ui/lint/unused-borrows.stderr @@ -2,54 +2,72 @@ error: unused borrow that must be used --> $DIR/unused-borrows.rs:6:5 | LL | &42; - | ^^^ help: use `let _ = ...` to ignore it: `let _ = &42` + | ^^^ the borrow produces a value | note: the lint level is defined here --> $DIR/unused-borrows.rs:1:9 | LL | #![deny(unused_must_use)] | ^^^^^^^^^^^^^^^ - = note: the borrow produces a value +help: use `let _ = ...` to ignore the resulting value + | +LL | let _ = &42; + | ^^^^^^^ error: unused borrow that must be used --> $DIR/unused-borrows.rs:9:5 | LL | &mut foo(42); - | ^^^^^^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = &mut foo(42)` + | ^^^^^^^^^^^^ the borrow produces a value | - = note: the borrow produces a value +help: use `let _ = ...` to ignore the resulting value + | +LL | let _ = &mut foo(42); + | ^^^^^^^ error: unused borrow that must be used --> $DIR/unused-borrows.rs:12:5 | LL | &&42; - | ^^^^ help: use `let _ = ...` to ignore it: `let _ = &&42` + | ^^^^ the borrow produces a value | - = note: the borrow produces a value +help: use `let _ = ...` to ignore the resulting value + | +LL | let _ = &&42; + | ^^^^^^^ error: unused borrow that must be used --> $DIR/unused-borrows.rs:15:5 | LL | &&mut 42; - | ^^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = &&mut 42` + | ^^^^^^^^ the borrow produces a value | - = note: the borrow produces a value +help: use `let _ = ...` to ignore the resulting value + | +LL | let _ = &&mut 42; + | ^^^^^^^ error: unused borrow that must be used --> $DIR/unused-borrows.rs:18:5 | LL | &mut &42; - | ^^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = &mut &42` + | ^^^^^^^^ the borrow produces a value | - = note: the borrow produces a value +help: use `let _ = ...` to ignore the resulting value + | +LL | let _ = &mut &42; + | ^^^^^^^ error: unused borrow that must be used --> $DIR/unused-borrows.rs:23:5 | LL | && foo(42); - | ^^^^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = && foo(42)` + | ^^^^^^^^^^ the borrow produces a value | - = note: the borrow produces a value +help: use `let _ = ...` to ignore the resulting value + | +LL | let _ = && foo(42); + | ^^^^^^^ error: aborting due to 6 previous errors diff --git a/src/test/ui/lint/unused/issue-85913.stderr b/src/test/ui/lint/unused/issue-85913.stderr index d5d99f0f7d3..4835cfae46f 100644 --- a/src/test/ui/lint/unused/issue-85913.stderr +++ b/src/test/ui/lint/unused/issue-85913.stderr @@ -2,14 +2,17 @@ error: unused logical operation that must be used --> $DIR/issue-85913.rs:4:5 | LL | function() && return 1; - | ^^^^^^^^^^^^^^^^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = function() && return 1` + | ^^^^^^^^^^^^^^^^^^^^^^ the logical operation produces a value | note: the lint level is defined here --> $DIR/issue-85913.rs:1:9 | LL | #![deny(unused_must_use)] | ^^^^^^^^^^^^^^^ - = note: the logical operation produces a value +help: use `let _ = ...` to ignore the resulting value + | +LL | let _ = function() && return 1; + | ^^^^^^^ error: aborting due to previous error diff --git a/src/test/ui/lint/unused/must-use-ops.stderr b/src/test/ui/lint/unused/must-use-ops.stderr index 73405d02a2e..4dd739088b9 100644 --- a/src/test/ui/lint/unused/must-use-ops.stderr +++ b/src/test/ui/lint/unused/must-use-ops.stderr @@ -2,174 +2,237 @@ warning: unused comparison that must be used --> $DIR/must-use-ops.rs:12:5 | LL | val == 1; - | ^^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = val == 1` + | ^^^^^^^^ the comparison produces a value | note: the lint level is defined here --> $DIR/must-use-ops.rs:5:9 | LL | #![warn(unused_must_use)] | ^^^^^^^^^^^^^^^ - = note: the comparison produces a value +help: use `let _ = ...` to ignore the resulting value + | +LL | let _ = val == 1; + | ^^^^^^^ warning: unused comparison that must be used --> $DIR/must-use-ops.rs:13:5 | LL | val < 1; - | ^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = val < 1` + | ^^^^^^^ the comparison produces a value | - = note: the comparison produces a value +help: use `let _ = ...` to ignore the resulting value + | +LL | let _ = val < 1; + | ^^^^^^^ warning: unused comparison that must be used --> $DIR/must-use-ops.rs:14:5 | LL | val <= 1; - | ^^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = val <= 1` + | ^^^^^^^^ the comparison produces a value | - = note: the comparison produces a value +help: use `let _ = ...` to ignore the resulting value + | +LL | let _ = val <= 1; + | ^^^^^^^ warning: unused comparison that must be used --> $DIR/must-use-ops.rs:15:5 | LL | val != 1; - | ^^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = val != 1` + | ^^^^^^^^ the comparison produces a value | - = note: the comparison produces a value +help: use `let _ = ...` to ignore the resulting value + | +LL | let _ = val != 1; + | ^^^^^^^ warning: unused comparison that must be used --> $DIR/must-use-ops.rs:16:5 | LL | val >= 1; - | ^^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = val >= 1` + | ^^^^^^^^ the comparison produces a value | - = note: the comparison produces a value +help: use `let _ = ...` to ignore the resulting value + | +LL | let _ = val >= 1; + | ^^^^^^^ warning: unused comparison that must be used --> $DIR/must-use-ops.rs:17:5 | LL | val > 1; - | ^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = val > 1` + | ^^^^^^^ the comparison produces a value | - = note: the comparison produces a value +help: use `let _ = ...` to ignore the resulting value + | +LL | let _ = val > 1; + | ^^^^^^^ warning: unused arithmetic operation that must be used --> $DIR/must-use-ops.rs:20:5 | LL | val + 2; - | ^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = val + 2` + | ^^^^^^^ the arithmetic operation produces a value | - = note: the arithmetic operation produces a value +help: use `let _ = ...` to ignore the resulting value + | +LL | let _ = val + 2; + | ^^^^^^^ warning: unused arithmetic operation that must be used --> $DIR/must-use-ops.rs:21:5 | LL | val - 2; - | ^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = val - 2` + | ^^^^^^^ the arithmetic operation produces a value | - = note: the arithmetic operation produces a value +help: use `let _ = ...` to ignore the resulting value + | +LL | let _ = val - 2; + | ^^^^^^^ warning: unused arithmetic operation that must be used --> $DIR/must-use-ops.rs:22:5 | LL | val / 2; - | ^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = val / 2` + | ^^^^^^^ the arithmetic operation produces a value | - = note: the arithmetic operation produces a value +help: use `let _ = ...` to ignore the resulting value + | +LL | let _ = val / 2; + | ^^^^^^^ warning: unused arithmetic operation that must be used --> $DIR/must-use-ops.rs:23:5 | LL | val * 2; - | ^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = val * 2` + | ^^^^^^^ the arithmetic operation produces a value | - = note: the arithmetic operation produces a value +help: use `let _ = ...` to ignore the resulting value + | +LL | let _ = val * 2; + | ^^^^^^^ warning: unused arithmetic operation that must be used --> $DIR/must-use-ops.rs:24:5 | LL | val % 2; - | ^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = val % 2` + | ^^^^^^^ the arithmetic operation produces a value | - = note: the arithmetic operation produces a value +help: use `let _ = ...` to ignore the resulting value + | +LL | let _ = val % 2; + | ^^^^^^^ warning: unused logical operation that must be used --> $DIR/must-use-ops.rs:27:5 | LL | true && true; - | ^^^^^^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = true && true` + | ^^^^^^^^^^^^ the logical operation produces a value | - = note: the logical operation produces a value +help: use `let _ = ...` to ignore the resulting value + | +LL | let _ = true && true; + | ^^^^^^^ warning: unused logical operation that must be used --> $DIR/must-use-ops.rs:28:5 | LL | false || true; - | ^^^^^^^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = false || true` + | ^^^^^^^^^^^^^ the logical operation produces a value | - = note: the logical operation produces a value +help: use `let _ = ...` to ignore the resulting value + | +LL | let _ = false || true; + | ^^^^^^^ warning: unused bitwise operation that must be used --> $DIR/must-use-ops.rs:31:5 | LL | 5 ^ val; - | ^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = 5 ^ val` + | ^^^^^^^ the bitwise operation produces a value | - = note: the bitwise operation produces a value +help: use `let _ = ...` to ignore the resulting value + | +LL | let _ = 5 ^ val; + | ^^^^^^^ warning: unused bitwise operation that must be used --> $DIR/must-use-ops.rs:32:5 | LL | 5 & val; - | ^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = 5 & val` + | ^^^^^^^ the bitwise operation produces a value | - = note: the bitwise operation produces a value +help: use `let _ = ...` to ignore the resulting value + | +LL | let _ = 5 & val; + | ^^^^^^^ warning: unused bitwise operation that must be used --> $DIR/must-use-ops.rs:33:5 | LL | 5 | val; - | ^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = 5 | val` + | ^^^^^^^ the bitwise operation produces a value | - = note: the bitwise operation produces a value +help: use `let _ = ...` to ignore the resulting value + | +LL | let _ = 5 | val; + | ^^^^^^^ warning: unused bitwise operation that must be used --> $DIR/must-use-ops.rs:34:5 | LL | 5 << val; - | ^^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = 5 << val` + | ^^^^^^^^ the bitwise operation produces a value | - = note: the bitwise operation produces a value +help: use `let _ = ...` to ignore the resulting value + | +LL | let _ = 5 << val; + | ^^^^^^^ warning: unused bitwise operation that must be used --> $DIR/must-use-ops.rs:35:5 | LL | 5 >> val; - | ^^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = 5 >> val` + | ^^^^^^^^ the bitwise operation produces a value | - = note: the bitwise operation produces a value +help: use `let _ = ...` to ignore the resulting value + | +LL | let _ = 5 >> val; + | ^^^^^^^ warning: unused unary operation that must be used --> $DIR/must-use-ops.rs:38:5 | LL | !val; - | ^^^^ help: use `let _ = ...` to ignore it: `let _ = !val` + | ^^^^ the unary operation produces a value | - = note: the unary operation produces a value +help: use `let _ = ...` to ignore the resulting value + | +LL | let _ = !val; + | ^^^^^^^ warning: unused unary operation that must be used --> $DIR/must-use-ops.rs:39:5 | LL | -val; - | ^^^^ help: use `let _ = ...` to ignore it: `let _ = -val` + | ^^^^ the unary operation produces a value | - = note: the unary operation produces a value +help: use `let _ = ...` to ignore the resulting value + | +LL | let _ = -val; + | ^^^^^^^ warning: unused unary operation that must be used --> $DIR/must-use-ops.rs:40:5 | LL | *val_pointer; - | ^^^^^^^^^^^^ help: use `let _ = ...` to ignore it: `let _ = *val_pointer` + | ^^^^^^^^^^^^ the unary operation produces a value | - = note: the unary operation produces a value +help: use `let _ = ...` to ignore the resulting value + | +LL | let _ = *val_pointer; + | ^^^^^^^ warning: 21 warnings emitted