Implement roles into Template Haskell.
[ghc.git] / libraries / template-haskell / Language / Haskell / TH / Lib.hs
index e29463b..346d872 100644 (file)
@@ -566,6 +566,12 @@ plainTV = PlainTV
 kindedTV :: Name -> Kind -> TyVarBndr
 kindedTV = KindedTV
 
+roledTV :: Name -> Role -> TyVarBndr
+roledTV = RoledTV
+
+kindedRoledTV :: Name -> Kind -> Role -> TyVarBndr
+kindedRoledTV = KindedRoledTV
+
 varK :: Name -> Kind
 varK = VarT
 
@@ -591,6 +597,14 @@ constraintK :: Kind
 constraintK = ConstraintT
 
 -------------------------------------------------------------------------------
+-- *   Role
+
+nominal, representational, phantom :: Role
+nominal = Nominal
+representational = Representational
+phantom = Phantom
+
+-------------------------------------------------------------------------------
 -- *   Callconv
 
 cCall, stdCall :: Callconv