This shows the actual data structures used in an expression more clearly,
without hiding details like ppr does.
module Pretty (prettyShow) where
import qualified Data.Map as Map
module Pretty (prettyShow) where
import qualified Data.Map as Map
+import qualified TypeRep
import qualified Module
import qualified HscTypes
import Text.PrettyPrint.HughesPJClass
import Outputable ( showSDoc, ppr, Outputable, OutputableBndr)
import qualified ForSyDe.Backend.Ppr
import qualified Module
import qualified HscTypes
import Text.PrettyPrint.HughesPJClass
import Outputable ( showSDoc, ppr, Outputable, OutputableBndr)
import qualified ForSyDe.Backend.Ppr
+import qualified ForSyDe.Backend.VHDL.Ppr
import qualified ForSyDe.Backend.VHDL.AST as AST
import HsValueMap
import qualified ForSyDe.Backend.VHDL.AST as AST
import HsValueMap
ppdecl Nothing = text "VHDL entity not present"
ppdecl (Just _) = text "VHDL entity present"
ppdecl Nothing = text "VHDL entity not present"
ppdecl (Just _) = text "VHDL entity present"
-instance (OutputableBndr b) => Pretty (CoreSyn.Bind b) where
+instance (OutputableBndr b, Show b) => Pretty (CoreSyn.Bind b) where
pPrint (CoreSyn.NonRec b expr) =
text "NonRec: " $$ nest 10 (prettyBind (b, expr))
pPrint (CoreSyn.Rec binds) =
pPrint (CoreSyn.NonRec b expr) =
text "NonRec: " $$ nest 10 (prettyBind (b, expr))
pPrint (CoreSyn.Rec binds) =
instance Pretty AST.VHDLId where
pPrint id = ForSyDe.Backend.Ppr.ppr id
instance Pretty AST.VHDLId where
pPrint id = ForSyDe.Backend.Ppr.ppr id
-prettyBind :: (Outputable b, Outputable e) => (b, e) -> Doc
+prettyBind :: (Show b, Show e) => (b, e) -> Doc
prettyBind (b, expr) =
text b' <> text " = " <> text expr'
where
prettyBind (b, expr) =
text b' <> text " = " <> text expr'
where
- b' = showSDoc $ ppr b
- expr' = showSDoc $ ppr expr
+ b' = show b
+ expr' = show expr
+
+-- Derive Show for core expressions and binders, so we can see the actual
+-- structure.
+deriving instance (Show b) => Show (CoreSyn.Expr b)
+deriving instance (Show b) => Show (CoreSyn.Bind b)
+
+-- Implement dummy shows for Note and Type, so we can at least use show on
+-- expressions.
+instance Show CoreSyn.Note where
+ show n = "<note>"
+instance Show TypeRep.Type where
+ show t = "_type:(" ++ (showSDoc $ ppr t) ++ ")"