Skip to content

Commit

Permalink
Rollup merge of rust-lang#67967 - JohnTitor:fix-ice-0107, r=matthewja…
Browse files Browse the repository at this point in the history
…sper

Delay bug to prevent ICE in MIR borrowck

Fixes rust-lang#67947

r? @matthewjasper
  • Loading branch information
JohnTitor committed Jan 9, 2020
2 parents ee90f09 + 4fce9c2 commit 08c5999
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 1 deletion.
8 changes: 7 additions & 1 deletion src/librustc_mir/transform/elaborate_drops.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
7 changes: 7 additions & 0 deletions src/test/ui/mir/issue-67947.rs
Original file line number Diff line number Diff line change
@@ -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 changes: 16 additions & 0 deletions src/test/ui/mir/issue-67947.stderr
Original file line number Diff line number Diff line change
@@ -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`.

0 comments on commit 08c5999

Please sign in to comment.