import List ( nub )
import Util ( isSingleton )
import ListSetOps ( removeDups )
-import Maybes ( fromJust )
+import Maybes ( expectJust )
import Outputable
import SrcLoc ( Located(..), unLoc, getLoc, cmpLocated )
import FastString
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}
%************************************************************************
{ -- Find the Names that are bound by stmts
lcl_env <- getLocalRdrEnv
; let { rdr_bndrs = collectLStmtsBinders stmts
- ; bndrs = map ( fromJust
+ ; bndrs = map ( expectJust "rnStmt"
. lookupLocalRdrEnv lcl_env
. unLoc) rdr_bndrs
; new_bndrs = nub bndrs ++ bndrs_so_far
%************************************************************************
\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"))