summaryrefslogtreecommitdiff
path: root/compiler/basicTypes/Var.hs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/basicTypes/Var.hs')
-rw-r--r--compiler/basicTypes/Var.hs59
1 files changed, 30 insertions, 29 deletions
diff --git a/compiler/basicTypes/Var.hs b/compiler/basicTypes/Var.hs
index 2009b6c764..a23132eb66 100644
--- a/compiler/basicTypes/Var.hs
+++ b/compiler/basicTypes/Var.hs
@@ -405,6 +405,23 @@ sameVis Required _ = False
sameVis _ Required = False
sameVis _ _ = True
+instance Outputable ArgFlag where
+ ppr Required = text "[req]"
+ ppr Specified = text "[spec]"
+ ppr Inferred = text "[infrd]"
+
+instance Binary ArgFlag where
+ put_ bh Required = putByte bh 0
+ put_ bh Specified = putByte bh 1
+ put_ bh Inferred = putByte bh 2
+
+ get bh = do
+ h <- getByte bh
+ case h of
+ 0 -> return Required
+ 1 -> return Specified
+ _ -> return Inferred
+
{- *********************************************************************
* *
* VarBndr, TyCoVarBinder
@@ -469,6 +486,19 @@ mkTyVarBinders vis = map (mkTyVarBinder vis)
isTyVarBinder :: TyCoVarBinder -> Bool
isTyVarBinder (Bndr v _) = isTyVar v
+instance Outputable tv => Outputable (VarBndr tv ArgFlag) where
+ ppr (Bndr v Required) = ppr v
+ ppr (Bndr v Specified) = char '@' <> ppr v
+ ppr (Bndr v Inferred) = braces (ppr v)
+
+instance (Binary tv, Binary vis) => Binary (VarBndr tv vis) where
+ put_ bh (Bndr tv vis) = do { put_ bh tv; put_ bh vis }
+
+ get bh = do { tv <- get bh; vis <- get bh; return (Bndr tv vis) }
+
+instance NamedThing tv => NamedThing (VarBndr tv flag) where
+ getName (Bndr tv _) = getName tv
+
{-
************************************************************************
* *
@@ -524,35 +554,6 @@ tcTyVarDetails var = pprPanic "tcTyVarDetails" (ppr var <+> dcolon <+> pprKind (
setTcTyVarDetails :: TyVar -> TcTyVarDetails -> TyVar
setTcTyVarDetails tv details = tv { tc_tv_details = details }
--------------------------------------
-instance Outputable tv => Outputable (VarBndr tv ArgFlag) where
- ppr (Bndr v Required) = ppr v
- ppr (Bndr v Specified) = char '@' <> ppr v
- ppr (Bndr v Inferred) = braces (ppr v)
-
-instance Outputable ArgFlag where
- ppr Required = text "[req]"
- ppr Specified = text "[spec]"
- ppr Inferred = text "[infrd]"
-
-instance (Binary tv, Binary vis) => Binary (VarBndr tv vis) where
- put_ bh (Bndr tv vis) = do { put_ bh tv; put_ bh vis }
-
- get bh = do { tv <- get bh; vis <- get bh; return (Bndr tv vis) }
-
-
-instance Binary ArgFlag where
- put_ bh Required = putByte bh 0
- put_ bh Specified = putByte bh 1
- put_ bh Inferred = putByte bh 2
-
- get bh = do
- h <- getByte bh
- case h of
- 0 -> return Required
- 1 -> return Specified
- _ -> return Inferred
-
{-
%************************************************************************
%* *