Skip to content

Commit

Permalink
Delay bug to prevent ICE in MIR borrowck
Browse files Browse the repository at this point in the history
  • Loading branch information
JohnTitor committed Jan 8, 2020
1 parent ed6468d commit 4fce9c2
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 4fce9c2

Please sign in to comment.