diff options
author | martinw | 2000-05-26 10:20:43 +0000 |
---|---|---|
committer | martinw | 2000-05-26 10:20:43 +0000 |
commit | cc1923b9994ababc83b50a365ca02ffb67d198a7 (patch) | |
tree | 3d8a203eba07bc1cf50dff54ecd9c2f8bc388cc3 | |
parent | improved 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.icl | 3 |
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) |