diff options
author | Simon Marlow <simonmar@microsoft.com> | 2007-04-20 14:53:54 +0000 |
---|---|---|
committer | Simon Marlow <simonmar@microsoft.com> | 2007-04-20 14:53:54 +0000 |
commit | ccaf28d80e40cc2944bdaea3b46b245194cb90ab (patch) | |
tree | fa74db64324ce9309f9c707ae15718893f3400fd /compiler/deSugar/DsGRHSs.lhs | |
parent | d5f23f7844b0d27021767bd2f31c63af2fe3a09f (diff) | |
download | haskell-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.lhs | 12 |
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 |