diff --git a/src/librustc_lint/unused.rs b/src/librustc_lint/unused.rs index 8df40b62ddd12..845c964b986dd 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 0c6c7fc5a0d75..363ab6220bd6e 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::(); } fn test() { foo::(); foo::(); //~ ERROR: unused `MustUse` which must be used - foo::(); //~ ERROR: unused `MustUseMsg` which must be used: some message + foo::(); //~ 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::(); //~ ERROR: unused result foo::(); //~ ERROR: unused `MustUse` which must be used - foo::(); //~ ERROR: unused `MustUseMsg` which must be used: some message + foo::(); //~ ERROR: unused `MustUseMsg` which must be used + //~^ NOTE: some message let _ = foo::(); let _ = foo::(); diff --git a/src/test/ui/fn_must_use.stderr b/src/test/ui/fn_must_use.stderr index 5026dac0a949e..b5bad22f3dc78 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