mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-30 13:06:28 +03:00
Fix adjustments
This commit is contained in:
@@ -130,12 +130,12 @@ fn collect_unsafe_exprs<'tcx>(
|
||||
unsafe_ops.push(("access of a mutable static occurs here", expr.span));
|
||||
},
|
||||
|
||||
ExprKind::Unary(UnOp::Deref, e) if cx.typeck_results().expr_ty_adjusted(e).is_raw_ptr() => {
|
||||
ExprKind::Unary(UnOp::Deref, e) if cx.typeck_results().expr_ty(e).is_raw_ptr() => {
|
||||
unsafe_ops.push(("raw pointer dereference occurs here", expr.span));
|
||||
},
|
||||
|
||||
ExprKind::Call(path_expr, _) => {
|
||||
let sig = match *cx.typeck_results().expr_ty(path_expr).kind() {
|
||||
let sig = match *cx.typeck_results().expr_ty_adjusted(path_expr).kind() {
|
||||
ty::FnDef(id, _) => cx.tcx.fn_sig(id).skip_binder(),
|
||||
ty::FnPtr(sig_tys, hdr) => sig_tys.with(hdr),
|
||||
_ => return Continue(Descend::Yes),
|
||||
|
||||
@@ -105,6 +105,14 @@ fn correct3() {
|
||||
}
|
||||
}
|
||||
|
||||
fn with_adjustment(f: &unsafe fn()) {
|
||||
unsafe {
|
||||
//~^ multiple_unsafe_ops_per_block
|
||||
f();
|
||||
f();
|
||||
}
|
||||
}
|
||||
|
||||
fn issue10064() {
|
||||
unsafe fn read_char_bad(ptr: *const u8) -> char {
|
||||
unsafe { char::from_u32_unchecked(*ptr.cast::<u32>()) }
|
||||
|
||||
@@ -113,24 +113,45 @@ LL | asm!("nop");
|
||||
| ^^^^^^^^^^^
|
||||
|
||||
error: this `unsafe` block contains 2 unsafe operations, expected only one
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:110:9
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:109:5
|
||||
|
|
||||
LL | / unsafe {
|
||||
LL | |
|
||||
LL | | f();
|
||||
LL | | f();
|
||||
LL | | }
|
||||
| |_____^
|
||||
|
|
||||
note: unsafe function call occurs here
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:111:9
|
||||
|
|
||||
LL | f();
|
||||
| ^^^
|
||||
note: unsafe function call occurs here
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:112:9
|
||||
|
|
||||
LL | f();
|
||||
| ^^^
|
||||
|
||||
error: this `unsafe` block contains 2 unsafe operations, expected only one
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:118:9
|
||||
|
|
||||
LL | unsafe { char::from_u32_unchecked(*ptr.cast::<u32>()) }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
note: unsafe function call occurs here
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:110:18
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:118:18
|
||||
|
|
||||
LL | unsafe { char::from_u32_unchecked(*ptr.cast::<u32>()) }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
note: raw pointer dereference occurs here
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:110:43
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:118:43
|
||||
|
|
||||
LL | unsafe { char::from_u32_unchecked(*ptr.cast::<u32>()) }
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: this `unsafe` block contains 2 unsafe operations, expected only one
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:131:9
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:139:9
|
||||
|
|
||||
LL | / unsafe {
|
||||
LL | |
|
||||
@@ -140,18 +161,18 @@ LL | | }
|
||||
| |_________^
|
||||
|
|
||||
note: unsafe function call occurs here
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:133:13
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:141:13
|
||||
|
|
||||
LL | x();
|
||||
| ^^^
|
||||
note: unsafe function call occurs here
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:134:13
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:142:13
|
||||
|
|
||||
LL | x();
|
||||
| ^^^
|
||||
|
||||
error: this `unsafe` block contains 2 unsafe operations, expected only one
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:143:13
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:151:13
|
||||
|
|
||||
LL | / unsafe {
|
||||
LL | |
|
||||
@@ -161,18 +182,18 @@ LL | | }
|
||||
| |_____________^
|
||||
|
|
||||
note: unsafe function call occurs here
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:145:17
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:153:17
|
||||
|
|
||||
LL | T::X();
|
||||
| ^^^^^^
|
||||
note: unsafe function call occurs here
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:146:17
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:154:17
|
||||
|
|
||||
LL | T::X();
|
||||
| ^^^^^^
|
||||
|
||||
error: this `unsafe` block contains 2 unsafe operations, expected only one
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:154:9
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:162:9
|
||||
|
|
||||
LL | / unsafe {
|
||||
LL | |
|
||||
@@ -182,18 +203,18 @@ LL | | }
|
||||
| |_________^
|
||||
|
|
||||
note: unsafe function call occurs here
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:156:13
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:164:13
|
||||
|
|
||||
LL | x.0();
|
||||
| ^^^^^
|
||||
note: unsafe function call occurs here
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:157:13
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:165:13
|
||||
|
|
||||
LL | x.0();
|
||||
| ^^^^^
|
||||
|
||||
error: this `unsafe` block contains 2 unsafe operations, expected only one
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:184:5
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:192:5
|
||||
|
|
||||
LL | / unsafe {
|
||||
LL | |
|
||||
@@ -204,18 +225,18 @@ LL | | }
|
||||
| |_____^
|
||||
|
|
||||
note: unsafe function call occurs here
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:186:9
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:194:9
|
||||
|
|
||||
LL | not_very_safe();
|
||||
| ^^^^^^^^^^^^^^^
|
||||
note: modification of a mutable static occurs here
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:187:9
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:195:9
|
||||
|
|
||||
LL | STATIC += 1;
|
||||
| ^^^^^^^^^^^
|
||||
|
||||
error: this `unsafe` block contains 2 unsafe operations, expected only one
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:199:5
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:207:5
|
||||
|
|
||||
LL | / unsafe {
|
||||
LL | |
|
||||
@@ -225,18 +246,18 @@ LL | | }
|
||||
| |_____^
|
||||
|
|
||||
note: unsafe function call occurs here
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:201:9
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:209:9
|
||||
|
|
||||
LL | not_very_safe();
|
||||
| ^^^^^^^^^^^^^^^
|
||||
note: unsafe function call occurs here
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:202:9
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:210:9
|
||||
|
|
||||
LL | foo_unchecked().await;
|
||||
| ^^^^^^^^^^^^^^^
|
||||
|
||||
error: this `unsafe` block contains 2 unsafe operations, expected only one
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:206:5
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:214:5
|
||||
|
|
||||
LL | / unsafe {
|
||||
LL | |
|
||||
@@ -245,15 +266,15 @@ LL | | }
|
||||
| |_____^
|
||||
|
|
||||
note: unsafe method call occurs here
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:208:9
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:216:9
|
||||
|
|
||||
LL | Some(foo_unchecked()).unwrap_unchecked().await;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
note: unsafe function call occurs here
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:208:14
|
||||
--> tests/ui/multiple_unsafe_ops_per_block.rs:216:14
|
||||
|
|
||||
LL | Some(foo_unchecked()).unwrap_unchecked().await;
|
||||
| ^^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to 11 previous errors
|
||||
error: aborting due to 12 previous errors
|
||||
|
||||
|
||||
Reference in New Issue
Block a user