summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lynagh <ian@well-typed.com>2013-02-01 14:32:27 +0000
committerIan Lynagh <ian@well-typed.com>2013-02-01 15:34:33 +0000
commit2de4a2aa66baf0492d94c6ea936349112e3e8dba (patch)
tree281e378fa1c5f58c39fe5569522cc5f22a53481b
parent8760cf35f0603b939c34224fa391c8ee5a61e095 (diff)
downloadhaskell-2de4a2aa66baf0492d94c6ea936349112e3e8dba.tar.gz
A couple of small refactorings
-rw-r--r--compiler/parser/RdrHsSyn.lhs17
1 files changed, 10 insertions, 7 deletions
diff --git a/compiler/parser/RdrHsSyn.lhs b/compiler/parser/RdrHsSyn.lhs
index 6bd8701d7f..4d384be276 100644
--- a/compiler/parser/RdrHsSyn.lhs
+++ b/compiler/parser/RdrHsSyn.lhs
@@ -560,17 +560,20 @@ checkPat loc e args -- OK to let this happen even if bang-patterns
| Just (e', args') <- splitBang e
= do { args'' <- checkPatterns args'
; checkPat loc e' (args'' ++ args) }
-checkPat loc (L _ (HsApp f x)) args
- = do { x <- checkLPat x; checkPat loc f (x:args) }
+checkPat loc (L _ (HsApp f e)) args
+ = do p <- checkLPat e
+ checkPat loc f (p : args)
checkPat loc (L _ e) []
- = do { pState <- getPState
- ; p <- checkAPat (dflags pState) loc e
- ; return (L loc p) }
+ = do p <- checkAPat loc e
+ return (L loc p)
checkPat loc e _
= patFail loc (unLoc e)
-checkAPat :: DynFlags -> SrcSpan -> HsExpr RdrName -> P (Pat RdrName)
-checkAPat dynflags loc e0 = case e0 of
+checkAPat :: SrcSpan -> HsExpr RdrName -> P (Pat RdrName)
+checkAPat loc e0 = do
+ pState <- getPState
+ let dynflags = dflags pState
+ case e0 of
EWildPat -> return (WildPat placeHolderType)
HsVar x -> return (VarPat x)
HsLit l -> return (LitPat l)