Tweak "unecessary unsafe block" error spans

This commit is contained in:
Esteban Küber 2017-12-17 23:48:59 -08:00
parent 3cc68bac7c
commit e1dc7ac33c
3 changed files with 43 additions and 122 deletions

View File

@ -388,12 +388,13 @@ fn is_enclosed(tcx: TyCtxt,
} }
fn report_unused_unsafe(tcx: TyCtxt, used_unsafe: &FxHashSet<ast::NodeId>, id: ast::NodeId) { fn report_unused_unsafe(tcx: TyCtxt, used_unsafe: &FxHashSet<ast::NodeId>, id: ast::NodeId) {
let span = tcx.hir.span(id); let span = tcx.sess.codemap().def_span(tcx.hir.span(id));
let mut db = tcx.struct_span_lint_node(UNUSED_UNSAFE, id, span, "unnecessary `unsafe` block"); let msg = "unnecessary `unsafe` block";
db.span_label(span, "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) { if let Some((kind, id)) = is_enclosed(tcx, used_unsafe, id) {
db.span_note(tcx.hir.span(id), db.span_label(tcx.sess.codemap().def_span(tcx.hir.span(id)),
&format!("because it's nested under this `unsafe` {}", kind)); format!("because it's nested under this `unsafe` {}", kind));
} }
db.emit(); db.emit();
} }

View File

