about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/librustc_mir/transform/check_unsafety.rs11
-rw-r--r--src/test/ui/issue-45107-unnecessary-unsafe-in-closure.stderr67
-rw-r--r--src/test/ui/span/lint-unused-unsafe.stderr87
3 files changed, 43 insertions, 122 deletions
diff --git a/src/librustc_mir/transform/check_unsafety.rs b/src/librustc_mir/transform/check_unsafety.rs
index 7833f4bbac7..524fa5cd433 100644
--- a/src/librustc_mir/transform/check_unsafety.rs
+++ b/src/librustc_mir/transform/check_unsafety.rs
@@ -388,12 +388,13 @@ fn is_enclosed(tcx: TyCtxt,
 }
 
 fn report_unused_unsafe(tcx: TyCtxt, used_unsafe: &FxHashSet<ast::NodeId>, id: ast::NodeId) {
-    let span = tcx.hir.span(id);
-    let mut db = tcx.struct_span_lint_node(UNUSED_UNSAFE, id, span, "unnecessary `unsafe` block");
-    db.span_label(span, "unnecessary `unsafe` block");
+    let span = tcx.sess.codemap().def_span(tcx.hir.span(id));
+    let msg = "unnecessary `unsafe` block";
+    let mut db = tcx.struct_span_lint_node(UNUSED_UNSAFE, id, span, msg);
+    db.span_label(span, msg);
     if let Some((kind, id)) = is_enclosed(tcx, used_unsafe, id) {
-        db.span_note(tcx.hir.span(id),
-                     &format!("because it's nested under this `unsafe` {}", kind));
+        db.span_label(tcx.sess.codemap().def_span(tcx.hir.span(id)),
+                      format!("because it's nested under this `unsafe` {}", kind));
     }
     db.emit();
 }
diff --git a/src/test/ui/issue-45107-unnecessary-unsafe-in-closure.stderr b/src/test/ui/issue-45107-unnecessary-unsafe-in-closure.stderr
index abd875c4808..8c34cc4b73c 100644
--- a/src/test/ui/issue-45107-unnecessary-unsafe-in-closure.stderr
+++ b/src/test/ui/issue-45107-unnecessary-unsafe-in-closure.stderr
@@ -1,72 +1,35 @@
 error: unnecessary `unsafe` block
   --> $DIR/issue-45107-unnecessary-unsafe-in-closure.rs:17:13
    |
