Implement roles into Template Haskell.
[ghc.git] / libraries / template-haskell / Language / Haskell / TH / Ppr.hs
index 8bd3b84..4096d9e 100644 (file)
@@ -485,6 +485,14 @@ instance Ppr TyLit where
 instance Ppr TyVarBndr where
     ppr (PlainTV nm)    = ppr nm
     ppr (KindedTV nm k) = parens (ppr nm <+> text "::" <+> ppr k)
+    ppr (RoledTV nm r)  = ppr nm <> text "@" <> ppr r
+    ppr (KindedRoledTV nm k r)
+      = parens (ppr nm <+> text "::" <+> ppr k) <> text "@" <> ppr r
+
+instance Ppr Role where
+    ppr Nominal          = text "N"
+    ppr Representational = text "R"
+    ppr Phantom          = text "P"
 
 ------------------------------
 pprCxt :: Cxt -> Doc