Skip to content

Commit 3423816

Browse files
authored
Merge pull request #1236 from IntersectMBO/jordan/remove-caseByronToAlonzoOrBabbageEraOnwards
Remove caseByronToAlonzoOrBabbageEraOnwards and simplify value ops
2 parents 5ef342e + 0dc9792 commit 3423816

8 files changed

Lines changed: 28 additions & 58 deletions

File tree

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
project: cardano-api
2+
3+
pr: 1236
4+
5+
kind:
6+
- maintenance
7+
8+
description: |
9+
Remove caseByronToAlonzoOrBabbageEraOnwards, replacing usages with caseShelleyToAlonzoOrBabbageEraOnwards. Simplify adaAssetL, mkAdaValue, and negateLedgerValue using the Val typeclass (coin, modifyCoin, invert), dropping the groups dependency.

cardano-api/cardano-api.cabal

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,6 @@ library
164164
extra,
165165
filepath,
166166
formatting,
167-
groups,
168167
iproute,
169168
memory,
170169
mempack,

cardano-api/gen/Test/Gen/Cardano/Api/Typed.hs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1002,7 +1002,7 @@ genTxBodyContent sbe = do
10021002
txIns <-
10031003
map (,BuildTxWith (KeyWitness KeyWitnessForSpending)) <$> Gen.list (Range.constant 1 10) genTxIn
10041004
txInsCollateral <- genTxInsCollateral era
1005-
txInsReference <- genTxInsReference era
1005+
txInsReference <- genTxInsReference sbe
10061006
txOuts <- Gen.list (Range.constant 1 10) (genTxOutTxContext sbe)
10071007
txTotalCollateral <- genTxTotalCollateral era
10081008
txReturnCollateral <- genTxReturnCollateral sbe
@@ -1062,10 +1062,10 @@ genTxInsCollateral =
10621062

