@@ -13,7 +13,7 @@ use crate::mir::mono::StaticDef;
1313use crate :: target:: MachineInfo ;
1414use crate :: { Filename , IndexedVal , Opaque , ThreadLocalIndex } ;
1515
16- #[ derive( Copy , Clone , Eq , PartialEq , Hash , Serialize ) ]
16+ #[ derive( Copy , Clone , Eq , PartialEq , Hash ) ]
1717pub struct Ty ( usize , ThreadLocalIndex ) ;
1818
1919impl Debug for Ty {
@@ -151,7 +151,7 @@ pub enum TyConstKind {
151151 ZSTValue ( Ty ) ,
152152}
153153
154- #[ derive( Copy , Clone , Debug , Eq , PartialEq , Hash , Serialize ) ]
154+ #[ derive( Copy , Clone , Debug , Eq , PartialEq , Hash ) ]
155155pub struct TyConstId ( usize , ThreadLocalIndex ) ;
156156
157157/// Represents a constant in MIR
@@ -212,7 +212,7 @@ impl MirConst {
212212 }
213213}
214214
215- #[ derive( Clone , Copy , Debug , PartialEq , Eq , Hash , Serialize ) ]
215+ #[ derive( Clone , Copy , Debug , PartialEq , Eq , Hash ) ]
216216pub struct MirConstId ( usize , ThreadLocalIndex ) ;
217217
218218type Ident = Opaque ;
@@ -255,7 +255,7 @@ pub struct Placeholder<T> {
255255 pub bound : T ,
256256}
257257
258- #[ derive( Clone , Copy , PartialEq , Eq , Hash , Serialize ) ]
258+ #[ derive( Clone , Copy , PartialEq , Eq , Hash ) ]
259259pub struct Span ( usize , ThreadLocalIndex ) ;
260260
261261impl Debug for Span {
@@ -1566,9 +1566,23 @@ macro_rules! index_impl {
15661566 self . 0
15671567 }
15681568 }
1569+ $crate:: ty:: serialize_index_impl!( $name) ;
1570+ } ;
1571+ }
1572+ macro_rules! serialize_index_impl {
1573+ ( $name: ident) => {
1574+ impl :: serde:: Serialize for $name {
1575+ fn serialize<S >( & self , serializer: S ) -> Result <S :: Ok , S :: Error >
1576+ where
1577+ S : :: serde:: Serializer ,
1578+ {
1579+ let n: usize = self . 0 ; // Make sure we're serializing an int.
1580+ :: serde:: Serialize :: serialize( & n, serializer)
1581+ }
1582+ }
15691583 } ;
15701584}
1571- pub ( crate ) use index_impl;
1585+ pub ( crate ) use { index_impl, serialize_index_impl } ;
15721586
15731587index_impl ! ( TyConstId ) ;
15741588index_impl ! ( MirConstId ) ;
@@ -1588,7 +1602,7 @@ index_impl!(Span);
15881602/// `a` is in the variant with the `VariantIdx` of `0`,
15891603/// `c` is in the variant with the `VariantIdx` of `1`, and
15901604/// `g` is in the variant with the `VariantIdx` of `0`.
1591- #[ derive( Clone , Copy , Debug , PartialEq , Eq , Hash , Serialize ) ]
1605+ #[ derive( Clone , Copy , Debug , PartialEq , Eq , Hash ) ]
15921606pub struct VariantIdx ( usize , ThreadLocalIndex ) ;
15931607
15941608index_impl ! ( VariantIdx ) ;
0 commit comments