Skip to content

Commit c69debe

Browse files
committed
wip
1 parent 18b4495 commit c69debe

File tree

4 files changed

+164
-114
lines changed

4 files changed

+164
-114
lines changed

libs/cardano-ledger-test/cardano-ledger-test.cabal

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,6 @@ library
120120
QuickCheck,
121121
array,
122122
base >=4.14 && <5,
123-
bech32,
124123
bytestring,
125124
cardano-crypto,
126125
cardano-crypto-class,

libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Ast.hs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import qualified Data.Map.Strict as Map
2626
import Data.Set (Set)
2727
import qualified Data.Set as Set
2828
import Data.Text (Text, pack)
29+
import Data.TreeDiff
2930
import qualified Data.Universe as Univ (Any (..))
3031
import Data.Void (Void)
3132
import Data.Word (Word64)
@@ -257,7 +258,7 @@ data RootTarget era root t where
257258
Mask :: RootTarget era r a -> RootTarget era Void a
258259
Virtual ::
259260
Term era t ->
260-
PDoc ->
261+
Expr ->
261262
Lens' root t ->
262263
-- | Just like Lensed but uses the String to name the field (instead of the Term)
263264
RootTarget era root t
@@ -408,10 +409,10 @@ args other = [Univ.Any other]
408409
-- | Print a Target as a record showing the struture and names of all
409410
-- the variables involved. This documents what is in scope where
410411
-- the Target value was defined.
411-
ppTarget :: RootTarget era r t -> PDoc
412+
ppTarget :: RootTarget era r t -> Expr
412413
ppTarget x = targetRecord x []
413414

414-
targetRecord :: RootTarget era r t -> [(Text, PDoc)] -> PDoc
415+
targetRecord :: RootTarget era r t -> [(Text, Expr)] -> Expr
415416
targetRecord (Constr n _) xs = ppRecord (pack n) xs
416417
targetRecord (ts :$ t) xs = targetRecord ts (targetPair t : xs)
417418
targetRecord (Simple e) [] = ppString (show e)
@@ -437,7 +438,7 @@ nameOf (Shift x _) = nameOf x
437438
nameOf (Mask x) = nameOf x
438439
nameOf (Virtual _ x _) = pack (show x)
439440

440-
targetPair :: RootTarget era r t -> (Text, PDoc)
441+
targetPair :: RootTarget era r t -> (Text, Expr)
441442
targetPair (Simple (Var (V n rep _))) = (pack n, ppString (show rep))
442443
targetPair (Lensed (Var (V n rep _)) _) = (pack n, ppString (show rep))
443444
targetPair (Partial (Var (V n rep _)) _) = (pack n, ppString (show rep))

libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Classes.hs

