aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorronny2001-06-25 13:39:38 +0000
committerronny2001-06-25 13:39:38 +0000
commit700bf1aa6fc28e8da110394dbc910539afc4f1ca (patch)
tree559cb1469fa1870ce196b4f3735c06ff7f86fbcd
parentcases in backend (diff)
also add pattern variables in Cases to cp_local_vars
git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@503 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
-rw-r--r--frontend/convertcases.icl9
1 files changed, 7 insertions, 2 deletions
diff --git a/frontend/convertcases.icl b/frontend/convertcases.icl
index 9772601..3737a75 100644
--- a/frontend/convertcases.icl
+++ b/frontend/convertcases.icl
@@ -1333,9 +1333,14 @@ where
instance copy AlgebraicPattern
where
- copy pattern=:{ap_vars,ap_expr} cp_info=:{cp_var_heap}
- # (ap_expr, cp_info) = copy ap_expr { cp_info & cp_var_heap = foldSt (\{fv_info_ptr} -> writePtr fv_info_ptr VI_LocalVar) ap_vars cp_var_heap}
+ copy pattern=:{ap_vars,ap_expr} cp_info=:{cp_local_vars, cp_var_heap}
+ # (cp_local_vars, cp_var_heap) = foldSt bind_pattern_var ap_vars (cp_local_vars, cp_var_heap)
+ # (ap_expr, cp_info) = copy ap_expr { cp_info & cp_local_vars = cp_local_vars, cp_var_heap = cp_var_heap}
= ({ pattern & ap_expr = ap_expr }, cp_info)
+ where
+
+ bind_pattern_var pattern_var=:{fv_info_ptr} (local_vars, var_heap)
+ = ([pattern_var : local_vars], var_heap <:= (fv_info_ptr, VI_LocalVar))
instance copy BasicPattern
where