aboutsummaryrefslogtreecommitdiff
path: root/frontend/explicitimports.icl
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/explicitimports.icl')
-rw-r--r--frontend/explicitimports.icl31
1 files changed, 19 insertions, 12 deletions
diff --git a/frontend/explicitimports.icl b/frontend/explicitimports.icl
index 107e5b7..1918283 100644
--- a/frontend/explicitimports.icl
+++ b/frontend/explicitimports.icl
@@ -626,7 +626,7 @@ instance check_completeness ConsDef
instance check_completeness DynamicPattern where
check_completeness { dp_rhs, dp_type } cci ccs
= check_completeness dp_rhs cci
- (check_completeness_of_dyn_expr_ptr dp_type cci ccs)
+ (check_completeness_of_dyn_expr_ptr cci dp_type ccs)
instance check_completeness DynamicExpr where
check_completeness { dyn_expr, dyn_opt_type } cci ccs
@@ -689,7 +689,7 @@ instance check_completeness FunDef where
check_completeness {fun_type, fun_body, fun_info} cci ccs
= ( (check_completeness fun_type cci)
o (check_completeness fun_body cci)
- o (foldSt (flipM check_completeness_of_dyn_expr_ptr cci) fun_info.fi_dynamics)
+ o (check_completeness_of_dyn_expr_ptrs cci fun_info.fi_dynamics)
) ccs
instance check_completeness FunType where
@@ -847,24 +847,31 @@ instance check_completeness [a] | check_completeness a
= check_completeness h cci
(check_completeness t cci ccs)
-check_completeness_of_dyn_expr_ptr :: !ExprInfoPtr !CheckCompletenessInputBox !*CheckCompletenessStateBox
+check_completeness_of_dyn_expr_ptr :: !CheckCompletenessInputBox !ExprInfoPtr !*CheckCompletenessStateBox
-> *CheckCompletenessStateBox
-check_completeness_of_dyn_expr_ptr dyn_expr_ptr cci ccs=:{box_ccs=box_ccs=:{ccs_expr_heap}}
+check_completeness_of_dyn_expr_ptr cci dyn_expr_ptr ccs=:{box_ccs=box_ccs=:{ccs_expr_heap}}
#! (expr_info, ccs_expr_heap) = readPtr dyn_expr_ptr ccs_expr_heap
ccs = { ccs & box_ccs = { box_ccs & ccs_expr_heap = ccs_expr_heap }}
= case expr_info of
- (EI_Dynamic No _)
- -> ccs
- (EI_Dynamic (Yes dynamic_type) _)
- -> check_completeness dynamic_type cci ccs
+ (EI_UnmarkedDynamic No further_dynamic_ptrs)
+ -> (check_completeness_of_dyn_expr_ptrs cci further_dynamic_ptrs ccs)
+ (EI_UnmarkedDynamic (Yes dynamic_type) further_dynamic_ptrs)
+ -> check_completeness dynamic_type cci (check_completeness_of_dyn_expr_ptrs cci further_dynamic_ptrs ccs)
+ (EI_Dynamic No further_dynamic_ptrs)
+ -> (check_completeness_of_dyn_expr_ptrs cci further_dynamic_ptrs ccs)
+ (EI_Dynamic (Yes dynamic_type) further_dynamic_ptrs)
+ -> check_completeness dynamic_type cci (check_completeness_of_dyn_expr_ptrs cci further_dynamic_ptrs ccs)
(EI_DynamicType dynamic_type further_dynamic_ptrs)
- -> check_completeness dynamic_type cci
- (foldSt (flipM check_completeness_of_dyn_expr_ptr cci) further_dynamic_ptrs ccs)
+ -> check_completeness dynamic_type cci (check_completeness_of_dyn_expr_ptrs cci further_dynamic_ptrs ccs)
(EI_DynamicTypeWithVars _ dynamic_type further_dynamic_ptrs)
-> check_completeness dynamic_type cci
- (foldSt (flipM check_completeness_of_dyn_expr_ptr cci) further_dynamic_ptrs ccs)
+ (check_completeness_of_dyn_expr_ptrs cci further_dynamic_ptrs ccs)
+
+check_completeness_of_dyn_expr_ptrs :: !CheckCompletenessInputBox ![ExprInfoPtr] !*CheckCompletenessStateBox
+ -> *CheckCompletenessStateBox
+check_completeness_of_dyn_expr_ptrs cci dynamic_ptrs ccs
+ = foldSt (check_completeness_of_dyn_expr_ptr cci) dynamic_ptrs ccs
-flipM f a b :== f b a
// STE_Kinds just for comparision
ste_field =: STE_Field { id_name="", id_info=nilPtr }