Commit a3da2cd8 authored by John van Groningen's avatar John van Groningen
Browse files

mark strict vars with VI_StrictLetVar, transform case of such a var

parent e7639818
...@@ -630,7 +630,7 @@ where ...@@ -630,7 +630,7 @@ where
= var_heap = var_heap
set_strict_let_expr_info lb=:{lb_dst={fv_info_ptr}} 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)) = ({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} distribute_lets_in_non_distributed_let di {lb_dst={fv_ident,fv_info_ptr}} ds=:{ds_var_heap}
...@@ -717,11 +717,13 @@ where ...@@ -717,11 +717,13 @@ where
is_lhs_var (Var {var_info_ptr, var_ident}) var_heap is_lhs_var (Var {var_info_ptr, var_ident}) var_heap
= case sreadPtr var_info_ptr var_heap of = case sreadPtr var_info_ptr var_heap of
VI_LocalLetVar VI_LocalLetVar
-> False ->> (var_ident.id_name, "rhs1") -> False
VI_LetExpression _ VI_LetExpression _
-> False ->> (var_ident.id_name, "rhs2") -> False
VI_StrictLetVar
-> False
info info
-> True ->> (var_ident.id_name, "lhs", info) -> True
is_lhs_var _ _ is_lhs_var _ _
= False = False
......
...@@ -691,7 +691,7 @@ from convertDynamics import :: TypeCodeVariableInfo, :: DynamicValueAliasInfo ...@@ -691,7 +691,7 @@ from convertDynamics import :: TypeCodeVariableInfo, :: DynamicValueAliasInfo
VI_ClassVar !Ident !VarInfoPtr !Int | /* to hold dictionary variables during overloading */ VI_ClassVar !Ident !VarInfoPtr !Int | /* to hold dictionary variables during overloading */
VI_ForwardClassVar !VarInfoPtr | /* to hold the dictionary variable generated during overloading */ VI_ForwardClassVar !VarInfoPtr | /* to hold the dictionary variable generated during overloading */
VI_Forward !BoundVar | VI_LetVar !LetVarInfo | VI_LetExpression !LetExpressionInfo | VI_Forward !BoundVar | VI_LetVar !LetVarInfo | VI_LetExpression !LetExpressionInfo |
VI_CaseOrStrictLetVar !VarInfoPtr | VI_CaseOrStrictLetVar !VarInfoPtr | VI_StrictLetVar |
VI_CorrespondenceNumber !Int | /* it is assumed that this alternative is _only_ used in module comparedefimp */ VI_CorrespondenceNumber !Int | /* it is assumed that this alternative is _only_ used in module comparedefimp */
VI_SequenceNumber !Int | VI_AliasSequenceNumber !BoundVar | VI_SequenceNumber !Int | VI_AliasSequenceNumber !BoundVar |
VI_Used | /* for indicating that an imported function has been used */ VI_Used | /* for indicating that an imported function has been used */
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment