aboutsummaryrefslogtreecommitdiff
path: root/frontend/unitype.icl
diff options
context:
space:
mode:
authorsjakie1999-10-20 13:59:54 +0000
committersjakie1999-10-20 13:59:54 +0000
commit72e825dcd12d416b4ad58334eb726ff4de438333 (patch)
tree5cee73edf58d36f09fbe7fed3498365ac622d098 /frontend/unitype.icl
parentextension: improved error messages for uniqueness types (diff)
No idea
git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@27 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
Diffstat (limited to 'frontend/unitype.icl')
-rw-r--r--frontend/unitype.icl45
1 files changed, 14 insertions, 31 deletions
diff --git a/frontend/unitype.icl b/frontend/unitype.icl
index 62b433d..e8c51d4 100644
--- a/frontend/unitype.icl
+++ b/frontend/unitype.icl
@@ -398,20 +398,18 @@ coerceAttributes TA_Unique dem_attr {neg_sign} coercions
coerceAttributes off_attr TA_Unique {pos_sign} coercions
| not pos_sign
= (True, coercions)
-coerceAttributes (TA_TempVar av_number) dem_attr {neg_sign} coercions=:{coer_demanded}
- | not neg_sign && isUnique coer_demanded.[av_number]
- = (True, coercions)
-coerceAttributes off_attr (TA_TempVar av_number) {pos_sign} coercions=:{coer_demanded}
- | not pos_sign && isUnique coer_demanded.[av_number]
- = (True, coercions)
-/*
coerceAttributes off_attr TA_Multi {neg_sign} coercions
| not neg_sign
= (True, coercions)
coerceAttributes TA_Multi dem_attr {pos_sign} coercions
| not pos_sign
= (True, coercions)
-*/
+coerceAttributes (TA_TempVar av_number) dem_attr {neg_sign} coercions=:{coer_demanded}
+ | not neg_sign && isUnique coer_demanded.[av_number]
+ = (True, coercions)
+coerceAttributes off_attr (TA_TempVar av_number) {pos_sign} coercions=:{coer_demanded}
+ | not pos_sign && isUnique coer_demanded.[av_number]
+ = (True, coercions)
coerceAttributes (TA_TempVar av_number1) (TA_TempVar av_number2) {pos_sign,neg_sign} coercions
| av_number1 == av_number2
= (True, coercions)
@@ -447,17 +445,13 @@ coerceAttributes (TA_TempVar av_number) TA_Unique {pos_sign} coercions=:{coer_of
= (False, coercions)
= (True, makeUnique av_number coercions)// ---> "*** 2 ***"
coerceAttributes TA_Multi (TA_TempVar av_number) {pos_sign} coercions=:{coer_demanded}
- | pos_sign
- | isUnique coer_demanded.[av_number]
- = (False, coercions)
- = (True, makeNonUnique av_number coercions)
- = (True, coercions)
+ | isUnique coer_demanded.[av_number]
+ = (False, coercions)
+ = (True, makeNonUnique av_number coercions)
coerceAttributes (TA_TempVar av_number) TA_Multi {neg_sign} coercions=:{coer_demanded}
- | neg_sign
- | isUnique coer_demanded.[av_number]
- = (False, coercions)
- = (True, makeNonUnique av_number coercions)
- = (True, coercions)
+ | isUnique coer_demanded.[av_number]
+ = (False, coercions)
+ = (True, makeNonUnique av_number coercions)
coerceAttributes TA_Unique TA_Multi _ coercions
= (False, coercions)
coerceAttributes off_attr dem_attr {pos_sign,neg_sign} coercions
@@ -591,27 +585,16 @@ where
add_propagation_inequalities attr (TA {type_prop={tsp_propagation}} cons_args) coercions
= add_inequalities tsp_propagation attr cons_args coercions
where
- add_inequalities prop_class attr _ coercions
- = (True, coercions)
-
add_inequalities prop_class attr [] coercions
= (True, coercions)
add_inequalities prop_class attr [{at_attribute} : args] coercions
- | (prop_class bitand 1) == 0 // || is_existential_attribute at_attribute coercions
+ | (prop_class bitand 1) == 0
= add_inequalities (prop_class >> 1) attr args coercions
# (succ, coercions) = coerceAttributes attr at_attribute PositiveSign coercions
| succ
= add_inequalities (prop_class >> 1) attr args coercions
= (False, coercions)
- ---> ("add_propagation_inequalities", attr, at_attribute)
-/*
- is_existential_attribute (TA_TempExVar eav_number) coercions
- = True
- is_existential_attribute (TA_TempVar eav_number) {coer_offered}
- = isExistential coer_offered.[eav_number]
- is_existential_attribute _ {coer_offered}
- = False
-*/
+// ---> ("add_propagation_inequalities", attr, at_attribute)
add_propagation_inequalities attr type coercions
= (True, coercions)