aboutsummaryrefslogtreecommitdiff
path: root/frontend/trans.icl
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/trans.icl')
-rw-r--r--frontend/trans.icl12
1 files changed, 8 insertions, 4 deletions
diff --git a/frontend/trans.icl b/frontend/trans.icl
index fa00840..30a743d 100644
--- a/frontend/trans.icl
+++ b/frontend/trans.icl
@@ -882,6 +882,12 @@ tryToFindInstance new_prods II_Empty fun_heap
# (fun_def_ptr, fun_heap) = newPtr FI_Empty fun_heap
= (cIsANewFunction, fun_def_ptr, II_Node new_prods fun_def_ptr II_Empty II_Empty, fun_heap)
tryToFindInstance new_prods instances=:(II_Node prods fun_def_ptr left right) fun_heap
+ | size new_prods > size prods
+ # (is_new, new_fun_def_ptr, right, fun_heap) = tryToFindInstance new_prods right fun_heap
+ = (is_new, new_fun_def_ptr, II_Node prods fun_def_ptr left right, fun_heap)
+ | size new_prods < size prods
+ # (is_new, new_fun_def_ptr, left, fun_heap) = tryToFindInstance new_prods left fun_heap
+ = (is_new, new_fun_def_ptr, II_Node prods fun_def_ptr left right, fun_heap)
# cmp = compareProducers new_prods prods
| cmp == Equal
= (cIsNotANewFunction, fun_def_ptr, instances, fun_heap)
@@ -927,6 +933,8 @@ where
= symb_ident1 =< symb_ident2
compare_constructor_arguments PR_Empty PR_Empty
= Equal
+ compare_constructor_arguments PR_Unused PR_Unused
+ = Equal
compare_constructor_arguments (PR_Constructor symb_ident1 _ _) (PR_Constructor symb_ident2 _ _)
= symb_ident1 =< symb_ident2
@@ -2291,10 +2299,6 @@ add_let_binds free_vars rhss original_binds
//@ transformGroups
-:: ImportedConstructors :== [Global Index]
-:: ImportedFunctions :== [Global Index]
-:: ImportedTypes :== {#{# CheckedTypeDef}}
-
transformGroups :: !CleanupInfo !Int !Int !*{! Group} !*{#FunDef} !*{!.ConsClasses} !{# CommonDefs} !{# {# FunType} }
!*ImportedTypes !ImportedConstructors !*TypeDefInfos !*VarHeap !*TypeHeaps !*ExpressionHeap !Bool
-> (!*{! Group}, !*{#FunDef}, !*ImportedTypes, !ImportedConstructors, !*VarHeap, !*TypeHeaps, !*ExpressionHeap, !*{!ConsClasses})