aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormartinw2000-05-26 10:20:43 +0000
committermartinw2000-05-26 10:20:43 +0000
commitcc1923b9994ababc83b50a365ca02ffb67d198a7 (patch)
tree3d8a203eba07bc1cf50dff54ecd9c2f8bc388cc3
parentimproved dynamics (diff)
bugfix: The following let
#! (a, b) = f was originally translated into #! _x = f #! a = _x.0 #! b = _x.1 which is wrong. Now a an b are in a lazy context git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@142 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
-rw-r--r--frontend/check.icl3
1 files changed, 2 insertions, 1 deletions
diff --git a/frontend/check.icl b/frontend/check.icl
index ebc3d5c..f5d115e 100644
--- a/frontend/check.icl
+++ b/frontend/check.icl
@@ -1925,7 +1925,8 @@ where
e_state = { e_state & es_var_heap = es_var_heap, es_expr_heap = es_expr_heap }
(strict_array_pattern_binds, lazy_array_pattern_binds, free_vars, e_state, e_info, cs)
= foldSt (buildSelections e_input) array_patterns ([], [], free_vars, e_state, e_info, cs)
- all_binds = [if seq_let.ndwl_strict (let_binds,[]) ([],let_binds), (strict_array_pattern_binds, lazy_array_pattern_binds) : binds]
+ all_binds = [if seq_let.ndwl_strict (s, l) ([],let_binds), (strict_array_pattern_binds, lazy_array_pattern_binds) : binds]
+ with (l,s) = splitAt ((length let_binds)-1) let_binds
= (all_binds, loc_envs, max_expr_level, free_vars, e_state, e_info, cs)
check_sequential_lets free_vars [] let_vars_list e_input=:{ei_expr_level} e_state e_info cs
= ([], let_vars_list, ei_expr_level, free_vars, e_state, e_info, cs)