Extend CoreShow for TyCons.
[matthijs/master-project/cλash.git] / cλash / CLasH / Utils / Core / CoreShow.hs
index ac6b1d118c97413a17635fec15ef12a3209c4a50..1db286ec6a7ff27d76826f77da891c4679333b33 100644 (file)
@@ -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