Rollup merge of #67967 - JohnTitor:fix-ice-0107, r=matthewjasper
Delay bug to prevent ICE in MIR borrowck Fixes #67947 r? @matthewjasper
This commit is contained in:
commit
08c5999dc4
@ -28,7 +28,13 @@ impl<'tcx> MirPass<'tcx> for ElaborateDrops {
|
||||
let param_env = tcx.param_env(src.def_id()).with_reveal_all();
|
||||
let move_data = match MoveData::gather_moves(body, tcx, param_env) {
|
||||
Ok(move_data) => move_data,
|
||||
Err(_) => bug!("No `move_errors` should be allowed in MIR borrowck"),
|
||||
Err((move_data, _)) => {
|
||||
tcx.sess.delay_span_bug(
|
||||
body.span,
|
||||
"No `move_errors` should be allowed in MIR borrowck",
|
||||
);
|
||||
move_data
|
||||
}
|
||||
};
|
||||
let elaborate_patch = {
|
||||
let body = &*body;
|
||||
|
7
src/test/ui/mir/issue-67947.rs
Normal file
7
src/test/ui/mir/issue-67947.rs
Normal file
@ -0,0 +1,7 @@
|
||||
struct Bug {
|
||||
A: [(); { *"" }.len()],
|
||||
//~^ ERROR: cannot move a value of type str
|
||||
//~| ERROR: cannot move out of a shared reference
|
||||
}
|
||||
|
||||
fn main() {}
|
16
src/test/ui/mir/issue-67947.stderr
Normal file
16
src/test/ui/mir/issue-67947.stderr
Normal file
@ -0,0 +1,16 @@
|
||||
error[E0161]: cannot move a value of type str: the size of str cannot be statically determined
|
||||
--> $DIR/issue-67947.rs:2:13
|
||||
|
|
||||
LL | A: [(); { *"" }.len()],
|
||||
| ^^^^^^^
|
||||
|
||||
error[E0507]: cannot move out of a shared reference
|
||||
--> $DIR/issue-67947.rs:2:15
|
||||
|
|
||||
LL | A: [(); { *"" }.len()],
|
||||
| ^^^ move occurs because value has type `str`, which does not implement the `Copy` trait
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0161, E0507.
|
||||
For more information about an error, try `rustc --explain E0161`.
|
Loading…
x
Reference in New Issue
Block a user