From 6a1aab7737016aa714b2ffec2b5657a18fac0e42 Mon Sep 17 00:00:00 2001 From: Simon Peyton Jones Date: Mon, 9 May 2011 16:45:12 +0100 Subject: [PATCH] Fix renaming of guards This was making mc17 fail. --- compiler/hsSyn/HsExpr.lhs | 10 ++++++---- compiler/rename/RnExpr.lhs | 2 ++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/compiler/hsSyn/HsExpr.lhs b/compiler/hsSyn/HsExpr.lhs index 9c88783..dd33cae 100644 --- a/compiler/hsSyn/HsExpr.lhs +++ b/compiler/hsSyn/HsExpr.lhs @@ -1274,10 +1274,12 @@ data HsStmtContext id \begin{code} isListCompExpr :: HsStmtContext id -> Bool -- Uses syntax [ e | quals ] -isListCompExpr ListComp = True -isListCompExpr PArrComp = True -isListCompExpr MonadComp = True -isListCompExpr _ = False +isListCompExpr ListComp = True +isListCompExpr PArrComp = True +isListCompExpr MonadComp = True +isListCompExpr (ParStmtCtxt c) = isListCompExpr c +isListCompExpr (TransStmtCtxt c) = isListCompExpr c +isListCompExpr _ = False isMonadCompExpr :: HsStmtContext id -> Bool isMonadCompExpr MonadComp = True diff --git a/compiler/rename/RnExpr.lhs b/compiler/rename/RnExpr.lhs index 46eef67..88e0462 100644 --- a/compiler/rename/RnExpr.lhs +++ b/compiler/rename/RnExpr.lhs @@ -694,6 +694,8 @@ rnStmt ctxt (L loc (ExprStmt expr _ _ _)) thing_inside then lookupStmtName ctxt guardMName else return (noSyntaxExpr, emptyFVs) -- Only list/parr/monad comprehensions use 'guard' + -- Also for sub-stmts of same eg [ e | x<-xs, gd | blah ] + -- Here "gd" is a guard ; (thing, fvs3) <- thing_inside [] ; return (([L loc (ExprStmt expr' then_op guard_op placeHolderType)], thing), fv_expr `plusFV` fvs1 `plusFV` fvs2 `plusFV` fvs3) } -- 1.7.10.4