From: Matthijs Kooijman Date: Tue, 28 Jul 2009 13:26:58 +0000 (+0200) Subject: Extend CoreShow for TyCons. X-Git-Url: https://git.stderr.nl/gitweb?a=commitdiff_plain;h=89d205565ee7b8c7f4da92861e22a69687d659cf;p=matthijs%2Fmaster-project%2Fc%CE%BBash.git Extend CoreShow for TyCons. This still does not completely show TyCons, since they are quite complex, but at least distinguishes the various constructors and some useful info. --- diff --git "a/c\316\273ash/CLasH/Utils/Core/CoreShow.hs" "b/c\316\273ash/CLasH/Utils/Core/CoreShow.hs" index ac6b1d1..1db286e 100644 --- "a/c\316\273ash/CLasH/Utils/Core/CoreShow.hs" +++ "b/c\316\273ash/CLasH/Utils/Core/CoreShow.hs" @@ -32,6 +32,7 @@ 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 @@ -39,7 +40,26 @@ deriving instance Show CoreSyn.Note instance Show TypeRep.PredType where 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