summaryrefslogtreecommitdiff
path: root/ghc/compiler/parser/ParseUtil.lhs
diff options
context:
space:
mode:
Diffstat (limited to 'ghc/compiler/parser/ParseUtil.lhs')
-rw-r--r--ghc/compiler/parser/ParseUtil.lhs31
1 files changed, 11 insertions, 20 deletions
diff --git a/ghc/compiler/parser/ParseUtil.lhs b/ghc/compiler/parser/ParseUtil.lhs
index 2be5030193..ce4f71bfcf 100644
--- a/ghc/compiler/parser/ParseUtil.lhs
+++ b/ghc/compiler/parser/ParseUtil.lhs
@@ -14,10 +14,6 @@ module ParseUtil (
, mkRecConstrOrUpdate -- HsExp -> [HsFieldUpdate] -> P HsExp
, groupBindings
- , checkAs
- , checkHiding
- , checkQualified
-
, checkPrec -- String -> P String
, checkCallConv -- FAST_STRING -> P CallConv
, checkContext -- HsType -> P HsContext
@@ -37,9 +33,10 @@ module ParseUtil (
, funTyCon_RDR
-- pseudo-keywords, in var and tyvar forms (all :: RdrName)
- , forall_var_RDR
+ , as_var_RDR, hiding_var_RDR, qualified_var_RDR, forall_var_RDR
, export_var_RDR, label_var_RDR, dynamic_var_RDR, unsafe_var_RDR
+ , as_tyvar_RDR, hiding_tyvar_RDR, qualified_tyvar_RDR
, export_tyvar_RDR, label_tyvar_RDR, dynamic_tyvar_RDR
, unsafe_tyvar_RDR
@@ -72,9 +69,6 @@ parseError s =
getSrcLocP `thenP` \ loc ->
failMsgP (hcat [ppr loc, text ": ", text s])
-parseErrorOnInput :: P a
-parseErrorOnInput buf PState{ loc = loc } = PFailed (srcParseErr buf loc)
-
srcParseErr :: StringBuffer -> SrcLoc -> Message
srcParseErr s l
= hcat [ppr l, ptext SLIT(": parse error on input "),
@@ -83,18 +77,6 @@ srcParseErr s l
cbot = panic "CCall:result_ty"
-----------------------------------------------------------------------------
--- Special Ids
-
-checkAs, checkQualified, checkHiding :: FAST_STRING -> P ()
-
-checkAs s | s == SLIT("as") = returnP ()
- | otherwise = parseErrorOnInput
-checkQualified s | s == SLIT("qualified") = returnP ()
- | otherwise = parseErrorOnInput
-checkHiding s | s == SLIT("hiding") = returnP ()
- | otherwise = parseErrorOnInput
-
------------------------------------------------------------------------------
-- splitForConApp
-- When parsing data declarations, we sometimes inadvertently parse
@@ -446,18 +428,27 @@ unitName = SLIT("()")
funName = SLIT("(->)")
listName = SLIT("[]")
+asName = SLIT("as")
+hidingName = SLIT("hiding")
+qualifiedName = SLIT("qualified")
forallName = SLIT("forall")
exportName = SLIT("export")
labelName = SLIT("label")
dynamicName = SLIT("dynamic")
unsafeName = SLIT("unsafe")
+as_var_RDR = mkSrcUnqual varName asName
+hiding_var_RDR = mkSrcUnqual varName hidingName
+qualified_var_RDR = mkSrcUnqual varName qualifiedName
forall_var_RDR = mkSrcUnqual varName forallName
export_var_RDR = mkSrcUnqual varName exportName
label_var_RDR = mkSrcUnqual varName labelName
dynamic_var_RDR = mkSrcUnqual varName dynamicName
unsafe_var_RDR = mkSrcUnqual varName unsafeName
+as_tyvar_RDR = mkSrcUnqual tvName asName
+hiding_tyvar_RDR = mkSrcUnqual tvName hidingName
+qualified_tyvar_RDR = mkSrcUnqual tvName qualifiedName
export_tyvar_RDR = mkSrcUnqual tvName exportName
label_tyvar_RDR = mkSrcUnqual tvName labelName
dynamic_tyvar_RDR = mkSrcUnqual tvName dynamicName