@@ -144,13 +144,13 @@ fn univariant_uninterned<'tcx>(
144
144
cx. calc . univariant ( fields, repr, kind) . map_err ( |err| map_error ( cx, ty, err) )
145
145
}
146
146
147
- fn validate_const_with_value < ' tcx > (
147
+ fn extract_valtree_and_ty < ' tcx > (
148
148
const_ : ty:: Const < ' tcx > ,
149
149
ty : Ty < ' tcx > ,
150
150
cx : & LayoutCx < ' tcx > ,
151
- ) -> Result < ty:: Const < ' tcx > , & ' tcx LayoutError < ' tcx > > {
151
+ ) -> Result < ( ty:: ValTree < ' tcx > , Ty < ' tcx > ) , & ' tcx LayoutError < ' tcx > > {
152
152
match const_. kind ( ) {
153
- ty:: ConstKind :: Value ( .. ) => Ok ( const_ ) ,
153
+ ty:: ConstKind :: Value ( ty , valtree ) => Ok ( ( valtree , ty ) ) ,
154
154
ty:: ConstKind :: Error ( guar) => {
155
155
return Err ( error ( cx, LayoutError :: ReferencesError ( guar) ) ) ;
156
156
}
@@ -209,14 +209,15 @@ fn layout_of_uncached<'tcx>(
209
209
& mut layout. backend_repr
210
210
{
211
211
if let Some ( start) = start {
212
- scalar . valid_range_mut ( ) . start =
213
- validate_const_with_value ( start, ty , cx ) ?
214
- . try_to_bits ( tcx, cx. typing_env )
215
- . ok_or_else ( || error ( cx, LayoutError :: Unknown ( ty) ) ) ?;
212
+ let ( valtree , ty ) = extract_valtree_and_ty ( start , ty , cx ) ? ;
213
+ scalar . valid_range_mut ( ) . start = valtree
214
+ . try_to_bits ( tcx, ty , cx. typing_env )
215
+ . ok_or_else ( || error ( cx, LayoutError :: Unknown ( ty) ) ) ?;
216
216
}
217
217
if let Some ( end) = end {
218
- let mut end = validate_const_with_value ( end, ty, cx) ?
219
- . try_to_bits ( tcx, cx. typing_env )
218
+ let ( valtree, ty) = extract_valtree_and_ty ( end, ty, cx) ?;
219
+ let mut end = valtree
220
+ . try_to_bits ( tcx, ty, cx. typing_env )
220
221
. ok_or_else ( || error ( cx, LayoutError :: Unknown ( ty) ) ) ?;
221
222
if !include_end {
222
223
end = end. wrapping_sub ( 1 ) ;
@@ -348,8 +349,7 @@ fn layout_of_uncached<'tcx>(
348
349
349
350
// Arrays and slices.
350
351
ty:: Array ( element, count) => {
351
- let count = validate_const_with_value ( count, ty, cx) ?
352
- . to_valtree ( )
352
+ let count = extract_valtree_and_ty ( count, ty, cx) ?
353
353
. 0
354
354
. try_to_target_usize ( tcx)
355
355
. ok_or_else ( || error ( cx, LayoutError :: Unknown ( ty) ) ) ?;
0 commit comments