@@ -18,7 +18,6 @@ use rustc_data_structures::fx::FxHashMap;
18
18
use rustc_hir:: def_id:: { CrateNum , DefId } ;
19
19
use rustc_serialize:: { Decodable , Decoder , Encodable , Encoder } ;
20
20
use rustc_span:: Span ;
21
- use std:: convert:: { TryFrom , TryInto } ;
22
21
use std:: hash:: Hash ;
23
22
use std:: intrinsics;
24
23
use std:: marker:: DiscriminantKind ;
95
94
E : TyEncoder < ' tcx > ,
96
95
M : for < ' b > Fn ( & ' b mut E ) -> & ' b mut FxHashMap < T , usize > ,
97
96
T : EncodableWithShorthand < ' tcx , E > ,
98
- <T :: Variant as DiscriminantKind >:: Discriminant : Ord + TryFrom < usize > ,
97
+ // The discriminant and shorthand must have the same size.
98
+ T :: Variant : DiscriminantKind < Discriminant = isize > ,
99
99
{
100
100
let existing_shorthand = cache ( encoder) . get ( value) . copied ( ) ;
101
101
if let Some ( shorthand) = existing_shorthand {
@@ -111,7 +111,7 @@ where
111
111
// The shorthand encoding uses the same usize as the
112
112
// discriminant, with an offset so they can't conflict.
113
113
let discriminant = intrinsics:: discriminant_value ( variant) ;
114
- assert ! ( discriminant < SHORTHAND_OFFSET . try_into ( ) . ok ( ) . unwrap ( ) ) ;
114
+ assert ! ( SHORTHAND_OFFSET > discriminant as usize ) ;
115
115
116
116
let shorthand = start + SHORTHAND_OFFSET ;
117
117
0 commit comments