@@ -125,7 +125,7 @@ pub type TraitObligation<'tcx> = Obligation<'tcx, ty::PolyTraitPredicate<'tcx>>;
125125
126126// `PredicateObligation` is used a lot. Make sure it doesn't unintentionally get bigger.
127127#[ cfg( target_arch = "x86_64" ) ]
128- static_assert_size ! ( PredicateObligation <' _>, 120 ) ;
128+ static_assert_size ! ( PredicateObligation <' _>, 112 ) ;
129129
130130/// The reason why we incurred this obligation; used for error reporting.
131131#[ derive( Clone , Debug , PartialEq , Eq , Hash ) ]
@@ -234,11 +234,7 @@ pub enum ObligationCauseCode<'tcx> {
234234 MatchExpressionArmPattern { span : Span , ty : Ty < ' tcx > } ,
235235
236236 /// Computing common supertype in an if expression
237- IfExpression {
238- then : Span ,
239- outer : Option < Span > ,
240- semicolon : Option < Span > ,
241- } ,
237+ IfExpression ( Box < IfExpressionCause > ) ,
242238
243239 /// Computing common supertype of an if expression with no else counter-part
244240 IfExpressionWithNoElse ,
@@ -270,7 +266,7 @@ pub enum ObligationCauseCode<'tcx> {
270266
271267// `ObligationCauseCode` is used a lot. Make sure it doesn't unintentionally get bigger.
272268#[ cfg( target_arch = "x86_64" ) ]
273- static_assert_size ! ( ObligationCauseCode <' _>, 40 ) ;
269+ static_assert_size ! ( ObligationCauseCode <' _>, 32 ) ;
274270
275271#[ derive( Clone , Debug , PartialEq , Eq , Hash ) ]
276272pub struct MatchExpressionArmCause < ' tcx > {
@@ -281,6 +277,13 @@ pub struct MatchExpressionArmCause<'tcx> {
281277 pub discrim_hir_id : hir:: HirId ,
282278}
283279
280+ #[ derive( Clone , Debug , PartialEq , Eq , Hash ) ]
281+ pub struct IfExpressionCause {
282+ pub then : Span ,
283+ pub outer : Option < Span > ,
284+ pub semicolon : Option < Span > ,
285+ }
286+
284287#[ derive( Clone , Debug , PartialEq , Eq , Hash ) ]
285288pub struct DerivedObligationCause < ' tcx > {
286289 /// The trait reference of the parent obligation that led to the
0 commit comments