From 6fefdc2bdbf518c1c22f6a130bb803abe9f174d7 Mon Sep 17 00:00:00 2001 From: johnvg Date: Thu, 2 Aug 2012 11:08:38 +0000 Subject: 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 --- frontend/classify.icl | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'frontend/classify.icl') 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 -- cgit v1.2.3