1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
definition module overloading
import StdEnv
import syntax, check
:: 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_next_TC_member_index :: !Index
, si_TC_instances :: ![GlobalTCInstance]
}
:: OverloadingState =
{ os_type_heaps :: !.TypeHeaps
, os_var_heap :: !.VarHeap
, os_symbol_heap :: !.ExpressionHeap
, os_predef_symbols :: !.PredefinedSymbols
, os_special_instances :: !.SpecialInstances
, os_error :: !.ErrorAdmin
}
:: LocalTypePatternVariable
tryToSolveOverloading :: ![(Optional [TypeContext], [ExprInfoPtr], IdentPos, Index)] !{# CommonDefs } !ClassInstanceInfo !*Coercions !*OverloadingState
-> (![TypeContext], !*Coercions, ![LocalTypePatternVariable], !*OverloadingState)
:: TypeCodeInfo =
{ tci_next_index :: !Index
, tci_instances :: ![GlobalTCInstance]
, tci_type_var_heap :: !.TypeVarHeap
}
removeOverloadedFunctions :: ![(Optional [TypeContext], IdentPos, Index)] ![TypeContext] ![LocalTypePatternVariable] !*{#FunDef} !*ExpressionHeap
!*TypeCodeInfo !*VarHeap !*ErrorAdmin
-> (!*{#FunDef}, !*ExpressionHeap, !*TypeCodeInfo, !*VarHeap, !*ErrorAdmin)
updateDynamics :: ![Int] ![TypeContext] ![LocalTypePatternVariable] !*{#FunDef} !*ExpressionHeap !*TypeCodeInfo !*VarHeap !*ErrorAdmin
-> (!*{#FunDef}, !*ExpressionHeap, !*TypeCodeInfo, !*VarHeap, !*ErrorAdmin)
|