Commit ccaf28d8 authored by Simon Marlow's avatar Simon Marlow
Browse files

breakpoints: fix the in-scope set for 'where' clauses

parent d5f23f78
...@@ -57,19 +57,21 @@ dsGRHSs :: HsMatchContext Name -> [Pat Id] -- These are to build a MatchContext ...@@ -57,19 +57,21 @@ dsGRHSs :: HsMatchContext Name -> [Pat Id] -- These are to build a MatchContext
-> GRHSs Id -- Guarded RHSs -> GRHSs Id -- Guarded RHSs
-> Type -- Type of RHS -> Type -- Type of RHS
-> DsM MatchResult -> DsM MatchResult
dsGRHSs hs_ctx pats (GRHSs grhss binds) rhs_ty = dsGRHSs hs_ctx pats grhssa@(GRHSs grhss binds) rhs_ty =
bindLocalsDs (bindsBinders ++ patsBinders) $ bindLocalsDs binders $ do
mappM (dsGRHS hs_ctx pats rhs_ty) grhss `thenDs` \ match_results -> match_results <- mappM (dsGRHS hs_ctx pats rhs_ty) grhss
let let
match_result1 = foldr1 combineMatchResults match_results match_result1 = foldr1 combineMatchResults match_results
match_result2 = adjustMatchResultDs match_result2 = adjustMatchResultDs
(\e -> bindLocalsDs patsBinders $ dsLocalBinds binds e) (\e -> bindLocalsDs binders $
dsLocalBinds binds e)
match_result1 match_result1
-- NB: nested dsLet inside matchResult -- NB: nested dsLet inside matchResult
in --
returnDs match_result2 returnDs match_result2
where bindsBinders = map unLoc (collectLocalBinders binds) where bindsBinders = map unLoc (collectLocalBinders binds)
patsBinders = collectPatsBinders (map (L undefined) pats) patsBinders = collectPatsBinders (map (L undefined) pats)
binders = bindsBinders ++ patsBinders
dsGRHS hs_ctx pats rhs_ty (L loc (GRHS guards rhs)) dsGRHS hs_ctx pats rhs_ty (L loc (GRHS guards rhs))
= matchGuards (map unLoc guards) hs_ctx rhs rhs_ty = matchGuards (map unLoc guards) hs_ctx rhs rhs_ty
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment