aboutsummaryrefslogtreecommitdiff
path: root/frontend/refmark.icl
diff options
context:
space:
mode:
authorsjakie2000-01-19 12:22:48 +0000
committersjakie2000-01-19 12:22:48 +0000
commit101f5e9d1d828d830bb66cf9f7a21318f43272e3 (patch)
tree37f70eb508e7b89d3090c7e18900134a0b2d0a67 /frontend/refmark.icl
parentbugfix: TryScanComment did not work when a single slash was followed by a new... (diff)
bug fix (changed syntax tree)
git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@79 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
Diffstat (limited to 'frontend/refmark.icl')
-rw-r--r--frontend/refmark.icl17
1 files changed, 9 insertions, 8 deletions
diff --git a/frontend/refmark.icl b/frontend/refmark.icl
index a450ca2..894b97b 100644
--- a/frontend/refmark.icl
+++ b/frontend/refmark.icl
@@ -95,19 +95,20 @@ where
= refMark free_vars NotASelector app_args var_heap
refMark free_vars sel (fun @ args) var_heap
= refMark free_vars NotASelector args (refMark free_vars NotASelector fun var_heap)
- refMark free_vars sel (Let {let_strict,let_binds,let_expr}) var_heap
- # let_vars = [ bind_dst \\ {bind_dst} <- let_binds ]
- new_free_vars = [ let_vars : free_vars]
- | let_strict
- # (observing, var_heap) = binds_are_observing let_binds var_heap
+ refMark free_vars sel (Let {let_strict_binds,let_lazy_binds,let_expr}) var_heap
+ | isEmpty let_lazy_binds
+ # new_free_vars = [ [ bind_dst \\ {bind_dst} <- let_strict_binds ] : free_vars]
+ # (observing, var_heap) = binds_are_observing let_strict_binds var_heap
| observing
# var_heap = saveOccurrences free_vars var_heap
- var_heap = refMark new_free_vars NotASelector let_binds var_heap
+ var_heap = refMark new_free_vars NotASelector let_strict_binds var_heap
var_heap = saveOccurrences new_free_vars var_heap
var_heap = refMark new_free_vars sel let_expr var_heap
= let_combine free_vars var_heap
- = refMark new_free_vars sel let_expr (refMark new_free_vars NotASelector let_binds var_heap)
- # var_heap = foldSt bind_variable let_binds var_heap
+ = refMark new_free_vars sel let_expr (refMark new_free_vars NotASelector let_strict_binds var_heap)
+ # new_free_vars = [ [ bind_dst \\ {bind_dst} <- let_strict_binds ++ let_lazy_binds ] : free_vars]
+ var_heap = foldSt bind_variable let_strict_binds var_heap
+ var_heap = foldSt bind_variable let_lazy_binds var_heap
= refMark new_free_vars sel let_expr var_heap
where