10631063
genTxInsReference
10641064
:: Applicative (BuildTxWith build)
1065-
=> CardanoEra era
1065+
=> ShelleyBasedEra era
10661066
-> Gen (TxInsReference build era)
10671067
genTxInsReference =
1068-
caseByronToAlonzoOrBabbageEraOnwards
1068+
caseShelleyToAlonzoOrBabbageEraOnwards
10691069
(const (pure TxInsReferenceNone))
10701070
( \w -> do
10711071
txIns <- Gen.list (Range.linear 0 10) genTxIn

cardano-api/src/Cardano/Api/Era.hs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@ module Cardano.Api.Era
6969
, caseByronOrShelleyBasedEra
7070

7171
-- ** Case on ShelleyBasedEra
72-
, caseByronToAlonzoOrBabbageEraOnwards
7372
, caseShelleyToAllegraOrMaryEraOnwards
7473
, caseShelleyToMaryOrAlonzoEraOnwards
7574
, caseShelleyToAlonzoOrBabbageEraOnwards

cardano-api/src/Cardano/Api/Era/Internal/Case.hs

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
module Cardano.Api.Era.Internal.Case
77
( -- Case on CardanoEra
88
caseByronOrShelleyBasedEra
9-
, caseByronToAlonzoOrBabbageEraOnwards
109
-- Case on ShelleyBasedEra
1110
, caseShelleyEraOnlyOrAllegraEraOnwards
1211
, caseShelleyToAllegraOrMaryEraOnwards
@@ -20,7 +19,6 @@ import Cardano.Api.Era.Internal.Core
2019
import Cardano.Api.Era.Internal.Eon.AllegraEraOnwards
2120
import Cardano.Api.Era.Internal.Eon.AlonzoEraOnwards
2221
import Cardano.Api.Era.Internal.Eon.BabbageEraOnwards
23-
import Cardano.Api.Era.Internal.Eon.ByronToAlonzoEra
2422
import Cardano.Api.Era.Internal.Eon.ConwayEraOnwards
2523
import Cardano.Api.Era.Internal.Eon.MaryEraOnwards
2624
import Cardano.Api.Era.Internal.Eon.ShelleyBasedEra
@@ -49,24 +47,6 @@ caseByronOrShelleyBasedEra l r = \case
4947
ConwayEra -> r ShelleyBasedEraConway
5048
DijkstraEra -> error "TODO Dijkstra: caseByronOrShelleyBasedEra: era not supported"
5149

52-
-- | @caseByronToAlonzoOrBabbageEraOnwards f g era@ applies @f@ to byron, shelley, allegra, mary, and alonzo;
53-
-- and @g@ to babbage and later eras.
54-
caseByronToAlonzoOrBabbageEraOnwards
55-
:: ()
56-
=> (ByronToAlonzoEraConstraints era => ByronToAlonzoEra era -> a)
57-
-> (BabbageEraOnwardsConstraints era => BabbageEraOnwards era -> a)
58-
-> CardanoEra era
59-
-> a
60-
caseByronToAlonzoOrBabbageEraOnwards l r = \case
61-
ByronEra -> l ByronToAlonzoEraByron
62-
ShelleyEra -> l ByronToAlonzoEraShelley
63-
AllegraEra -> l ByronToAlonzoEraAllegra
64-
MaryEra -> l ByronToAlonzoEraMary
65-
AlonzoEra -> l ByronToAlonzoEraAlonzo
66-
BabbageEra -> r BabbageEraOnwardsBabbage
67-
ConwayEra -> r BabbageEraOnwardsConway
68-
DijkstraEra -> error "TODO Dijkstra: caseByronToAlonzoOrBabbageEraOnwards: era not supported"
69-
7050
-- | @caseShelleyEraOnlyOrAllegraEraOnwards f g era@ applies @f@ to shelley;
7151
-- and applies @g@ to allegra and later eras.
7252
caseShelleyEraOnlyOrAllegraEraOnwards

cardano-api/src/Cardano/Api/Plutus/Internal/Script.hs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1655,16 +1655,20 @@ deriving instance Eq (ReferenceScript era)
16551655

16561656
deriving instance Show (ReferenceScript era)
16571657

1658-
instance IsCardanoEra era => ToJSON (ReferenceScript era) where
1658+
-- IsShelleyBasedEra constraint is incorrect. Deprecation and removal of this
1659+
-- entire module in favour of the experimental api is the long term solution to this problem.
1660+
instance IsShelleyBasedEra era => ToJSON (ReferenceScript era) where
16591661
toJSON (ReferenceScript _ s) = object ["referenceScript" .= s]
16601662
toJSON ReferenceScriptNone = Aeson.Null
16611663

1662-
instance IsCardanoEra era => FromJSON (ReferenceScript era) where
1664+
-- IsShelleyBasedEra constraint is incorrect. Deprecation and removal of this
1665+
-- entire module in favour of the experimental api is the long term solution to this problem.
1666+
instance IsShelleyBasedEra era => FromJSON (ReferenceScript era) where
16631667
parseJSON = Aeson.withObject "ReferenceScript" $ \o ->
1664-
caseByronToAlonzoOrBabbageEraOnwards
1668+
caseShelleyToAlonzoOrBabbageEraOnwards
16651669
(const (pure ReferenceScriptNone))
16661670
(\w -> ReferenceScript w <$> o .: "referenceScript")
1667-
(cardanoEra :: CardanoEra era)
1671+
(shelleyBasedEra :: ShelleyBasedEra era)
16681672

16691673
refScriptToShelleyScript
16701674
:: ShelleyBasedEra era

cardano-api/src/Cardano/Api/Tx/Internal/Body/Lens.hs

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ import Cardano.Api.Era.Internal.Eon.ConwayEraOnwards
5252
import Cardano.Api.Era.Internal.Eon.MaryEraOnwards
5353
import Cardano.Api.Era.Internal.Eon.ShelleyBasedEra
5454
import Cardano.Api.Era.Internal.Eon.ShelleyEraOnly
55-
import Cardano.Api.Era.Internal.Eon.ShelleyToAllegraEra
5655
import Cardano.Api.Era.Internal.Eon.ShelleyToBabbageEra
5756
import Cardano.Api.Internal.Orphans ()
5857

@@ -64,6 +63,7 @@ import Cardano.Ledger.Coin qualified as L
6463
import Cardano.Ledger.Mary.Value qualified as L
6564
import Cardano.Ledger.Shelley.PParams qualified as L
6665
import Cardano.Ledger.TxIn qualified as L
66+
import Cardano.Ledger.Val qualified as L
6767

6868
import Data.OSet.Strict qualified as L
6969
import Data.Sequence.Strict qualified as L
@@ -219,29 +219,15 @@ mkBasicTxOut sbe addr value =
219219

220220
mkAdaValue :: ShelleyBasedEra era -> L.Coin -> L.Value (ShelleyLedgerEra era)
221221
mkAdaValue sbe coin =
222-
caseShelleyToAllegraOrMaryEraOnwards
223-
(const coin)
224-
(const (L.MaryValue coin mempty))
225-
sbe
222+
shelleyBasedEraConstraints sbe $
223+
L.modifyCoin (const coin) mempty
226224

227225
adaAssetL :: ShelleyBasedEra era -> Lens' (L.Value (ShelleyLedgerEra era)) L.Coin
228226
adaAssetL sbe =
229-
caseShelleyToAllegraOrMaryEraOnwards
230-
adaAssetShelleyToAllegraEraL
231-
adaAssetMaryEraOnwardsL
232-
sbe
233-
234-
adaAssetShelleyToAllegraEraL
235-
:: ShelleyToAllegraEra era -> Lens' (L.Value (ShelleyLedgerEra era)) L.Coin
236-
adaAssetShelleyToAllegraEraL w =
237-
shelleyToAllegraEraConstraints w $ lens id const
238-
239-
adaAssetMaryEraOnwardsL :: MaryEraOnwards era -> Lens' L.MaryValue L.Coin
240-
adaAssetMaryEraOnwardsL w =
241-
maryEraOnwardsConstraints w $
227+
shelleyBasedEraConstraints sbe $
242228
lens
243-
(\(L.MaryValue c _) -> c)
244-
(\(L.MaryValue _ ma) c -> L.MaryValue c ma)
229+
L.coin
230+
(\v c -> L.modifyCoin (const c) v)
245231

246232
multiAssetL
247233
:: MaryEraOnwards era -> Lens' L.MaryValue L.MultiAsset

cardano-api/src/Cardano/Api/Value/Internal.hs

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,6 @@ import Cardano.Api.Parser.Text qualified as P
7979
import Cardano.Api.Plutus.Internal.Script
8080
import Cardano.Api.Serialise.Raw
8181
import Cardano.Api.Serialise.SerialiseUsing
82-
import Cardano.Api.Tx.Internal.Body.Lens qualified as A
8382

8483
import Cardano.Chain.Common qualified as Byron
8584
import Cardano.Ledger.Allegra.Core qualified as L
@@ -88,6 +87,7 @@ import Cardano.Ledger.Mary.TxOut as Mary (scaledMinDeposit)
8887
import Cardano.Ledger.Mary.Value (MaryValue (..))
8988
import Cardano.Ledger.Mary.Value qualified as L
9089
import Cardano.Ledger.Mary.Value qualified as Mary
90+
import Cardano.Ledger.Val qualified as L
9191

9292
import Data.Aeson (FromJSON, FromJSONKey, ToJSON, object, parseJSON, toJSON, withObject)
9393
import Data.Aeson qualified as Aeson
@@ -99,8 +99,6 @@ import Data.ByteString (ByteString)
9999
import Data.ByteString qualified as BS
100100
import Data.ByteString.Short qualified as Short
101101
import Data.Data (Data)
102-
import Data.Function ((&))
103-
import Data.Group (invert)
104102
import Data.List qualified as List
105103
import Data.Map.Merge.Strict qualified as Map
106104
import Data.Map.Strict (Map)
@@ -109,7 +107,6 @@ import Data.MonoTraversable
109107
import Data.Text (Text)
110108
import Data.Text qualified as Text
111109
import GHC.Exts (IsList (..))
112-
import Lens.Micro ((%~))
113110

114111
toByronLovelace :: Lovelace -> Maybe Byron.Lovelace
115112
toByronLovelace (L.Coin x) =
@@ -295,11 +292,7 @@ negateValue (Value m) = Value (Map.map negate m)
295292

296293
negateLedgerValue
297294
:: ShelleyBasedEra era -> L.Value (ShelleyLedgerEra era) -> L.Value (ShelleyLedgerEra era)
298-
negateLedgerValue sbe v =
299-
caseShelleyToAllegraOrMaryEraOnwards
300-
(\_ -> v & A.adaAssetL sbe %~ L.Coin . negate . L.unCoin)
301-
(\w -> v & A.multiAssetL w %~ invert)
302-
sbe
295+
negateLedgerValue sbe v = shelleyBasedEraConstraints sbe $ L.invert v
303296

304297
filterValue :: (AssetId -> Bool) -> Value -> Value
305298
filterValue p (Value m) = Value (Map.filterWithKey (\k _v -> p k) m)

0 commit comments

Comments
 (0)