aboutsummaryrefslogtreecommitdiff
path: root/frontend/trans.icl
diff options
context:
space:
mode:
authorjohnvg2012-08-02 11:08:38 +0000
committerjohnvg2012-08-02 11:08:38 +0000
commit6fefdc2bdbf518c1c22f6a130bb803abe9f174d7 (patch)
tree2d495b0532246eab6870886d84f03907531f8bae /frontend/trans.icl
parentoptimize is constructor functions (diff)
add pattern match test using =: in expressions,
add constructors PE_Matches and IsConstructor in module syntax git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@2130 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
Diffstat (limited to 'frontend/trans.icl')
-rw-r--r--frontend/trans.icl14
1 files changed, 12 insertions, 2 deletions
diff --git a/frontend/trans.icl b/frontend/trans.icl
index 6370bff..771c516 100644
--- a/frontend/trans.icl
+++ b/frontend/trans.icl
@@ -283,6 +283,9 @@ where
transform (MatchExpr a1 expr) ro ti
# (expr,ti) = transform expr ro ti
= (MatchExpr a1 expr,ti)
+ transform (IsConstructor expr cons_symbol cons_arity global_type_index case_ident position) ro ti
+ # (expr,ti) = transform expr ro ti
+ = (IsConstructor expr cons_symbol cons_arity global_type_index case_ident position, ti)
transform (DynamicExpr dynamic_expr) ro ti
# (dynamic_expr, ti) = transform dynamic_expr ro ti
= (DynamicExpr dynamic_expr, ti)
@@ -1240,7 +1243,6 @@ where
= index1 =< index2
compare_constructor_arguments (PR_Class app1 lifted_vars_with_types1 t1)
(PR_Class app2 lifted_vars_with_types2 t2)
-// = app1.app_args =< app2.app_args
# cmp = smallerOrEqual t1 t2
| cmp<>Equal
= cmp
@@ -1869,7 +1871,6 @@ get_producer_type {symb_kind=SK_Constructor {glob_module, glob_object}} ro fun_d
# (_,cons_type) = removeAnnotations cons_type // necessary???
= (cons_type, fun_defs, fun_heap)
-//@ determine_args
determine_args
:: ![Bool] ![ConsClass] !Index !{!Producer} ![Optional SymbolType] ![FreeVar] !ReadOnlyTI !*DetermineArgsState
-> *DetermineArgsState
@@ -3819,6 +3820,8 @@ where
VI_AccVar _ _ -> writeVarInfo var_info_ptr VI_Empty var_heap
VI_ExpressionOrBody _ _ _ _
-> writeVarInfo var_info_ptr VI_Empty var_heap
+ VI_Body _ _ _
+ -> writeVarInfo var_info_ptr VI_Empty var_heap
instance clearVariables Expression
where
@@ -3848,6 +3851,8 @@ where
= clearVariables expr fvi
clearVariables (MatchExpr _ expr) fvi
= clearVariables expr fvi
+ clearVariables (IsConstructor expr _ _ _ _ _) fvi
+ = clearVariables expr fvi
clearVariables EE fvi
= fvi
clearVariables _ fvi
@@ -3987,6 +3992,8 @@ where
= freeVariables expr fvi
freeVariables (MatchExpr _ expr) fvi
= freeVariables expr fvi
+ freeVariables (IsConstructor expr _ _ _ _ _) fvi
+ = freeVariables expr fvi
freeVariables EE fvi
= fvi
freeVariables _ fvi
@@ -4325,6 +4332,9 @@ where
copy (MatchExpr cons_ident expr) ci cs
# (expr, cs) = copy expr ci cs
= (MatchExpr cons_ident expr, cs)
+ copy (IsConstructor expr cons_symbol cons_arity global_type_index case_ident position) ci cs
+ # (expr, cs) = copy expr ci cs
+ = (IsConstructor expr cons_symbol cons_arity global_type_index case_ident position, cs)
copy (DynamicExpr expr) ci cs
# (expr, cs) = copy expr ci cs
= (DynamicExpr expr, cs)