diff options
| author | bors <bors@rust-lang.org> | 2018-05-07 06:27:01 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2018-05-07 06:27:01 +0000 |
| commit | 9b97705f9edb9aef64f417952c02b01dbf16bcea (patch) | |
| tree | 57391772fd2d3c203ee5036a0e868a206bf50253 | |
| parent | 760274f7b33b757b48c9df0adc9749f0ccb5d14e (diff) | |
| parent | 5a5a25c701e27eb9fbd46a6c54053e3a1d05b042 (diff) | |
| download | rust-9b97705f9edb9aef64f417952c02b01dbf16bcea.tar.gz rust-9b97705f9edb9aef64f417952c02b01dbf16bcea.zip | |
Auto merge of #50437 - zackmdavis:must_note, r=estebank
in which the must-use additional messaging is tucked into a note _I_ think it looks better this way! What do _you_ think??  r? @estebank
| -rw-r--r-- | src/librustc_lint/unused.rs | 10 | ||||
| -rw-r--r-- | src/test/compile-fail/unused-result.rs | 10 | ||||
| -rw-r--r-- | src/test/ui/fn_must_use.stderr | 7 |
3 files changed, 17 insertions, 10 deletions
diff --git a/src/librustc_lint/unused.rs b/src/librustc_lint/unused.rs index 8df40b62ddd..845c964b986 100644 --- a/src/librustc_lint/unused.rs +++ b/src/librustc_lint/unused.rs @@ -135,12 +135,12 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for UnusedResults { if attr.check_name("must_use") { let mut msg = format!("unused {}`{}` which must be used", describe_path, cx.tcx.item_path_str(def_id)); - // check for #[must_use="..."] - if let Some(s) = attr.value_str() { - msg.push_str(": "); - msg.push_str(&s.as_str()); + let mut err = cx.struct_span_lint(UNUSED_MUST_USE, sp, &msg); + // check for #[must_use = "..."] + if let Some(note) = attr.value_str() { + err.note(¬e.as_str()); } - cx.span_lint(UNUSED_MUST_USE, sp, &msg); + err.emit(); return true; } } diff --git a/src/test/compile-fail/unused-result.rs b/src/test/compile-fail/unused-result.rs index 0c6c7fc5a0d..363ab6220bd 100644 --- a/src/test/compile-fail/unused-result.rs +++ b/src/test/compile-fail/unused-result.rs @@ -8,8 +8,10 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -#![deny(unused_results, unused_must_use)] #![allow(dead_code)] +#![deny(unused_results, unused_must_use)] +//~^ NOTE: lint level defined here +//~| NOTE: lint level defined here #[must_use] enum MustUse { Test } @@ -27,7 +29,8 @@ fn qux() -> MustUseMsg { return foo::<MustUseMsg>(); } fn test() { foo::<isize>(); foo::<MustUse>(); //~ ERROR: unused `MustUse` which must be used - foo::<MustUseMsg>(); //~ ERROR: unused `MustUseMsg` which must be used: some message + foo::<MustUseMsg>(); //~ ERROR: unused `MustUseMsg` which must be used + //~^ NOTE: some message } #[allow(unused_results, unused_must_use)] @@ -40,7 +43,8 @@ fn test2() { fn main() { foo::<isize>(); //~ ERROR: unused result foo::<MustUse>(); //~ ERROR: unused `MustUse` which must be used - foo::<MustUseMsg>(); //~ ERROR: unused `MustUseMsg` which must be used: some message + foo::<MustUseMsg>(); //~ ERROR: unused `MustUseMsg` which must be used + //~^ NOTE: some message let _ = foo::<isize>(); let _ = foo::<MustUse>(); diff --git a/src/test/ui/fn_must_use.stderr b/src/test/ui/fn_must_use.stderr index 5026dac0a94..b5bad22f3dc 100644 --- a/src/test/ui/fn_must_use.stderr +++ b/src/test/ui/fn_must_use.stderr @@ -1,4 +1,4 @@ -warning: unused return value of `need_to_use_this_value` which must be used: it's important +warning: unused return value of `need_to_use_this_value` which must be used --> $DIR/fn_must_use.rs:60:5 | LL | need_to_use_this_value(); //~ WARN unused return value @@ -9,6 +9,7 @@ note: lint level defined here | LL | #![warn(unused_must_use)] | ^^^^^^^^^^^^^^^ + = note: it's important warning: unused return value of `MyStruct::need_to_use_this_method_value` which must be used --> $DIR/fn_must_use.rs:65:5 @@ -16,11 +17,13 @@ warning: unused return value of `MyStruct::need_to_use_this_method_value` which LL | m.need_to_use_this_method_value(); //~ WARN unused return value | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -warning: unused return value of `EvenNature::is_even` which must be used: no side effects +warning: unused return value of `EvenNature::is_even` which must be used --> $DIR/fn_must_use.rs:66:5 | LL | m.is_even(); // trait method! | ^^^^^^^^^^^^ + | + = note: no side effects warning: unused return value of `std::cmp::PartialEq::eq` which must be used --> $DIR/fn_must_use.rs:72:5 |
