@@ -7,7 +7,7 @@ use syntax::source_map::Span;
7
7
use rustc_target:: spec:: abi:: Abi ;
8
8
9
9
use super :: {
10
- InterpResult , PointerArithmetic , InterpError , Scalar , PanicMessage ,
10
+ InterpResult , PointerArithmetic , InterpError , Scalar ,
11
11
InterpCx , Machine , Immediate , OpTy , ImmTy , PlaceTy , MPlaceTy , StackPopCleanup , FnVal ,
12
12
} ;
13
13
@@ -135,28 +135,31 @@ impl<'mir, 'tcx, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
135
135
self . goto_block ( Some ( target) ) ?;
136
136
} else {
137
137
// Compute error message
138
- use rustc:: mir:: interpret:: InterpError :: * ;
139
- return match * msg {
140
- Panic ( PanicMessage :: BoundsCheck { ref len, ref index } ) => {
138
+ use rustc:: mir:: interpret:: PanicMessage :: * ;
139
+ return match msg {
140
+ BoundsCheck { ref len, ref index } => {
141
141
let len = self . read_immediate ( self . eval_operand ( len, None ) ?)
142
142
. expect ( "can't eval len" ) . to_scalar ( ) ?
143
143
. to_bits ( self . memory ( ) . pointer_size ( ) ) ? as u64 ;
144
144
let index = self . read_immediate ( self . eval_operand ( index, None ) ?)
145
145
. expect ( "can't eval index" ) . to_scalar ( ) ?
146
146
. to_bits ( self . memory ( ) . pointer_size ( ) ) ? as u64 ;
147
- err ! ( Panic ( PanicMessage :: BoundsCheck { len, index } ) )
147
+ err ! ( Panic ( BoundsCheck { len, index } ) )
148
148
}
149
- Panic ( PanicMessage :: Overflow ( op) ) =>
150
- Err ( Panic ( PanicMessage :: Overflow ( op) ) . into ( ) ) ,
151
- Panic ( PanicMessage :: OverflowNeg ) =>
152
- Err ( Panic ( PanicMessage :: OverflowNeg ) . into ( ) ) ,
153
- Panic ( PanicMessage :: DivisionByZero ) =>
154
- Err ( Panic ( PanicMessage :: DivisionByZero ) . into ( ) ) ,
155
- Panic ( PanicMessage :: RemainderByZero ) =>
156
- Err ( Panic ( PanicMessage :: RemainderByZero ) . into ( ) ) ,
157
- GeneratorResumedAfterReturn |
158
- GeneratorResumedAfterPanic => unimplemented ! ( ) ,
159
- _ => bug ! ( ) ,
149
+ Overflow ( op) =>
150
+ err ! ( Panic ( Overflow ( * op) ) ) ,
151
+ OverflowNeg =>
152
+ err ! ( Panic ( OverflowNeg ) ) ,
153
+ DivisionByZero =>
154
+ err ! ( Panic ( DivisionByZero ) ) ,
155
+ RemainderByZero =>
156
+ err ! ( Panic ( RemainderByZero ) ) ,
157
+ GeneratorResumedAfterReturn =>
158
+ err ! ( Panic ( GeneratorResumedAfterReturn ) ) ,
159
+ GeneratorResumedAfterPanic =>
160
+ err ! ( Panic ( GeneratorResumedAfterPanic ) ) ,
161
+ Panic { .. } =>
162
+ bug ! ( "`Panic` variant cannot occur in MIR" ) ,
160
163
} ;
161
164
}
162
165
}
0 commit comments