X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FbasicTypes%2FId.lhs;h=e14e47aca3c53335f8c7a1615e9b43a90e03300b;hb=c94408e522e5af3b79a5beadc7e6d15cee553ee7;hp=c7ce818adb64b34fe7e59fc5ca7542377fd50cd2;hpb=0065d5ab628975892cea1ec7303f968c3338cbe1;p=ghc-hetmet.git diff --git a/compiler/basicTypes/Id.lhs b/compiler/basicTypes/Id.lhs index c7ce818..e14e47a 100644 --- a/compiler/basicTypes/Id.lhs +++ b/compiler/basicTypes/Id.lhs @@ -66,7 +66,7 @@ module Id ( idNewStrictness, idNewStrictness_maybe, idWorkerInfo, idUnfolding, - idSpecialisation, idCoreRules, + idSpecialisation, idCoreRules, idHasRules, idCafInfo, idLBVarInfo, idOccInfo, @@ -409,6 +409,9 @@ idSpecialisation id = specInfo (idInfo id) idCoreRules :: Id -> [CoreRule] idCoreRules id = specInfoRules (idSpecialisation id) +idHasRules :: Id -> Bool +idHasRules id = not (isEmptySpecInfo (idSpecialisation id)) + setIdSpecialisation :: Id -> SpecInfo -> Id setIdSpecialisation id spec_info = modifyIdInfo (`setSpecInfo` spec_info) id @@ -472,7 +475,7 @@ idLBVarInfo id = lbvarInfo (idInfo id) isOneShotBndr :: Id -> Bool -- This one is the "business end", called externally. -- Its main purpose is to encapsulate the Horrible State Hack -isOneShotBndr id = isOneShotLambda id || (isStateHackType (idType id)) +isOneShotBndr id = isOneShotLambda id || isStateHackType (idType id) isStateHackType :: Type -> Bool isStateHackType ty @@ -522,8 +525,8 @@ clearOneShotLambda id \begin{code} zapLamIdInfo :: Id -> Id -zapLamIdInfo id = maybeModifyIdInfo zapLamInfo id +zapLamIdInfo id = maybeModifyIdInfo (zapLamInfo (idInfo id)) id -zapDemandIdInfo id = maybeModifyIdInfo zapDemandInfo id +zapDemandIdInfo id = maybeModifyIdInfo (zapDemandInfo (idInfo id)) id \end{code}