@@ -349,7 +349,7 @@ impl AssertMessage {
349349 }
350350}
351351
352- #[ derive( Copy , Clone , Debug , Eq , PartialEq , Serialize ) ]
352+ #[ derive( Copy , Clone , Debug , Eq , PartialEq , Hash , Serialize ) ]
353353pub enum BinOp {
354354 Add ,
355355 AddUnchecked ,
@@ -384,7 +384,7 @@ impl BinOp {
384384 }
385385}
386386
387- #[ derive( Copy , Clone , Debug , Eq , PartialEq , Serialize ) ]
387+ #[ derive( Copy , Clone , Debug , Eq , PartialEq , Hash , Serialize ) ]
388388pub enum UnOp {
389389 Not ,
390390 Neg ,
@@ -490,7 +490,7 @@ pub enum StatementKind {
490490 Nop ,
491491}
492492
493- #[ derive( Clone , Debug , Eq , PartialEq , Serialize ) ]
493+ #[ derive( Clone , Debug , Eq , PartialEq , Hash , Serialize ) ]
494494pub enum Rvalue {
495495 /// Creates a pointer with the indicated mutability to the place.
496496 ///
@@ -666,7 +666,7 @@ impl Rvalue {
666666 }
667667}
668668
669- #[ derive( Clone , Debug , Eq , PartialEq , Serialize ) ]
669+ #[ derive( Clone , Debug , Eq , PartialEq , Hash , Serialize ) ]
670670pub enum AggregateKind {
671671 Array ( Ty ) ,
672672 Tuple ,
@@ -677,14 +677,14 @@ pub enum AggregateKind {
677677 RawPtr ( Ty , Mutability ) ,
678678}
679679
680- #[ derive( Clone , Debug , Eq , PartialEq , Serialize ) ]
680+ #[ derive( Clone , Debug , Eq , PartialEq , Hash , Serialize ) ]
681681pub enum Operand {
682682 Copy ( Place ) ,
683683 Move ( Place ) ,
684684 Constant ( ConstOperand ) ,
685685}
686686
687- #[ derive( Clone , Eq , PartialEq , Serialize ) ]
687+ #[ derive( Clone , Eq , PartialEq , Hash , Serialize ) ]
688688pub struct Place {
689689 pub local : Local ,
690690 /// projection out of a place (access a field, deref a pointer, etc)
@@ -697,7 +697,7 @@ impl From<Local> for Place {
697697 }
698698}
699699
700- #[ derive( Clone , Debug , Eq , PartialEq , Serialize ) ]
700+ #[ derive( Clone , Debug , Eq , PartialEq , Hash , Serialize ) ]
701701pub struct ConstOperand {
702702 pub span : Span ,
703703 pub user_ty : Option < UserTypeAnnotationIndex > ,
@@ -770,7 +770,7 @@ pub enum VarDebugInfoContents {
770770// ProjectionElem<Local, Ty>) and user-provided type annotations (for which the projection elements
771771// are of type ProjectionElem<(), ()>).
772772// In rustc_public's IR we don't need this generality, so we just use ProjectionElem for Places.
773- #[ derive( Clone , Debug , Eq , PartialEq , Serialize ) ]
773+ #[ derive( Clone , Debug , Eq , PartialEq , Hash , Serialize ) ]
774774pub enum ProjectionElem {
775775 /// Dereference projections (e.g. `*_1`) project to the address referenced by the base place.
776776 Deref ,
@@ -913,7 +913,7 @@ impl SwitchTargets {
913913 }
914914}
915915
916- #[ derive( Copy , Clone , Debug , Eq , PartialEq , Serialize ) ]
916+ #[ derive( Copy , Clone , Debug , Eq , PartialEq , Hash , Serialize ) ]
917917pub enum BorrowKind {
918918 /// Data must be immutable and is aliasable.
919919 Shared ,
@@ -940,7 +940,7 @@ impl BorrowKind {
940940 }
941941}
942942
943- #[ derive( Copy , Clone , Debug , Eq , PartialEq , Serialize ) ]
943+ #[ derive( Copy , Clone , Debug , Eq , PartialEq , Hash , Serialize ) ]
944944pub enum RawPtrKind {
945945 Mut ,
946946 Const ,
@@ -958,14 +958,14 @@ impl RawPtrKind {
958958 }
959959}
960960
961- #[ derive( Copy , Clone , Debug , Eq , PartialEq , Serialize ) ]
961+ #[ derive( Copy , Clone , Debug , Eq , PartialEq , Hash , Serialize ) ]
962962pub enum MutBorrowKind {
963963 Default ,
964964 TwoPhaseBorrow ,
965965 ClosureCapture ,
966966}
967967
968- #[ derive( Copy , Clone , Debug , Eq , PartialEq , Serialize ) ]
968+ #[ derive( Copy , Clone , Debug , Eq , PartialEq , Hash , Serialize ) ]
969969pub enum FakeBorrowKind {
970970 /// A shared (deep) borrow. Data must be immutable and is aliasable.
971971 Deep ,
@@ -982,13 +982,13 @@ pub enum Mutability {
982982 Mut ,
983983}
984984
985- #[ derive( Copy , Clone , Debug , Eq , PartialEq , Serialize ) ]
985+ #[ derive( Copy , Clone , Debug , Eq , PartialEq , Hash , Serialize ) ]
986986pub enum Safety {
987987 Safe ,
988988 Unsafe ,
989989}
990990
991- #[ derive( Copy , Clone , Debug , Eq , PartialEq , Serialize ) ]
991+ #[ derive( Copy , Clone , Debug , Eq , PartialEq , Hash , Serialize ) ]
992992pub enum PointerCoercion {
993993 /// Go from a fn-item type to a fn-pointer type.
994994 ReifyFnPointer ,
@@ -1015,7 +1015,7 @@ pub enum PointerCoercion {
10151015 Unsize ,
10161016}
10171017
1018- #[ derive( Copy , Clone , Debug , Eq , PartialEq , Serialize ) ]
1018+ #[ derive( Copy , Clone , Debug , Eq , PartialEq , Hash , Serialize ) ]
10191019pub enum CastKind {
10201020 // FIXME(smir-rename): rename this to PointerExposeProvenance
10211021 PointerExposeAddress ,
@@ -1030,7 +1030,7 @@ pub enum CastKind {
10301030 Transmute ,
10311031}
10321032
1033- #[ derive( Clone , Debug , Eq , PartialEq , Serialize ) ]
1033+ #[ derive( Clone , Debug , Eq , PartialEq , Hash , Serialize ) ]
10341034pub enum NullOp {
10351035 /// Returns the size of a value of that type.
10361036 SizeOf ,
0 commit comments