File tree 3 files changed +36
-0
lines changed
compiler/rustc_mir_transform/src
3 files changed +36
-0
lines changed Original file line number Diff line number Diff line change @@ -66,6 +66,10 @@ impl<'tcx> MirPass<'tcx> for ConstProp {
66
66
67
67
#[ instrument( skip( self , tcx) , level = "debug" ) ]
68
68
fn run_pass ( & self , tcx : TyCtxt < ' tcx > , body : & mut Body < ' tcx > ) {
69
+ if body. tainted_by_errors . is_some ( ) {
70
+ return ;
71
+ }
72
+
69
73
// will be evaluated by miri and produce its errors there
70
74
if body. source . promoted . is_some ( ) {
71
75
return ;
Original file line number Diff line number Diff line change
1
+ // compile-flags: --emit=link -Zmir-opt-level=2 -Zpolymorphize=on
2
+
3
+ fn foo < T > ( ) {
4
+ let a: [ i32 ; 0 ] = [ ] ;
5
+ match [ a[ ..] ] {
6
+ //~^ ERROR cannot move a value of type `[i32]
7
+ //~| ERROR cannot move out of type `[i32]`, a non-copy slice
8
+ [ [ x] ] => { }
9
+ _ => ( ) ,
10
+ }
11
+ }
12
+
13
+ fn main ( ) { }
Original file line number Diff line number Diff line change
1
+ error[E0161]: cannot move a value of type `[i32]`
2
+ --> $DIR/issue-115809.rs:5:12
3
+ |
4
+ LL | match [a[..]] {
5
+ | ^^^^^ the size of `[i32]` cannot be statically determined
6
+
7
+ error[E0508]: cannot move out of type `[i32]`, a non-copy slice
8
+ --> $DIR/issue-115809.rs:5:12
9
+ |
10
+ LL | match [a[..]] {
11
+ | ^^^^^
12
+ | |
13
+ | cannot move out of here
14
+ | move occurs because value has type `[i32]`, which does not implement the `Copy` trait
15
+
16
+ error: aborting due to 2 previous errors
17
+
18
+ Some errors have detailed explanations: E0161, E0508.
19
+ For more information about an error, try `rustc --explain E0161`.
You can’t perform that action at this time.
0 commit comments