@ -1,72 +1,35 @@
error: unnecessary `unsafe` block error: unnecessary `unsafe` block
--> $DIR/issue-45107-unnecessary-unsafe-in-closure.rs:17:13 --> $DIR/issue-45107-unnecessary-unsafe-in-closure.rs:17:13
| |
17 | / unsafe { //~ ERROR unnecessary `unsafe` 15 | unsafe {
18 | | v.set_len(24); | ------ because it's nested under this `unsafe` block
19 | | |w: &mut Vec<u32>| { unsafe { //~ ERROR unnecessary `unsafe` 16 | let f = |v: &mut Vec<_>| {
20 | | w.set_len(32); 17 | unsafe { //~ ERROR unnecessary `unsafe`
21 | | } }; | ^^^^^^ unnecessary `unsafe` block
22 | | }
| |_____________^ unnecessary `unsafe` block
| |
note: lint level defined here note: lint level defined here
--> $DIR/issue-45107-unnecessary-unsafe-in-closure.rs:11:8 --> $DIR/issue-45107-unnecessary-unsafe-in-closure.rs:11:8
| |
11 | #[deny(unused_unsafe)] 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 error: unnecessary `unsafe` block
--> $DIR/issue-45107-unnecessary-unsafe-in-closure.rs:19:38 --> $DIR/issue-45107-unnecessary-unsafe-in-closure.rs:19:38
| |
19 | |w: &mut Vec<u32>| { unsafe { //~ ERROR unnecessary `unsafe` 15 | unsafe {
| ______________________________________^ | ------ because it's nested under this `unsafe` block
20 | | w.set_len(32); ...
21 | | } }; 19 | |w: &mut Vec<u32>| { unsafe { //~ ERROR unnecessary `unsafe`
| |_________________^ unnecessary `unsafe` block | ^^^^^^ 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 | | }
| |_____^
error: unnecessary `unsafe` block error: unnecessary `unsafe` block
--> $DIR/issue-45107-unnecessary-unsafe-in-closure.rs:23:34 --> $DIR/issue-45107-unnecessary-unsafe-in-closure.rs:23:34
| |
23 | |x: &mut Vec<u32>| { unsafe { //~ ERROR unnecessary `unsafe` 15 | unsafe {
| __________________________________^ | ------ because it's nested under this `unsafe` block
24 | | x.set_len(40); ...
25 | | } }; 23 | |x: &mut Vec<u32>| { unsafe { //~ ERROR unnecessary `unsafe`
| |_____________^ unnecessary `unsafe` block | ^^^^^^ 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 | | }
| |_____^
error: aborting due to 3 previous errors error: aborting due to 3 previous errors

View File

@ -2,7 +2,7 @@ error: unnecessary `unsafe` block
--> $DIR/lint-unused-unsafe.rs:26:13 --> $DIR/lint-unused-unsafe.rs:26:13
| |
26 | fn bad1() { unsafe {} } //~ ERROR: unnecessary `unsafe` block 26 | fn bad1() { unsafe {} } //~ ERROR: unnecessary `unsafe` block
| ^^^^^^^^^ unnecessary `unsafe` block | ^^^^^^ unnecessary `unsafe` block
| |
note: lint level defined here note: lint level defined here
--> $DIR/lint-unused-unsafe.rs:14:9 --> $DIR/lint-unused-unsafe.rs:14:9
@ -14,97 +14,54 @@ error: unnecessary `unsafe` block
--> $DIR/lint-unused-unsafe.rs:27:13 --> $DIR/lint-unused-unsafe.rs:27:13
| |
27 | fn bad2() { unsafe { bad1() } } //~ ERROR: unnecessary `unsafe` block 27 | fn bad2() { unsafe { bad1() } } //~ ERROR: unnecessary `unsafe` block
| ^^^^^^^^^^^^^^^^^ unnecessary `unsafe` block | ^^^^^^ unnecessary `unsafe` block
error: unnecessary `unsafe` block error: unnecessary `unsafe` block
--> $DIR/lint-unused-unsafe.rs:28:20 --> $DIR/lint-unused-unsafe.rs:28:20
| |
28 | unsafe fn bad3() { unsafe {} } //~ ERROR: unnecessary `unsafe` block 28 | unsafe fn bad3() { unsafe {} } //~ ERROR: unnecessary `unsafe` block
| ^^^^^^^^^ unnecessary `unsafe` block | ---------------- ^^^^^^ unnecessary `unsafe` block
| | |
note: because it's nested under this `unsafe` fn | because it's nested under this `unsafe` fn
--> $DIR/lint-unused-unsafe.rs:28:1
|
28 | unsafe fn bad3() { unsafe {} } //~ ERROR: unnecessary `unsafe` block
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: unnecessary `unsafe` block error: unnecessary `unsafe` block
--> $DIR/lint-unused-unsafe.rs:29:13 --> $DIR/lint-unused-unsafe.rs:29:13
| |
29 | fn bad4() { unsafe { callback(||{}) } } //~ ERROR: unnecessary `unsafe` block 29 | fn bad4() { unsafe { callback(||{}) } } //~ ERROR: unnecessary `unsafe` block
| ^^^^^^^^^^^^^^^^^^^^^^^^^ unnecessary `unsafe` block | ^^^^^^ unnecessary `unsafe` block
error: unnecessary `unsafe` block error: unnecessary `unsafe` block
--> $DIR/lint-unused-unsafe.rs:30:20 --> $DIR/lint-unused-unsafe.rs:30:20
| |
30 | unsafe fn bad5() { unsafe { unsf() } } //~ ERROR: unnecessary `unsafe` block 30 | unsafe fn bad5() { unsafe { unsf() } } //~ ERROR: unnecessary `unsafe` block
| ^^^^^^^^^^^^^^^^^ unnecessary `unsafe` block | ---------------- ^^^^^^ unnecessary `unsafe` block
| | |
note: because it's nested under this `unsafe` fn | 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
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: unnecessary `unsafe` block error: unnecessary `unsafe` block
--> $DIR/lint-unused-unsafe.rs:33:9 --> $DIR/lint-unused-unsafe.rs:33:9
| |
33 | / unsafe { //~ ERROR: unnecessary `unsafe` block 32 | unsafe { // don't put the warning here
34 | | unsf() | ------ because it's nested under this `unsafe` block
35 | | } 33 | unsafe { //~ ERROR: unnecessary `unsafe` block
| |_________^ unnecessary `unsafe` block | ^^^^^^ 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 | | }
| |_____^
error: unnecessary `unsafe` block error: unnecessary `unsafe` block
--> $DIR/lint-unused-unsafe.rs:39:5 --> $DIR/lint-unused-unsafe.rs:39:5
| |
39 | / unsafe { //~ ERROR: unnecessary `unsafe` block 38 | unsafe fn bad7() {
40 | | unsafe { //~ ERROR: unnecessary `unsafe` block | ---------------- because it's nested under this `unsafe` fn
41 | | unsf() 39 | unsafe { //~ ERROR: unnecessary `unsafe` block
42 | | } | ^^^^^^ unnecessary `unsafe` block
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 | | }
| |_^
error: unnecessary `unsafe` block error: unnecessary `unsafe` block
--> $DIR/lint-unused-unsafe.rs:40:9 --> $DIR/lint-unused-unsafe.rs:40:9
| |
40 | / unsafe { //~ ERROR: unnecessary `unsafe` block 38 | unsafe fn bad7() {
41 | | unsf() | ---------------- because it's nested under this `unsafe` fn
42 | | } 39 | unsafe { //~ ERROR: unnecessary `unsafe` block
| |_________^ unnecessary `unsafe` block 40 | unsafe { //~ ERROR: unnecessary `unsafe` block
| | ^^^^^^ 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 | | }
| |_^
error: aborting due to 8 previous errors error: aborting due to 8 previous errors