@@ -80,11 +80,13 @@ import Control.State.Transition (
8080 STS (.. ),
8181 TRC (.. ),
8282 TransitionRule ,
83- failOnJust ,
83+ failOnNonEmptyMap ,
8484 judgmentContext ,
8585 liftSTS ,
8686 trans ,
8787 )
88+ import Data.Map.NonEmpty (NonEmptyMap )
89+ import qualified Data.Map.NonEmpty as NEM
8890import Data.Map.Strict (Map )
8991import qualified Data.Map.Strict as Map
9092import Data.Sequence (Seq )
@@ -127,7 +129,7 @@ data ShelleyLedgerPredFailure era
127129 = UtxowFailure (PredicateFailure (EraRule " UTXOW" era )) -- Subtransition Failures
128130 | DelegsFailure (PredicateFailure (EraRule " DELEGS" era )) -- Subtransition Failures
129131 | ShelleyWithdrawalsMissingAccounts Withdrawals
130- | ShelleyIncompleteWithdrawals (Map RewardAccount (Mismatch RelEQ Coin ))
132+ | ShelleyIncompleteWithdrawals (NonEmptyMap RewardAccount (Mismatch RelEQ Coin ))
131133 deriving (Generic )
132134
133135ledgerSlotNoL :: Lens' (LedgerEnv era ) SlotNo
@@ -361,13 +363,11 @@ testIncompleteAndMissingWithdrawals accounts withdrawals = do
361363 network <- liftSTS $ asks networkId
362364 let (missingWithdrawals, incompleteWithdrawals) =
363365 case withdrawalsThatDoNotDrainAccounts withdrawals network accounts of
364- Nothing -> (Nothing , Nothing )
365- Just (missing, incomplete) ->
366- ( if null (unWithdrawals missing) then Nothing else Just missing
367- , if null incomplete then Nothing else Just incomplete
368- )
369- failOnJust missingWithdrawals $ injectFailure . ShelleyWithdrawalsMissingAccounts
370- failOnJust incompleteWithdrawals $ injectFailure . ShelleyIncompleteWithdrawals
366+ Nothing -> (Map. empty, Map. empty)
367+ Just (missing, incomplete) -> (unWithdrawals missing, incomplete)
368+ failOnNonEmptyMap missingWithdrawals $
369+ injectFailure . ShelleyWithdrawalsMissingAccounts . Withdrawals . NEM. toMap
370+ failOnNonEmptyMap incompleteWithdrawals $ injectFailure . ShelleyIncompleteWithdrawals
371371
372372instance
373373 ( Era era
0 commit comments