From: Simon Peyton Jones Date: Wed, 4 May 2011 22:09:53 +0000 (+0100) Subject: Do-notation in an arrow context is not rebindable X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=d4780d48bb8a665a2cdaa5e2c6e4bfbc87298fd0 Do-notation in an arrow context is not rebindable Fixes Trac #4851 --- diff --git a/compiler/rename/RnExpr.lhs b/compiler/rename/RnExpr.lhs index b3458db..46eef67 100644 --- a/compiler/rename/RnExpr.lhs +++ b/compiler/rename/RnExpr.lhs @@ -841,9 +841,24 @@ rnParallelStmts ctxt segs thing_inside lookupStmtName :: HsStmtContext Name -> Name -> RnM (HsExpr Name, FreeVars) -- Like lookupSyntaxName, but ListComp/PArrComp are never rebindable -lookupStmtName ListComp n = return (HsVar n, emptyFVs) -lookupStmtName PArrComp n = return (HsVar n, emptyFVs) -lookupStmtName _ n = lookupSyntaxName n +-- Neither is ArrowExpr, which has its own desugarer in DsArrows +lookupStmtName ctxt n + = case ctxt of + ListComp -> not_rebindable + PArrComp -> not_rebindable + ArrowExpr -> not_rebindable + PatGuard {} -> not_rebindable + + DoExpr -> rebindable + MDoExpr -> rebindable + MonadComp -> rebindable + GhciStmt -> rebindable -- I suppose? + + ParStmtCtxt c -> lookupStmtName c n -- Look inside to + TransStmtCtxt c -> lookupStmtName c n -- the parent context + where + rebindable = lookupSyntaxName n + not_rebindable = return (HsVar n, emptyFVs) \end{code} Note [Renaming parallel Stmts]