definition module overloading
import StdEnv
import syntax, check, typesupport
:: InstanceTree = IT_Node !(Global Index) !InstanceTree !InstanceTree | IT_Empty
:: ClassInstanceInfo :== {# {! .InstanceTree}}
:: ArrayInstance =
{ ai_record :: !TypeSymbIdent
, ai_members :: !{# DefinedSymbol}
}
:: GlobalTCInstance =
{ gtci_type :: !GlobalTCType
, gtci_index :: !Index
}
:: SpecialInstances =
{ si_next_array_member_index :: !Index
, si_array_instances :: ![ArrayInstance]
, si_list_instances :: ![ArrayInstance]
, si_tail_strict_list_instances :: ![ArrayInstance]
}
:: OverloadingState =
{ os_type_heaps :: !.TypeHeaps
, os_var_heap :: !.VarHeap
, os_symbol_heap :: !.ExpressionHeap
, os_generic_heap :: !.GenericHeap
, os_predef_symbols :: !.PredefinedSymbols
, os_special_instances :: !.SpecialInstances
, os_error :: !.ErrorAdmin
}
:: LocalTypePatternVariable
:: DictionaryTypes :== [(Index, [ExprInfoPtr])]
tryToSolveOverloading :: ![(Optional [TypeContext], [ExprInfoPtr], IdentPos, Index)] !Int !{# CommonDefs } !ClassInstanceInfo !*Coercions !*OverloadingState !{# DclModule}
-> (![TypeContext], !*Coercions, ![LocalTypePatternVariable], DictionaryTypes, !*OverloadingState)
:: TypeCodeInfo =
{ tci_type_var_heap :: !.TypeVarHeap
, tci_attr_var_heap :: !.AttrVarHeap
, tci_dcl_modules :: !{# DclModule}
, tci_common_defs :: !{# CommonDefs }
}
removeOverloadedFunctions :: ![Index] ![LocalTypePatternVariable] !Int !*{#FunDef} !*{! FunctionType} !*ExpressionHeap
!*TypeCodeInfo !*VarHeap !*ErrorAdmin !*{#PredefinedSymbol} //!*{#PredefinedSymbol}
-> (!*{#FunDef}, !*{! FunctionType}, !*ExpressionHeap, !*TypeCodeInfo, !*VarHeap, !*ErrorAdmin, !*{#PredefinedSymbol})
updateDynamics :: ![Index] ![LocalTypePatternVariable] !Int !*{#FunDef} !*{! FunctionType} !*ExpressionHeap !*TypeCodeInfo !*VarHeap !*ErrorAdmin !*{#PredefinedSymbol}
-> (!*{#FunDef}, !*{! FunctionType}, !*ExpressionHeap, !*TypeCodeInfo, !*VarHeap, !*ErrorAdmin, !*{#PredefinedSymbol})