-17 | /             unsafe { //~ ERROR unnecessary `unsafe`
-18 | |                 v.set_len(24);
-19 | |                 |w: &mut Vec<u32>| { unsafe { //~ ERROR unnecessary `unsafe`
-20 | |                     w.set_len(32);
-21 | |                 } };
-22 | |             }
-   | |_____________^ unnecessary `unsafe` block
+15 |     unsafe {
+   |     ------ because it's nested under this `unsafe` block
+16 |         let f = |v: &mut Vec<_>| {
+17 |             unsafe { //~ ERROR unnecessary `unsafe`
+   |             ^^^^^^ unnecessary `unsafe` block
    |
 note: lint level defined here
   --> $DIR/issue-45107-unnecessary-unsafe-in-closure.rs:11:8
    |
 11 | #[deny(unused_unsafe)]
    |        ^^^^^^^^^^^^^
-note: because it's nested under this `unsafe` block
-  --> $DIR/issue-45107-unnecessary-unsafe-in-closure.rs:15:5
-   |
-15 | /     unsafe {
-16 | |         let f = |v: &mut Vec<_>| {
-17 | |             unsafe { //~ ERROR unnecessary `unsafe`
-18 | |                 v.set_len(24);
-...  |
-29 | |         f(&mut v);
-30 | |     }
-   | |_____^
 
 error: unnecessary `unsafe` block
   --> $DIR/issue-45107-unnecessary-unsafe-in-closure.rs:19:38
    |
-19 |                   |w: &mut Vec<u32>| { unsafe { //~ ERROR unnecessary `unsafe`
-   |  ______________________________________^
-20 | |                     w.set_len(32);
-21 | |                 } };
-   | |_________________^ unnecessary `unsafe` block
-   |
-note: because it's nested under this `unsafe` block
-  --> $DIR/issue-45107-unnecessary-unsafe-in-closure.rs:15:5
-   |
-15 | /     unsafe {
-16 | |         let f = |v: &mut Vec<_>| {
-17 | |             unsafe { //~ ERROR unnecessary `unsafe`
-18 | |                 v.set_len(24);
-...  |
-29 | |         f(&mut v);
-30 | |     }
-   | |_____^
+15 |     unsafe {
+   |     ------ because it's nested under this `unsafe` block
+...
+19 |                 |w: &mut Vec<u32>| { unsafe { //~ ERROR unnecessary `unsafe`
+   |                                      ^^^^^^ unnecessary `unsafe` block
 
 error: unnecessary `unsafe` block
   --> $DIR/issue-45107-unnecessary-unsafe-in-closure.rs:23:34
    |
-23 |               |x: &mut Vec<u32>| { unsafe { //~ ERROR unnecessary `unsafe`
-   |  __________________________________^
-24 | |                 x.set_len(40);
-25 | |             } };
-   | |_____________^ unnecessary `unsafe` block
-   |
-note: because it's nested under this `unsafe` block
-  --> $DIR/issue-45107-unnecessary-unsafe-in-closure.rs:15:5
-   |
-15 | /     unsafe {
-16 | |         let f = |v: &mut Vec<_>| {
-17 | |             unsafe { //~ ERROR unnecessary `unsafe`
-18 | |                 v.set_len(24);
-...  |
-29 | |         f(&mut v);
-30 | |     }
-   | |_____^
+15 |     unsafe {
+   |     ------ because it's nested under this `unsafe` block
+...
+23 |             |x: &mut Vec<u32>| { unsafe { //~ ERROR unnecessary `unsafe`
+   |                                  ^^^^^^ unnecessary `unsafe` block
 
 error: aborting due to 3 previous errors
 
diff --git a/src/test/ui/span/lint-unused-unsafe.stderr b/src/test/ui/span/lint-unused-unsafe.stderr
index f4998e08907..8a8b104098e 100644
--- a/src/test/ui/span/lint-unused-unsafe.stderr
+++ b/src/test/ui/span/lint-unused-unsafe.stderr
@@ -2,7 +2,7 @@ error: unnecessary `unsafe` block
   --> $DIR/lint-unused-unsafe.rs:26:13
    |
 26 | fn bad1() { unsafe {} }                  //~ ERROR: unnecessary `unsafe` block
-   |             ^^^^^^^^^ unnecessary `unsafe` block
+   |             ^^^^^^ unnecessary `unsafe` block
    |
 note: lint level defined here
   --> $DIR/lint-unused-unsafe.rs:14:9
@@ -14,97 +14,54 @@ error: unnecessary `unsafe` block
   --> $DIR/lint-unused-unsafe.rs:27:13
    |
 27 | fn bad2() { unsafe { bad1() } }          //~ ERROR: unnecessary `unsafe` block
-   |             ^^^^^^^^^^^^^^^^^ unnecessary `unsafe` block
+   |             ^^^^^^ unnecessary `unsafe` block
 
 error: unnecessary `unsafe` block
   --> $DIR/lint-unused-unsafe.rs:28:20
    |
 28 | unsafe fn bad3() { unsafe {} }           //~ ERROR: unnecessary `unsafe` block
-   |                    ^^^^^^^^^ unnecessary `unsafe` block
-   |
-note: because it's nested under this `unsafe` fn
-  --> $DIR/lint-unused-unsafe.rs:28:1
-   |
-28 | unsafe fn bad3() { unsafe {} }           //~ ERROR: unnecessary `unsafe` block
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   | ----------------   ^^^^^^ unnecessary `unsafe` block
+   | |
+   | because it's nested under this `unsafe` fn
 
 error: unnecessary `unsafe` block
   --> $DIR/lint-unused-unsafe.rs:29:13
    |
 29 | fn bad4() { unsafe { callback(||{}) } }  //~ ERROR: unnecessary `unsafe` block
-   |             ^^^^^^^^^^^^^^^^^^^^^^^^^ unnecessary `unsafe` block
+   |             ^^^^^^ unnecessary `unsafe` block
 
 error: unnecessary `unsafe` block
   --> $DIR/lint-unused-unsafe.rs:30:20
    |
 30 | unsafe fn bad5() { unsafe { unsf() } }   //~ ERROR: unnecessary `unsafe` block
-   |                    ^^^^^^^^^^^^^^^^^ unnecessary `unsafe` block
-   |
-note: because it's nested under this `unsafe` fn
-  --> $DIR/lint-unused-unsafe.rs:30:1
-   |
-30 | unsafe fn bad5() { unsafe { unsf() } }   //~ ERROR: unnecessary `unsafe` block
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   | ----------------   ^^^^^^ unnecessary `unsafe` block
+   | |
+   | because it's nested under this `unsafe` fn
 
 error: unnecessary `unsafe` block
   --> $DIR/lint-unused-unsafe.rs:33:9
    |
-33 | /         unsafe {                         //~ ERROR: unnecessary `unsafe` block
-34 | |             unsf()
-35 | |         }
-   | |_________^ unnecessary `unsafe` block
-   |
-note: because it's nested under this `unsafe` block
-  --> $DIR/lint-unused-unsafe.rs:32:5
-   |
-32 | /     unsafe {                             // don't put the warning here
-33 | |         unsafe {                         //~ ERROR: unnecessary `unsafe` block
-34 | |             unsf()
-35 | |         }
-36 | |     }
-   | |_____^
+32 |     unsafe {                             // don't put the warning here
+   |     ------ because it's nested under this `unsafe` block
+33 |         unsafe {                         //~ ERROR: unnecessary `unsafe` block
+   |         ^^^^^^ unnecessary `unsafe` block
 
 error: unnecessary `unsafe` block
   --> $DIR/lint-unused-unsafe.rs:39:5
    |
-39 | /     unsafe {                             //~ ERROR: unnecessary `unsafe` block
-40 | |         unsafe {                         //~ ERROR: unnecessary `unsafe` block
-41 | |             unsf()
-42 | |         }
-43 | |     }
-   | |_____^ unnecessary `unsafe` block
-   |
-note: because it's nested under this `unsafe` fn
-  --> $DIR/lint-unused-unsafe.rs:38:1
-   |
-38 | / unsafe fn bad7() {
-39 | |     unsafe {                             //~ ERROR: unnecessary `unsafe` block
-40 | |         unsafe {                         //~ ERROR: unnecessary `unsafe` block
-41 | |             unsf()
-42 | |         }
-43 | |     }
-44 | | }
-   | |_^
+38 | unsafe fn bad7() {
+   | ---------------- because it's nested under this `unsafe` fn
+39 |     unsafe {                             //~ ERROR: unnecessary `unsafe` block
+   |     ^^^^^^ unnecessary `unsafe` block
 
 error: unnecessary `unsafe` block
   --> $DIR/lint-unused-unsafe.rs:40:9
    |
-40 | /         unsafe {                         //~ ERROR: unnecessary `unsafe` block
-41 | |             unsf()
-42 | |         }
-   | |_________^ unnecessary `unsafe` block
-   |
-note: because it's nested under this `unsafe` fn
-  --> $DIR/lint-unused-unsafe.rs:38:1
-   |
-38 | / unsafe fn bad7() {
-39 | |     unsafe {                             //~ ERROR: unnecessary `unsafe` block
-40 | |         unsafe {                         //~ ERROR: unnecessary `unsafe` block
-41 | |             unsf()
-42 | |         }
-43 | |     }
-44 | | }
-   | |_^
+38 | unsafe fn bad7() {
+   | ---------------- because it's nested under this `unsafe` fn
+39 |     unsafe {                             //~ ERROR: unnecessary `unsafe` block
+40 |         unsafe {                         //~ ERROR: unnecessary `unsafe` block
+   |         ^^^^^^ unnecessary `unsafe` block
 
 error: aborting due to 8 previous errors