From cc1923b9994ababc83b50a365ca02ffb67d198a7 Mon Sep 17 00:00:00 2001 From: martinw Date: Fri, 26 May 2000 10:20:43 +0000 Subject: 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 --- frontend/check.icl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'frontend') 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) -- cgit v1.2.3