diff --git a/src/librustc/middle/effect.rs b/src/librustc/middle/effect.rs index 446767ecbcaba..3ca6cf0399797 100644 --- a/src/librustc/middle/effect.rs +++ b/src/librustc/middle/effect.rs @@ -63,9 +63,11 @@ impl<'a, 'tcx> EffectCheckVisitor<'a, 'tcx> { match self.unsafe_context.root { SafeContext => { // Report an error. - span_err!(self.tcx.sess, span, E0133, - "{} requires unsafe function or block", - description); + struct_span_err!( + self.tcx.sess, span, E0133, + "{} requires unsafe function or block", description) + .span_label(span, &format!("unsafe call requires unsafe function or block")) + .emit(); } UnsafeBlock(block_id) => { // OK, but record this. diff --git a/src/test/compile-fail/E0133.rs b/src/test/compile-fail/E0133.rs index 630ee851d0af0..b8a4476fc5967 100644 --- a/src/test/compile-fail/E0133.rs +++ b/src/test/compile-fail/E0133.rs @@ -11,5 +11,7 @@ unsafe fn f() { return; } fn main() { - f(); //~ ERROR E0133 + f(); + //~^ ERROR E0133 + //~| NOTE unsafe call requires unsafe function or block } diff --git a/src/test/compile-fail/issue-28776.rs b/src/test/compile-fail/issue-28776.rs index ce06c8bf220ee..52b0eba96cbdf 100644 --- a/src/test/compile-fail/issue-28776.rs +++ b/src/test/compile-fail/issue-28776.rs @@ -11,5 +11,7 @@ use std::ptr; fn main() { - (&ptr::write)(1 as *mut _, 42); //~ ERROR E0133 + (&ptr::write)(1 as *mut _, 42); + //~^ ERROR E0133 + //~| NOTE unsafe call requires unsafe function or block } diff --git a/src/test/compile-fail/trait-safety-fn-body.rs b/src/test/compile-fail/trait-safety-fn-body.rs index 499b58f70d77a..0df7ee8cabed2 100644 --- a/src/test/compile-fail/trait-safety-fn-body.rs +++ b/src/test/compile-fail/trait-safety-fn-body.rs @@ -18,7 +18,9 @@ unsafe trait UnsafeTrait : Sized { unsafe impl UnsafeTrait for *mut isize { fn foo(self) { // Unsafe actions are not made legal by taking place in an unsafe trait: - *self += 1; //~ ERROR E0133 + *self += 1; + //~^ ERROR E0133 + //~| NOTE unsafe call requires unsafe function or block } } diff --git a/src/test/compile-fail/unsafe-const-fn.rs b/src/test/compile-fail/unsafe-const-fn.rs index 24ac41ce88437..174939b09009c 100644 --- a/src/test/compile-fail/unsafe-const-fn.rs +++ b/src/test/compile-fail/unsafe-const-fn.rs @@ -16,7 +16,9 @@ const unsafe fn dummy(v: u32) -> u32 { !v } -const VAL: u32 = dummy(0xFFFF); //~ ERROR E0133 +const VAL: u32 = dummy(0xFFFF); +//~^ ERROR E0133 +//~| NOTE unsafe call requires unsafe function or block fn main() { assert_eq!(VAL, 0xFFFF0000);