summaryrefslogtreecommitdiff
path: root/ghc/compiler/rename
diff options
context:
space:
mode:
authorsimonpj@microsoft.com <unknown>2006-02-03 17:51:08 +0000
committersimonpj@microsoft.com <unknown>2006-02-03 17:51:08 +0000
commit5d3051c66796dcf884b052f9e4afc3ed19b9f514 (patch)
tree37262275a544ef332841f6afe24f2dcb3fe1c763 /ghc/compiler/rename
parent7985849b10db59b566d1864075b97b5d11d3a31d (diff)
downloadhaskell-5d3051c66796dcf884b052f9e4afc3ed19b9f514.tar.gz
Add bang patterns
This commit adds bang-patterns, enabled by -fglasgow-exts or -fbang-patterns diabled by -fno-bang-patterns The idea is described here http://haskell.galois.com/cgi-bin/haskell-prime/trac.cgi/wiki/BangPatterns
Diffstat (limited to 'ghc/compiler/rename')
-rw-r--r--ghc/compiler/rename/RnExpr.lhs17
-rw-r--r--ghc/compiler/rename/RnTypes.lhs8
2 files changed, 14 insertions, 11 deletions
diff --git a/ghc/compiler/rename/RnExpr.lhs b/ghc/compiler/rename/RnExpr.lhs
index 95d7b8307e..a128c3561f 100644
--- a/ghc/compiler/rename/RnExpr.lhs
+++ b/ghc/compiler/rename/RnExpr.lhs
@@ -255,14 +255,9 @@ Since all the symbols are reservedops we can simply reject them.
We return a (bogus) EWildPat in each case.
\begin{code}
-rnExpr e@EWildPat = addErr (patSynErr e) `thenM_`
- returnM (EWildPat, emptyFVs)
-
-rnExpr e@(EAsPat _ _) = addErr (patSynErr e) `thenM_`
- returnM (EWildPat, emptyFVs)
-
-rnExpr e@(ELazyPat _) = addErr (patSynErr e) `thenM_`
- returnM (EWildPat, emptyFVs)
+rnExpr e@EWildPat = patSynErr e
+rnExpr e@(EAsPat {}) = patSynErr e
+rnExpr e@(ELazyPat {}) = patSynErr e
\end{code}
%************************************************************************
@@ -943,9 +938,9 @@ mkAssertErrorExpr
%************************************************************************
\begin{code}
-patSynErr e
- = sep [ptext SLIT("Pattern syntax in expression context:"),
- nest 4 (ppr e)]
+patSynErr e = do { addErr (sep [ptext SLIT("Pattern syntax in expression context:"),
+ nest 4 (ppr e)])
+ ; return (EWildPat, emptyFVs) }
parStmtErr = addErr (ptext SLIT("Illegal parallel list comprehension: use -fglasgow-exts"))
diff --git a/ghc/compiler/rename/RnTypes.lhs b/ghc/compiler/rename/RnTypes.lhs
index bfd0289664..d7d435ce97 100644
--- a/ghc/compiler/rename/RnTypes.lhs
+++ b/ghc/compiler/rename/RnTypes.lhs
@@ -185,6 +185,10 @@ rnHsType doc (HsPredTy pred)
= rnPred doc pred `thenM` \ pred' ->
returnM (HsPredTy pred')
+rnHsType doc (HsSpliceTy _)
+ = do { addErr (ptext SLIT("Type splices are not yet implemented"))
+ ; failM }
+
rnLHsTypes doc tys = mappM (rnLHsType doc) tys
\end{code}
@@ -594,6 +598,10 @@ rnPat (LazyPat pat)
= rnLPat pat `thenM` \ (pat', fvs) ->
returnM (LazyPat pat', fvs)
+rnPat (BangPat pat)
+ = rnLPat pat `thenM` \ (pat', fvs) ->
+ returnM (BangPat pat', fvs)
+
rnPat (AsPat name pat)
= rnLPat pat `thenM` \ (pat', fvs) ->
lookupLocatedBndrRn name `thenM` \ vname ->