projects
/
matthijs
/
master-project
/
cλash.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
6808406
)
Support binding the scrutinee of a Case expression.
author
Matthijs Kooijman
<m.kooijman@student.utwente.nl>
Thu, 16 Apr 2009 08:00:14 +0000
(10:00 +0200)
committer
Matthijs Kooijman
<m.kooijman@student.utwente.nl>
Thu, 16 Apr 2009 08:00:14 +0000
(10:00 +0200)
Flatten.hs
patch
|
blob
|
history
diff --git
a/Flatten.hs
b/Flatten.hs
index 74b3232a338640a1372d120ce164b6b388be6b12..8c4c7ab51ba2e3f536f97e5b3001dde863ebb396 100644
(file)
--- a/
Flatten.hs
+++ b/
Flatten.hs
@@
-268,11
+268,12
@@
flattenExpr binds expr@(Case scrut b _ alts) = do
-- TODO: Special casing for higher order functions
-- Flatten the scrutinee
(_, res) <- flattenExpr binds scrut
-- TODO: Special casing for higher order functions
-- Flatten the scrutinee
(_, res) <- flattenExpr binds scrut
+ -- Put the scrutinee in the BindMap
+ let binds' = (b, Left res) : binds
case alts of
case alts of
- -- TODO include b in the binds list
- [alt] -> flattenSingleAltCaseExpr binds res b alt
+ [alt] -> flattenSingleAltCaseExpr binds' res b alt
-- Reverse the alternatives, so the __DEFAULT alternative ends up last
-- Reverse the alternatives, so the __DEFAULT alternative ends up last
- otherwise -> flattenMultipleAltCaseExpr binds res b (reverse alts)
+ otherwise -> flattenMultipleAltCaseExpr binds
'
res b (reverse alts)
where
flattenSingleAltCaseExpr ::
BindMap
where
flattenSingleAltCaseExpr ::
BindMap