aboutsummaryrefslogtreecommitdiff
path: root/frontend/classify.icl
diff options
context:
space:
mode:
authorjohnvg2012-08-02 11:08:38 +0000
committerjohnvg2012-08-02 11:08:38 +0000
commit6fefdc2bdbf518c1c22f6a130bb803abe9f174d7 (patch)
tree2d495b0532246eab6870886d84f03907531f8bae /frontend/classify.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/classify.icl')
-rw-r--r--frontend/classify.icl14
1 files changed, 10 insertions, 4 deletions
diff --git a/frontend/classify.icl b/frontend/classify.icl
index 0d04014..db6c189 100644
--- a/frontend/classify.icl
+++ b/frontend/classify.icl
@@ -442,8 +442,6 @@ instance consumerRequirements Expression where
= consumerRequirements case_expr common_defs ai
consumerRequirements (BasicExpr _) _ ai
= (CPassive, False, ai)
- consumerRequirements (MatchExpr _ expr) common_defs ai
- = consumerRequirements expr common_defs ai
consumerRequirements (Selection _ expr selectors) common_defs ai
# (cc, _, ai) = consumerRequirements expr common_defs ai
ai = aiUnifyClassifications CActive cc ai
@@ -460,6 +458,10 @@ instance consumerRequirements Expression where
= (CPassive, False, ai)
consumerRequirements (TupleSelect tuple_symbol arg_nr expr) common_defs ai
= consumerRequirements expr common_defs ai
+ consumerRequirements (MatchExpr _ expr) common_defs ai
+ = consumerRequirements expr common_defs ai
+ consumerRequirements (IsConstructor expr _ _ _ _ _) common_defs ai
+ = consumerRequirements expr common_defs ai
consumerRequirements (AnyCodeExpr _ _ _) _ ai=:{ai_cur_ref_counts}
#! s = size ai_cur_ref_counts
twos_array = n_twos_counts s
@@ -1427,8 +1429,6 @@ count_locals (Case {case_expr,case_guards,case_default}) n
= count_case_locals case_guards (count_locals case_expr (count_optional_locals case_default n))
count_locals (BasicExpr _) n
= n
-count_locals (MatchExpr _ expr) n
- = count_locals expr n
count_locals (Selection _ expr selectors) n
= count_selector_locals selectors (count_locals expr n)
count_locals (Update expr1 selectors expr2) n
@@ -1440,6 +1440,10 @@ count_locals (RecordUpdate _ expr exprs) n
= foldSt count_bind_locals exprs (count_locals expr n)
count_locals (TupleSelect _ _ expr) n
= count_locals expr n
+count_locals (MatchExpr _ expr) n
+ = count_locals expr n
+count_locals (IsConstructor expr _ _ _ _ _) n
+ = count_locals expr n
count_locals (AnyCodeExpr _ _ _) n
= n
count_locals (ABCCodeExpr _ _) n
@@ -1749,6 +1753,8 @@ instance producerRequirements Expression where
= (False,prs)
producerRequirements (MatchExpr _ expr) prs
= producerRequirements expr prs
+ producerRequirements (IsConstructor expr _ _ _ _ _) prs
+ = producerRequirements expr prs
producerRequirements (DynamicExpr _) prs
= (False,prs)
producerRequirements (TypeCodeExpression _) prs