summaryrefslogtreecommitdiff
path: root/compiler/deSugar/DsGRHSs.lhs
diff options
context:
space:
mode:
authorSimon Marlow <simonmar@microsoft.com>2007-04-20 14:53:54 +0000
committerSimon Marlow <simonmar@microsoft.com>2007-04-20 14:53:54 +0000
commitccaf28d80e40cc2944bdaea3b46b245194cb90ab (patch)
treefa74db64324ce9309f9c707ae15718893f3400fd /compiler/deSugar/DsGRHSs.lhs
parentd5f23f7844b0d27021767bd2f31c63af2fe3a09f (diff)
downloadhaskell-ccaf28d80e40cc2944bdaea3b46b245194cb90ab.tar.gz
breakpoints: fix the in-scope set for 'where' clauses
Diffstat (limited to 'compiler/deSugar/DsGRHSs.lhs')
-rw-r--r--compiler/deSugar/DsGRHSs.lhs12
1 files changed, 7 insertions, 5 deletions
diff --git a/compiler/deSugar/DsGRHSs.lhs b/compiler/deSugar/DsGRHSs.lhs
index 31d48b6eca..55b4f572f0 100644
--- a/compiler/deSugar/DsGRHSs.lhs
+++ b/compiler/deSugar/DsGRHSs.lhs
@@ -57,19 +57,21 @@ dsGRHSs :: HsMatchContext Name -> [Pat Id] -- These are to build a MatchContext
-> GRHSs Id -- Guarded RHSs
-> Type -- Type of RHS
-> DsM MatchResult
-dsGRHSs hs_ctx pats (GRHSs grhss binds) rhs_ty =
- bindLocalsDs (bindsBinders ++ patsBinders) $
- mappM (dsGRHS hs_ctx pats rhs_ty) grhss `thenDs` \ match_results ->
+dsGRHSs hs_ctx pats grhssa@(GRHSs grhss binds) rhs_ty =
+ bindLocalsDs binders $ do
+ match_results <- mappM (dsGRHS hs_ctx pats rhs_ty) grhss
let
match_result1 = foldr1 combineMatchResults match_results
match_result2 = adjustMatchResultDs
- (\e -> bindLocalsDs patsBinders $ dsLocalBinds binds e)
+ (\e -> bindLocalsDs binders $
+ dsLocalBinds binds e)
match_result1
-- NB: nested dsLet inside matchResult
- in
+ --
returnDs match_result2
where bindsBinders = map unLoc (collectLocalBinders binds)
patsBinders = collectPatsBinders (map (L undefined) pats)
+ binders = bindsBinders ++ patsBinders
dsGRHS hs_ctx pats rhs_ty (L loc (GRHS guards rhs))
= matchGuards (map unLoc guards) hs_ctx rhs rhs_ty