fix wired issue introduced by punsafeCoerce

This commit is contained in:
fanghr 2022-05-05 20:38:10 +08:00
parent 6a887e4cbd
commit a46a166a03

View file

@ -48,7 +48,6 @@ import Agora.SafeMoney (GTTag)
import Agora.Utils (pkeysEqual, pnotNull) import Agora.Utils (pkeysEqual, pnotNull)
import Control.Applicative (Const) import Control.Applicative (Const)
import Control.Arrow (first) import Control.Arrow (first)
import Plutarch.Builtin (PBuiltinMap)
import Plutarch.DataRepr (DerivePConstantViaData (..), PDataFields, PIsDataReprInstances (..)) import Plutarch.DataRepr (DerivePConstantViaData (..), PDataFields, PIsDataReprInstances (..))
import Plutarch.Lift ( import Plutarch.Lift (
DerivePConstantViaNewtype (..), DerivePConstantViaNewtype (..),
@ -415,17 +414,16 @@ proposalDatumValid proposal =
plam $ \datum' -> P.do plam $ \datum' -> P.do
datum <- pletFields @'["effects", "cosigners", "votes"] $ datum' datum <- pletFields @'["effects", "cosigners", "votes"] $ datum'
let effects :: Term _ (PBuiltinMap Agora.Proposal.PResultTag (PBuiltinMap Plutarch.Api.V1.PValidatorHash Plutarch.Api.V1.PDatumHash)) let atLeastOneNegativeResult =
effects = pany
-- JUSTIFICATION: # phoistAcyclic
-- @datum.effects : PMap PResultTag (PMap PValidatorHash PDatumHash)@ ( plam $ \m ->
-- @PMap PResultTag (PMap PValidatorHash PDatumHash)@ is equivalent to let l :: Term _ (PBuiltinList _)
-- @PBuiltinMap PResultTag (PBuiltinMap Plutarch.Api.V1.PValidatorHash Plutarch.Api.V1.PDatumHash)@ l = pto $ pfromData $ psndBuiltin # m
punsafeCoerce datum.effects in pnull # l
)
atLeastOneNegativeResult :: Term _ PBool #$ pto
atLeastOneNegativeResult = $ pfromData datum.effects
pany # plam (\pair -> pnull #$ pfromData $ psndBuiltin # pair) # effects
foldr1 foldr1
(#&&) (#&&)