Skip to content

Commit c187074

Browse files
Remove "unnecessary unsafe block in unsafe fn" lint
1 parent 6724d58 commit c187074

File tree

4 files changed

+6
-33
lines changed

4 files changed

+6
-33
lines changed

src/librustc_mir/transform/check_unsafety.rs

-8
Original file line numberDiff line numberDiff line change
@@ -548,14 +548,6 @@ fn is_enclosed(
548548
if parent_id != id {
549549
if used_unsafe.contains(&parent_id) {
550550
Some(("block".to_string(), parent_id))
551-
} else if let Some(Node::Item(&hir::Item {
552-
kind: hir::ItemKind::Fn(ref sig, _, _), ..
553-
})) = tcx.hir().find(parent_id)
554-
{
555-
match sig.header.unsafety {
556-
hir::Unsafety::Unsafe => Some(("fn".to_string(), parent_id)),
557-
hir::Unsafety::Normal => None,
558-
}
559551
} else {
560552
is_enclosed(tcx, used_unsafe, parent_id)
561553
}

src/librustc_mir_build/build/block.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
210210
BlockSafety::ExplicitUnsafe(hir_id) => {
211211
assert_eq!(self.push_unsafe_count, 0);
212212
match self.unpushed_unsafe {
213-
Safety::Safe => {}
213+
Safety::Safe | Safety::FnUnsafe => {}
214214
_ => return,
215215
}
216216
self.unpushed_unsafe = Safety::ExplicitUnsafe(hir_id);

src/test/ui/span/lint-unused-unsafe.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ fn bad1() { unsafe {} } //~ ERROR: unnecessary `unsafe` block
1717
fn bad2() { unsafe { bad1() } } //~ ERROR: unnecessary `unsafe` block
1818
unsafe fn bad3() { unsafe {} } //~ ERROR: unnecessary `unsafe` block
1919
fn bad4() { unsafe { callback(||{}) } } //~ ERROR: unnecessary `unsafe` block
20-
unsafe fn bad5() { unsafe { unsf() } } //~ ERROR: unnecessary `unsafe` block
20+
unsafe fn bad5() { unsafe { unsf() } }
2121
fn bad6() {
2222
unsafe { // don't put the warning here
2323
unsafe { //~ ERROR: unnecessary `unsafe` block
@@ -26,7 +26,7 @@ fn bad6() {
2626
}
2727
}
2828
unsafe fn bad7() {
29-
unsafe { //~ ERROR: unnecessary `unsafe` block
29+
unsafe {
3030
unsafe { //~ ERROR: unnecessary `unsafe` block
3131
unsf()
3232
}

src/test/ui/span/lint-unused-unsafe.stderr

+3-22
Original file line numberDiff line numberDiff line change
@@ -20,24 +20,14 @@ error: unnecessary `unsafe` block
2020
--> $DIR/lint-unused-unsafe.rs:18:20
2121
|
2222
LL | unsafe fn bad3() { unsafe {} }
23-
| ---------------- ^^^^^^ unnecessary `unsafe` block
24-
| |
25-
| because it's nested under this `unsafe` fn
23+
| ^^^^^^ unnecessary `unsafe` block
2624

2725
error: unnecessary `unsafe` block
2826
--> $DIR/lint-unused-unsafe.rs:19:13
2927
|
3028
LL | fn bad4() { unsafe { callback(||{}) } }
3129
| ^^^^^^ unnecessary `unsafe` block
3230

33-
error: unnecessary `unsafe` block
34-
--> $DIR/lint-unused-unsafe.rs:20:20
35-
|
36-
LL | unsafe fn bad5() { unsafe { unsf() } }
37-
| ---------------- ^^^^^^ unnecessary `unsafe` block
38-
| |
39-
| because it's nested under this `unsafe` fn
40-
4131
error: unnecessary `unsafe` block
4232
--> $DIR/lint-unused-unsafe.rs:23:9
4333
|
@@ -46,22 +36,13 @@ LL | unsafe { // don't put the warning here
4636
LL | unsafe {
4737
| ^^^^^^ unnecessary `unsafe` block
4838

49-
error: unnecessary `unsafe` block
50-
--> $DIR/lint-unused-unsafe.rs:29:5
51-
|
52-
LL | unsafe fn bad7() {
53-
| ---------------- because it's nested under this `unsafe` fn
54-
LL | unsafe {
55-
| ^^^^^^ unnecessary `unsafe` block
56-
5739
error: unnecessary `unsafe` block
5840
--> $DIR/lint-unused-unsafe.rs:30:9
5941
|
60-
LL | unsafe fn bad7() {
61-
| ---------------- because it's nested under this `unsafe` fn
6242
LL | unsafe {
43+
| ------ because it's nested under this `unsafe` block
6344
LL | unsafe {
6445
| ^^^^^^ unnecessary `unsafe` block
6546

66-
error: aborting due to 8 previous errors
47+
error: aborting due to 6 previous errors
6748

0 commit comments

Comments
 (0)