Skip to content

Commit

Permalink
Rollup merge of rust-lang#115643 - bvanjoi:fix-115203, r=RalfJung,oli…
Browse files Browse the repository at this point in the history
…-obk

fix: return early when has tainted in mir-lint

Fixes rust-lang#115203

`a[..]` is of indeterminate size, it had been reported error during borrow check, therefore we skip the mir lint process.
  • Loading branch information
GuillaumeGomez committed Sep 8, 2023
2 parents 575c363 + 967410c commit 60327bb
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 0 deletions.
4 changes: 4 additions & 0 deletions compiler/rustc_mir_transform/src/const_prop_lint.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,10 @@ pub struct ConstProp;

impl<'tcx> MirLint<'tcx> for ConstProp {
fn run_lint(&self, tcx: TyCtxt<'tcx>, body: &Body<'tcx>) {
if body.tainted_by_errors.is_some() {
return;
}

// will be evaluated by miri and produce its errors there
if body.source.promoted.is_some() {
return;
Expand Down
11 changes: 11 additions & 0 deletions tests/ui/unsized/issue-115203.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// compile-flags: --emit link

fn main() {
let a: [i32; 0] = [];
match [a[..]] {
//~^ ERROR cannot move a value of type `[i32]
//~| ERROR cannot move out of type `[i32]`, a non-copy slice
[[]] => (),
_ => (),
}
}
19 changes: 19 additions & 0 deletions tests/ui/unsized/issue-115203.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
error[E0161]: cannot move a value of type `[i32]`
--> $DIR/issue-115203.rs:5:12
|
LL | match [a[..]] {
| ^^^^^ the size of `[i32]` cannot be statically determined

error[E0508]: cannot move out of type `[i32]`, a non-copy slice
--> $DIR/issue-115203.rs:5:12
|
LL | match [a[..]] {
| ^^^^^
| |
| cannot move out of here
| move occurs because value has type `[i32]`, which does not implement the `Copy` trait

error: aborting due to 2 previous errors

Some errors have detailed explanations: E0161, E0508.
For more information about an error, try `rustc --explain E0161`.

0 comments on commit 60327bb

Please sign in to comment.