diff options
author | ronny | 2001-06-25 13:39:38 +0000 |
---|---|---|
committer | ronny | 2001-06-25 13:39:38 +0000 |
commit | 700bf1aa6fc28e8da110394dbc910539afc4f1ca (patch) | |
tree | 559cb1469fa1870ce196b4f3735c06ff7f86fbcd | |
parent | cases 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.icl | 9 |
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 |