diff options
author | johnvg | 2012-08-02 11:08:38 +0000 |
---|---|---|
committer | johnvg | 2012-08-02 11:08:38 +0000 |
commit | 6fefdc2bdbf518c1c22f6a130bb803abe9f174d7 (patch) | |
tree | 2d495b0532246eab6870886d84f03907531f8bae /frontend/classify.icl | |
parent | optimize 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.icl | 14 |
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 |