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