Lines changed: 47 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
{-# LANGUAGE AllowAmbiguousTypes #-}
22
{-# LANGUAGE DataKinds #-}
3+
{-# LANGUAGE DeriveGeneric #-}
34
{-# LANGUAGE FlexibleContexts #-}
45
{-# LANGUAGE FlexibleInstances #-}
56
{-# LANGUAGE FunctionalDependencies #-}
67
{-# LANGUAGE GADTs #-}
78
{-# LANGUAGE LambdaCase #-}
89
{-# LANGUAGE RankNTypes #-}
910
{-# LANGUAGE ScopedTypeVariables #-}
11+
{-# LANGUAGE StandaloneDeriving #-}
1012
{-# LANGUAGE TypeApplications #-}
1113
{-# LANGUAGE UndecidableInstances #-}
1214
{-# OPTIONS_GHC -Wno-orphans #-}
@@ -31,13 +33,16 @@ import Cardano.Ledger.State (EraCertState (..), IndividualPoolStake (..), Script
3133
import Cardano.Ledger.TxIn (TxIn)
3234
import Cardano.Ledger.Val (Val (coin, modifyCoin, (<+>)))
3335
import Data.Default (Default (def))
36+
import Data.Functor.Identity (Identity)
3437
import qualified Data.List as List
3538
import Data.Map.Strict (Map)
3639
import qualified Data.Map.Strict as Map
3740
import Data.Set (Set)
3841
import qualified Data.Set as Set
42+
import Data.TreeDiff (ToExpr (toExpr))
3943
import Data.Typeable
4044
import Data.Word (Word64)
45+
import GHC.Generics (Generic)
4146
import GHC.Real (denominator, numerator, (%))
4247
import Lens.Micro
4348
import Numeric.Natural (Natural)
@@ -483,8 +488,8 @@ hashTxAuxDataF (TxAuxDataF _ x) = hashTxAuxData x
483488
unTxAuxData :: TxAuxDataF era -> TxAuxData era
484489
unTxAuxData (TxAuxDataF _ x) = x
485490

486-
instance Show (TxAuxDataF era) where
487-
show (TxAuxDataF p x) = show ((unReflect pcAuxData p x) :: PDoc)
491+
instance ToExpr (TxAuxData era) => Show (TxAuxDataF era) where
492+
show (TxAuxDataF _p x) = show $ toExpr x
488493

489494
instance Eq (TxAuxDataF era) where
490495
(TxAuxDataF Shelley x) == (TxAuxDataF Shelley y) = x == y
@@ -494,9 +499,6 @@ instance Eq (TxAuxDataF era) where
494499
(TxAuxDataF Babbage x) == (TxAuxDataF Babbage y) = x == y
495500
(TxAuxDataF Conway x) == (TxAuxDataF Conway y) = x == y
496501

497-
pcAuxData :: Proof era -> TxAuxData era -> PDoc
498-
pcAuxData p _x = ppString ("TxAuxData " ++ show p) -- TODO make this more accurate
499-
500502
genTxAuxDataF :: Proof era -> Gen (TxAuxDataF era)
501503
genTxAuxDataF p@Shelley = TxAuxDataF p <$> suchThat arbitrary (validateTxAuxData (protocolVersion p))
502504
genTxAuxDataF p@Allegra = TxAuxDataF p <$> suchThat arbitrary (validateTxAuxData (protocolVersion p))
@@ -513,11 +515,12 @@ data TxF era where
513515
unTxF :: TxF era -> Tx era
514516
unTxF (TxF _ x) = x
515517

516-
instance PrettyA (TxF era) where
517-
prettyA (TxF p tx) = pcTx p tx
518+
-- TODO: this feels iffy
519+
deriving instance Generic (TxF era)
520+
instance (ToExpr (Proof era), ToExpr (Tx era)) => ToExpr (TxF era)
518521

519-
instance PrettyA (PParamsUpdate era) => Show (TxF era) where
520-
show (TxF p x) = show ((unReflect pcTx p x) :: PDoc)
522+
instance (ToExpr (PParamsUpdate era), ToExpr (Tx era)) => Show (TxF era) where
523+
show (TxF _p x) = show $ toExpr x
521524

522525
instance Eq (TxF era) where
523526
(TxF Shelley x) == (TxF Shelley y) = x == y
@@ -535,8 +538,8 @@ data TxWitsF era where
535538
unTxWitsF :: TxWitsF era -> TxWits era
536539
unTxWitsF (TxWitsF _ x) = x
537540

538-
instance Show (TxWitsF era) where
539-
show (TxWitsF p x) = show ((unReflect pcWitnesses p x) :: PDoc)
541+
instance ToExpr (TxWits era) => Show (TxWitsF era) where
542+
show (TxWitsF _p x) = show $ toExpr x
540543

541544
instance Eq (TxWitsF era) where
542545
(TxWitsF Shelley x) == (TxWitsF Shelley y) = x == y
@@ -554,11 +557,12 @@ data TxBodyF era where
554557
unTxBodyF :: TxBodyF era -> TxBody era
555558
unTxBodyF (TxBodyF _ x) = x
556559

557-
instance PrettyA (PParamsUpdate era) => Show (TxBodyF era) where
558-
show (TxBodyF p x) = show ((unReflect pcTxBody p x) :: PDoc)
560+
deriving instance Generic (TxBodyF era)
561+
562+
instance (ToExpr (TxBody era), ToExpr (PParamsUpdate era)) => Show (TxBodyF era) where
563+
show (TxBodyF _p x) = show $ toExpr x
559564

560-
instance PrettyA (TxBodyF era) where
561-
prettyA (TxBodyF p x) = unReflect pcTxBody p x
565+
instance (ToExpr (TxBody era), ToExpr (Proof era)) => ToExpr (TxBodyF era)
562566

563567
instance Eq (TxBodyF era) where
564568
(TxBodyF Shelley x) == (TxBodyF Shelley y) = x == y
@@ -575,11 +579,11 @@ data TxCertF era where
575579
unTxCertF :: TxCertF era -> TxCert era
576580
unTxCertF (TxCertF _ x) = x
577581

578-
instance PrettyA (TxCertF era) where
579-
prettyA (TxCertF p x) = pcTxCert p x
582+
deriving instance Generic (TxCertF era)
583+
instance (ToExpr (Proof era), ToExpr (TxCert era)) => ToExpr (TxCertF era)
580584

581-
instance Show (TxCertF era) where
582-
show (TxCertF p x) = show (pcTxCert p x)
585+
instance ToExpr (TxCert era) => Show (TxCertF era) where
586+
show (TxCertF _p x) = show $ toExpr x
583587

584588
instance Eq (TxCertF era) where
585589
(TxCertF Shelley x) == (TxCertF Shelley y) = x == y
@@ -602,11 +606,11 @@ data PlutusPointerF era where
602606
unPlutusPointerF :: PlutusPointerF era -> PlutusPurpose AsIx era
603607
unPlutusPointerF (PlutusPointerF _ pp) = pp
604608

605-
instance Show (PlutusPurposeF era) where
606-
show (PlutusPurposeF p x) = unReflect (\_ -> show (ppPlutusPurposeAsIxItem x)) p
609+
instance ToExpr (PlutusPurpose AsIxItem era) => Show (PlutusPurposeF era) where
610+
show (PlutusPurposeF _p x) = show $ toExpr x
607611

608-
instance Show (PlutusPointerF era) where
609-
show (PlutusPointerF p x) = unReflect (\_ -> show (ppPlutusPurposeAsIx x)) p
612+
instance ToExpr (PlutusPurpose AsIx era) => Show (PlutusPointerF era) where
613+
show (PlutusPointerF _p x) = show $ toExpr x
610614

611615
instance Eq (PlutusPurposeF era) where
612616
PlutusPurposeF Alonzo x == PlutusPurposeF Alonzo y = x == y
@@ -633,8 +637,8 @@ data TxOutF era where
633637
unTxOut :: TxOutF era -> TxOut era
634638
unTxOut (TxOutF _ x) = x
635639

636-
instance PrettyA (TxOutF era) where
637-
prettyA (TxOutF p x) = unReflect pcTxOut p x
640+
deriving instance Generic (TxOutF era)
641+
instance (ToExpr (Proof era), ToExpr (TxOut era)) => ToExpr (TxOutF era)
638642

639643
instance Eq (TxOutF era) where
640644
x1 == x2 = compare x1 x2 == EQ
@@ -657,8 +661,8 @@ instance Ord (TxOutF era) where
657661
data ValueF era where
658662
ValueF :: Proof era -> Value era -> ValueF era
659663

660-
instance PrettyA (ValueF era) where
661-
prettyA (ValueF p v) = pcVal p v
664+
deriving instance Generic (ValueF era)
665+
instance (ToExpr (Proof era), ToExpr (Value era)) => ToExpr (ValueF era)
662666

663667
unValue :: ValueF era -> Value era
664668
unValue (ValueF _ v) = v
@@ -687,8 +691,8 @@ data PParamsF era where
687691
unPParams :: PParamsF era -> PParams era
688692
unPParams (PParamsF _ p) = p
689693

690-
instance PrettyA (PParamsF era) where
691-
prettyA (PParamsF p x) = unReflect pcPParams p x
694+
deriving instance Generic (PParamsF era)
695+
instance (ToExpr (PParamsHKD Identity era), ToExpr (Proof era)) => ToExpr (PParamsF era)
692696

693697
instance Eq (PParamsF era) where
694698
PParamsF p1 x == PParamsF _ y =
@@ -722,8 +726,8 @@ data ProposedPPUpdatesF era where
722726
unProposedPPUpdates :: ProposedPPUpdatesF era -> PP.ProposedPPUpdates era
723727
unProposedPPUpdates (ProposedPPUpdatesF _ x) = x
724728

725-
instance PrettyA (PParamsUpdate e) => PrettyA (ProposedPPUpdatesF e) where
726-
prettyA (ProposedPPUpdatesF _p x) = ppProposedPPUpdates x
729+
deriving instance Generic (ProposedPPUpdatesF era)
730+
instance (ToExpr (PParamsUpdate e), ToExpr (Proof e)) => ToExpr (ProposedPPUpdatesF e)
727731

728732
proposedCoreL ::
729733
Lens' (PP.ProposedPPUpdates era) (Map (KeyHash 'Genesis) (PParamsUpdate era))
@@ -754,8 +758,8 @@ data CertStateF era where
754758
unCertStateF :: CertStateF era -> CertState era
755759
unCertStateF (CertStateF _ x) = x
756760

757-
instance Reflect era => PrettyA (CertStateF era) where
758-
prettyA (CertStateF _ x) = pcCertState x
761+
deriving instance Generic (CertStateF era)
762+
instance (ToExpr (Proof era), ToExpr (CertState era)) => ToExpr (CertStateF era)
759763

760764
instance Eq (CertStateF era) where
761765
(CertStateF Shelley x) == (CertStateF Shelley y) = x == y
@@ -798,11 +802,11 @@ putPPUP Conway _ = Gov.emptyGovState @era
798802
liftUTxO :: Map TxIn (TxOutF era) -> UTxO era
799803
liftUTxO m = UTxO (Map.map unTxOut m)
800804

801-
instance Show (TxOutF era) where
802-
show (TxOutF p t) = show (unReflect pcTxOut p t :: PDoc)
805+
instance ToExpr (TxOut era) => Show (TxOutF era) where
806+
show (TxOutF _p t) = show $ toExpr t
803807

804-
instance Show (ValueF era) where
805-
show (ValueF p t) = show (pcVal p t)
808+
instance ToExpr (Value era) => Show (ValueF era) where
809+
show (ValueF _p t) = show $ toExpr t
806810

807811
instance Show (PParamsF era) where
808812
show (PParamsF _ _) = "PParamsF ..."
@@ -898,8 +902,8 @@ data ScriptsNeededF era where
898902
unScriptsNeededF :: ScriptsNeededF era -> ScriptsNeeded era
899903
unScriptsNeededF (ScriptsNeededF _ v) = v
900904

901-
instance Show (ScriptsNeededF era) where
902-
show (ScriptsNeededF p t) = unReflect (\_ -> show (pcScriptsNeeded p t)) p
905+
instance ToExpr (ScriptsNeeded era) => Show (ScriptsNeededF era) where
906+
show (ScriptsNeededF _p t) = show $ toExpr t
903907

904908
-- ========================
905909

@@ -909,11 +913,11 @@ data ScriptF era where
909913
unScriptF :: ScriptF era -> Script era
910914
unScriptF (ScriptF _ v) = v
911915

912-
instance PrettyA (ScriptF era) where
913-
prettyA (ScriptF p x) = unReflect pcScript p x
916+
deriving instance Generic (ScriptF era)
917+
instance (ToExpr (Proof era), ToExpr (Script era)) => ToExpr (ScriptF era)
914918

915-
instance Show (ScriptF era) where
916-
show (ScriptF p t) = show ((unReflect pcScript p t) :: PDoc)
919+
instance ToExpr (Script era) => Show (ScriptF era) where
920+
show (ScriptF _p t) = show $ toExpr t
917921

918922
instance Eq (ScriptF era) where
919923
(ScriptF Shelley x) == (ScriptF Shelley y) = x == y

0 commit comments

Comments
 (0)