diff options
Diffstat (limited to 'compiler/GHC/Iface/Syntax.hs')
-rw-r--r-- | compiler/GHC/Iface/Syntax.hs | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/compiler/GHC/Iface/Syntax.hs b/compiler/GHC/Iface/Syntax.hs index 73e8525589..e97299f171 100644 --- a/compiler/GHC/Iface/Syntax.hs +++ b/compiler/GHC/Iface/Syntax.hs @@ -52,6 +52,7 @@ import GHC.Iface.Recomp.Binary import GHC.Core( IsOrphan, isOrphan ) import GHC.Types.Demand import GHC.Types.Cpr +import GHC.Types.Termination import GHC.Core.Class import GHC.Types.FieldLabel import GHC.Types.Name.Set @@ -349,6 +350,7 @@ type IfaceIdInfo = [IfaceInfoItem] data IfaceInfoItem = HsArity Arity | HsStrictness StrictSig + | HsTerm TermSig | HsCpr CprSig | HsInline InlinePragma | HsUnfold Bool -- True <=> isStrongLoopBreaker is true @@ -1466,6 +1468,7 @@ instance Outputable IfaceInfoItem where ppr (HsInline prag) = text "Inline:" <+> ppr prag ppr (HsArity arity) = text "Arity:" <+> int arity ppr (HsStrictness str) = text "Strictness:" <+> ppr str + ppr (HsTerm term) = text "Term:" <+> ppr term ppr (HsCpr cpr) = text "CPR:" <+> ppr cpr ppr HsNoCafRefs = text "HasNoCafRefs" ppr HsLevity = text "Never levity-polymorphic" @@ -2233,6 +2236,7 @@ instance Binary IfaceInfoItem where put_ bh HsLevity = putByte bh 5 put_ bh (HsCpr cpr) = putByte bh 6 >> put_ bh cpr put_ bh (HsLFInfo lf_info) = putByte bh 7 >> put_ bh lf_info + put_ bh (HsTerm cpr) = putByte bh 8 >> put_ bh cpr get bh = do h <- getByte bh @@ -2246,7 +2250,9 @@ instance Binary IfaceInfoItem where 4 -> return HsNoCafRefs 5 -> return HsLevity 6 -> HsCpr <$> get bh - _ -> HsLFInfo <$> get bh + 7 -> HsLFInfo <$> get bh + 8 -> HsTerm <$> get bh + _ -> pprPanic "Binary IfaceInfoItem: Invalid tag" (int (fromIntegral h)) instance Binary IfaceUnfolding where put_ bh (IfCoreUnfold s e) = do @@ -2586,8 +2592,9 @@ instance NFData IfaceInfoItem where HsUnfold b unf -> rnf b `seq` rnf unf HsNoCafRefs -> () HsLevity -> () - HsCpr cpr -> cpr `seq` () + HsCpr cpr -> seqCprSig cpr `seq` () HsLFInfo lf_info -> lf_info `seq` () -- TODO: seq further? + HsTerm term -> seqTermSig term `seq` () instance NFData IfaceUnfolding where rnf = \case |