summaryrefslogtreecommitdiff
path: root/compiler/GHC/Types/Var.hs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/GHC/Types/Var.hs')
-rw-r--r--compiler/GHC/Types/Var.hs14
1 files changed, 10 insertions, 4 deletions
diff --git a/compiler/GHC/Types/Var.hs b/compiler/GHC/Types/Var.hs
index 397bc7ed77..4bb0b27ac8 100644
--- a/compiler/GHC/Types/Var.hs
+++ b/compiler/GHC/Types/Var.hs
@@ -68,8 +68,9 @@ module GHC.Types.Var (
-- * ArgFlags
ArgFlag(Invisible,Required,Specified,Inferred),
- isVisibleArgFlag, isInvisibleArgFlag, sameVis,
AnonArgFlag(..), Specificity(..),
+ isVisibleArgFlag, isInvisibleArgFlag, isInferredArgFlag,
+ sameVis,
-- * TyVar's
VarBndr(..), TyCoVarBinder, TyVarBinder, InvisTVBinder, ReqTVBinder,
@@ -468,12 +469,17 @@ pattern Specified = Invisible SpecifiedSpec
-- | Does this 'ArgFlag' classify an argument that is written in Haskell?
isVisibleArgFlag :: ArgFlag -> Bool
-isVisibleArgFlag Required = True
-isVisibleArgFlag _ = False
+isVisibleArgFlag af = not (isInvisibleArgFlag af)
-- | Does this 'ArgFlag' classify an argument that is not written in Haskell?
isInvisibleArgFlag :: ArgFlag -> Bool
-isInvisibleArgFlag = not . isVisibleArgFlag
+isInvisibleArgFlag (Invisible {}) = True
+isInvisibleArgFlag Required = False
+
+isInferredArgFlag :: ArgFlag -> Bool
+-- More restrictive than isInvisibleArgFlag
+isInferredArgFlag (Invisible InferredSpec) = True
+isInferredArgFlag _ = False
-- | Do these denote the same level of visibility? 'Required'
-- arguments are visible, others are not. So this function