aboutsummaryrefslogtreecommitdiff
path: root/frontend/convertcases.icl
diff options
context:
space:
mode:
authorjohnvg2009-07-28 12:38:20 +0000
committerjohnvg2009-07-28 12:38:20 +0000
commit684ed8e51e8c5ad6010c36c87b3e5c029366f644 (patch)
tree60928ff4c1b252ab2d426b3e3b84daed033fdabb /frontend/convertcases.icl
parentcreate new fv_info_ptr's for strict lets in distributeLets, because otherwise (diff)
mark strict vars with VI_StrictLetVar, transform case of such a var
git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@1745 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
Diffstat (limited to 'frontend/convertcases.icl')
-rw-r--r--frontend/convertcases.icl10
1 files changed, 6 insertions, 4 deletions
diff --git a/frontend/convertcases.icl b/frontend/convertcases.icl
index cd62580..171f49c 100644
--- a/frontend/convertcases.icl
+++ b/frontend/convertcases.icl
@@ -630,7 +630,7 @@ where
= var_heap
set_strict_let_expr_info lb=:{lb_dst={fv_info_ptr}} var_heap
- # (new_info_ptr, var_heap) = newPtr VI_Empty var_heap
+ # (new_info_ptr, var_heap) = newPtr VI_StrictLetVar var_heap
= ({lb & lb_dst.fv_info_ptr = new_info_ptr}, var_heap <:= (fv_info_ptr, VI_CaseOrStrictLetVar new_info_ptr))
distribute_lets_in_non_distributed_let di {lb_dst={fv_ident,fv_info_ptr}} ds=:{ds_var_heap}
@@ -717,11 +717,13 @@ where
is_lhs_var (Var {var_info_ptr, var_ident}) var_heap
= case sreadPtr var_info_ptr var_heap of
VI_LocalLetVar
- -> False ->> (var_ident.id_name, "rhs1")
+ -> False
VI_LetExpression _
- -> False ->> (var_ident.id_name, "rhs2")
+ -> False
+ VI_StrictLetVar
+ -> False
info
- -> True ->> (var_ident.id_name, "lhs", info)
+ -> True
is_lhs_var _ _
= False