X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=c%CE%BBash%2FCLasH%2FUtils%2FCore%2FCoreShow.hs;h=ca2a7fba193094a06c30fe9a337918d6b80d1a55;hb=f3951a1376fc7d7f8addbe9e9fed071320502100;hp=aa1ea8041b4dacc01b0a3d3ac91c6579420dc70e;hpb=d2917e27bd318299f37102a4799787bf01322daf;p=matthijs%2Fmaster-project%2Fc%CE%BBash.git diff --git "a/c\316\273ash/CLasH/Utils/Core/CoreShow.hs" "b/c\316\273ash/CLasH/Utils/Core/CoreShow.hs" index aa1ea80..ca2a7fb 100644 --- "a/c\316\273ash/CLasH/Utils/Core/CoreShow.hs" +++ "b/c\316\273ash/CLasH/Utils/Core/CoreShow.hs" @@ -1,23 +1,21 @@ {-# LANGUAGE StandaloneDeriving,FlexibleInstances, UndecidableInstances, OverlappingInstances #-} -module CLasH.Utils.Core.CoreShow where - +-- -- This module derives Show instances for CoreSyn types. +-- +module CLasH.Utils.Core.CoreShow where +-- GHC API import qualified BasicTypes - import qualified CoreSyn import qualified TypeRep import qualified TyCon - import qualified HsTypes import qualified HsExpr import qualified HsBinds import qualified SrcLoc import qualified RdrName - import Outputable ( Outputable, OutputableBndr, showSDoc, ppr) - -- Derive Show for core expressions and binders, so we can see the actual -- structure. deriving instance (Show b) => Show (CoreSyn.Expr b) @@ -27,19 +25,39 @@ deriving instance (Show n, OutputableBndr n) => Show (HsTypes.HsType n) deriving instance (Show n, OutputableBndr n) => Show (HsTypes.ConDeclField n) deriving instance (Show x) => Show (SrcLoc.Located x) deriving instance (Show x, OutputableBndr x) => Show (HsExpr.StmtLR x x) -deriving instance (Show x, OutpubableBndr x) => Show (HsExpr.HsTupArg x) +deriving instance (Show x, OutputableBndr x) => Show (HsExpr.HsTupArg x) deriving instance (Show x, OutputableBndr x) => Show (HsExpr.HsExpr x) deriving instance Show (RdrName.RdrName) deriving instance (Show idL, Show idR, OutputableBndr idL, OutputableBndr idR) => Show (HsBinds.HsBindLR idL idR) deriving instance Show CoreSyn.Note +deriving instance Show TyCon.SynTyConRhs -- Implement dummy shows, since deriving them will need loads of other shows -- as well. instance Show TypeRep.PredType where - show t = "_PredType:(" ++ (showSDoc $ ppr t) ++ ")" + show t = "_PredType:(" ++ showSDoc (ppr t) ++ ")" instance Show TyCon.TyCon where - show t = "_TyCon:(" ++ (showSDoc $ ppr t) ++ ")" + show t | TyCon.isAlgTyCon t && not (TyCon.isTupleTyCon t) = + showtc "AlgTyCon" "" + | TyCon.isCoercionTyCon t = + showtc "CoercionTyCon" "" + | TyCon.isSynTyCon t = + showtc "SynTyCon" (", synTcRhs = " ++ synrhs) + | TyCon.isTupleTyCon t = + showtc "TupleTyCon" "" + | TyCon.isFunTyCon t = + showtc "FunTyCon" "" + | TyCon.isPrimTyCon t = + showtc "PrimTyCon" "" + | TyCon.isSuperKindTyCon t = + showtc "SuperKindTyCon" "" + | otherwise = + "_Nonexistant tycon?:(" ++ showSDoc (ppr t) ++ ")_" + where + showtc con extra = "(" ++ con ++ " {tyConName = " ++ name ++ extra ++ ", ...})" + name = show (TyCon.tyConName t) + synrhs = show (TyCon.synTyConRhs t) instance Show BasicTypes.Boxity where show b = "_Boxity" instance Show HsTypes.HsExplicitForAll where @@ -59,4 +77,4 @@ instance Show (HsExpr.GRHSs id) where instance (Outputable x) => Show x where - show x = "__" ++ (showSDoc $ ppr x) ++ "__" + show x = "__" ++ showSDoc (ppr x) ++ "__"