aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--frontend/check.icl2
-rw-r--r--frontend/typereify.dcl2
-rw-r--r--frontend/typereify.icl80
3 files changed, 42 insertions, 42 deletions
diff --git a/frontend/check.icl b/frontend/check.icl
index 9aad756..1e82c61 100644
--- a/frontend/check.icl
+++ b/frontend/check.icl
@@ -2244,7 +2244,7 @@ check_module2 mod_ident mod_modification_time mod_imported_objects mod_imports m
hp_var_heap = heaps.hp_var_heap
# (icl_type_fun_range, dcl_modules, icl_functions, icl_common, cs_predef_symbols, hp_var_heap, cs_symbol_table)
= if support_dynamics
- (addTypeFunctions mod_ident nr_of_cached_modules dcl_modules icl_functions icl_common cs_predef_symbols hp_var_heap cs_symbol_table)
+ (addTypeFunctions nr_of_cached_modules dcl_modules icl_functions icl_common cs_predef_symbols hp_var_heap cs_symbol_table)
({ir_from=0,ir_to=0}, dcl_modules, icl_functions, icl_common, cs_predef_symbols, hp_var_heap, cs_symbol_table)
# cs = {cs & cs_symbol_table=cs_symbol_table, cs_predef_symbols=cs_predef_symbols}
# heaps = {heaps & hp_var_heap=hp_var_heap}
diff --git a/frontend/typereify.dcl b/frontend/typereify.dcl
index bc1ea08..cc5b5d5 100644
--- a/frontend/typereify.dcl
+++ b/frontend/typereify.dcl
@@ -10,7 +10,7 @@ from syntax import
from predef import
::PredefinedSymbols, ::PredefinedSymbol
-addTypeFunctions :: Ident Int *{#DclModule} *{#FunDef} *CommonDefs *PredefinedSymbols *VarHeap *SymbolTable
+addTypeFunctions :: Int *{#DclModule} *{#FunDef} *CommonDefs *PredefinedSymbols *VarHeap *SymbolTable
-> (IndexRange, *{#DclModule},*{#FunDef},*CommonDefs,*PredefinedSymbols,*VarHeap,*SymbolTable)
buildTypeFunctions :: !Int !*{#FunDef} !{#CommonDefs} !*PredefinedSymbols !*VarHeap !*TypeHeaps
diff --git a/frontend/typereify.icl b/frontend/typereify.icl
index 179a5ae..c19b8bf 100644
--- a/frontend/typereify.icl
+++ b/frontend/typereify.icl
@@ -81,16 +81,16 @@ add_dcl_type_fun_types ctListDefSymb n_cached_dcls dcl_mods var_heap symbols
= add_type_fun_types (module_n+1) n ctListDefSymb dcl_mods var_heap symbols
# (dcl_mod, dcl_mods) = dcl_mods![module_n]
# (dcl_mod, var_heap, symbols)
- = add_fun_types ctListDefSymb dcl_mod var_heap symbols
+ = add_fun_types_of_dcl_module ctListDefSymb dcl_mod var_heap symbols
# dcl_mods = {dcl_mods & [module_n] = dcl_mod}
= add_type_fun_types (module_n+1) n ctListDefSymb dcl_mods var_heap symbols
-add_fun_types :: TypeSymbIdent DclModule *VarHeap *SymbolTable
- -> (DclModule,*VarHeap,*SymbolTable)
-add_fun_types ctListDefSymb dcl_mod=:{dcl_name, dcl_functions, dcl_common={com_type_defs}} var_heap symbols
+add_fun_types_of_dcl_module :: TypeSymbIdent DclModule *VarHeap *SymbolTable
+ -> (DclModule,*VarHeap,*SymbolTable)
+add_fun_types_of_dcl_module ctListDefSymb dcl_mod=:{dcl_functions, dcl_common={com_type_defs}} var_heap symbols
# n_functions = size dcl_functions
(type_funs, com_type_defs, var_heap, symbols)
- = addTypeFunctionsA dcl_name n_functions ctListDefSymb {def \\ def <-: com_type_defs} var_heap symbols
+ = addTypeFunctionsA n_functions ctListDefSymb {def \\ def <-: com_type_defs} var_heap symbols
dcl_functions = {function \\ function <- [e \\ e <-: dcl_functions] ++ type_funs}
dcl_type_funs = {ir_from = n_functions, ir_to = size dcl_functions}
dcl_mod = { dcl_mod & dcl_functions = dcl_functions
@@ -112,21 +112,21 @@ getNilSymb predefs
symbol = { symb_ident = pds_ident, symb_kind = SK_Constructor { glob_module = pds_module, glob_object = pds_def} }
= (symbol, predefs)
-addTypeFunctions :: Ident Int *{#DclModule} *{#FunDef} *CommonDefs *PredefinedSymbols *VarHeap *SymbolTable
+addTypeFunctions :: Int *{#DclModule} *{#FunDef} *CommonDefs *PredefinedSymbols *VarHeap *SymbolTable
-> (IndexRange, *{#DclModule},*{#FunDef},*CommonDefs,*PredefinedSymbols,*VarHeap,*SymbolTable)
-addTypeFunctions mod_ident nr_cached_dcls dcl_modules icl_functions icl_common predefs var_heap symbols
- # (ctTypeDefSymb, predefs) = getListTypeSymb predefs
+addTypeFunctions nr_cached_dcls dcl_modules icl_functions icl_common predefs var_heap symbols
+ # (ctListDefSymb, predefs) = getListTypeSymb predefs
# (dcl_modules, var_heap, symbols)
- = add_dcl_type_fun_types ctTypeDefSymb nr_cached_dcls dcl_modules var_heap symbols
+ = add_dcl_type_fun_types ctListDefSymb nr_cached_dcls dcl_modules var_heap symbols
# (icl_type_fun_range, icl_functions, icl_common, var_heap, symbols)
- = add_icl_type_functions icl_functions ctTypeDefSymb icl_common var_heap symbols
+ = add_icl_type_functions icl_functions ctListDefSymb icl_common var_heap symbols
with
add_icl_type_functions :: *{#FunDef} TypeSymbIdent *CommonDefs *VarHeap *SymbolTable
-> (IndexRange, *{#FunDef}, *CommonDefs, *VarHeap, *SymbolTable)
- add_icl_type_functions icl_functions ctTypeDefSymb icl_common=:{com_type_defs} var_heap symbols
+ add_icl_type_functions icl_functions ctListDefSymb icl_common=:{com_type_defs} var_heap symbols
# (n_functions_before, icl_functions) = usize icl_functions
# (type_funs, com_type_defs, var_heap, symbols)
- = addTypeFunctionsA mod_ident n_functions_before ctTypeDefSymb com_type_defs var_heap symbols
+ = addTypeFunctionsA n_functions_before ctListDefSymb com_type_defs var_heap symbols
# icl_common = {icl_common & com_type_defs=com_type_defs}
# icl_functions = {function \\ function <- [e \\ e <-: icl_functions] ++ type_funs}
# (n_functions_after, icl_functions) = usize icl_functions
@@ -182,36 +182,36 @@ buildTypeFunction type_def=:{td_fun_index, td_args} functions info bs_state
# functions = {functions & [td_fun_index].fun_body=TransformedBody body}
= (functions, bs_state)
-addTypeFunctionsA :: Ident Int TypeSymbIdent *{#CheckedTypeDef} *VarHeap *SymbolTable
+addTypeFunctionsA :: Int TypeSymbIdent *{#CheckedTypeDef} *VarHeap *SymbolTable
-> ([a], *{#CheckedTypeDef}, *VarHeap, *SymbolTable) | makeTypeFun a
-addTypeFunctionsA mod first_td_fun_index ct_type_def type_defs var_heap symbol_table
+addTypeFunctionsA first_td_fun_index ct_type_def type_defs var_heap symbol_table
= add_td_fun_defs first_td_fun_index ct_type_def type_defs var_heap symbol_table
- where
- add_td_fun_defs :: Int TypeSymbIdent *{#CheckedTypeDef} *VarHeap *SymbolTable
- -> ([a], *{#CheckedTypeDef}, *VarHeap, *SymbolTable) | makeTypeFun a
- add_td_fun_defs type_fun_index ct_type_def type_defs var_heap symbol_table
- # (n, type_defs)
- = usize type_defs
- = add_td_funs_acc 0 n type_fun_index ct_type_def type_defs [] var_heap symbol_table
-
- add_td_funs_acc :: Int Int Int TypeSymbIdent *{#CheckedTypeDef} [a] *VarHeap *SymbolTable
- -> ([a], *{#CheckedTypeDef}, *VarHeap, *SymbolTable) | makeTypeFun a
- add_td_funs_acc i n index ct_type_def type_defs rev_type_fun_defs var_heap symbol_table
- | i >= n
- = (reverse rev_type_fun_defs, type_defs, var_heap, symbol_table)
- # (type_def, type_defs) = type_defs![i]
- | isTypeSynonym type_def || is_dictionary type_def
- = add_td_funs_acc (i+1) n index ct_type_def type_defs rev_type_fun_defs var_heap symbol_table
- # (type_fun_def, var_heap, symbol_table)
- = add_td_fun_def index type_def.td_ident.id_name type_def.td_pos ct_type_def var_heap symbol_table
- # type_defs = {type_defs & [i].td_fun_index = index}
- # rev_type_fun_defs = [type_fun_def : rev_type_fun_defs]
- = add_td_funs_acc (i+1) n (index+1) ct_type_def type_defs rev_type_fun_defs var_heap symbol_table
-
- is_dictionary {td_ident} // FIXME, fragile
- = name.[size name - 1] == ';'
- where
- name = td_ident.id_name
+where
+ add_td_fun_defs :: Int TypeSymbIdent *{#CheckedTypeDef} *VarHeap *SymbolTable
+ -> ([a], *{#CheckedTypeDef}, *VarHeap, *SymbolTable) | makeTypeFun a
+ add_td_fun_defs type_fun_index ct_type_def type_defs var_heap symbol_table
+ # (n, type_defs)
+ = usize type_defs
+ = add_td_funs_acc 0 n type_fun_index ct_type_def type_defs [] var_heap symbol_table
+
+ add_td_funs_acc :: Int Int Int TypeSymbIdent *{#CheckedTypeDef} [a] *VarHeap *SymbolTable
+ -> ([a], *{#CheckedTypeDef}, *VarHeap, *SymbolTable) | makeTypeFun a
+ add_td_funs_acc i n index ct_type_def type_defs rev_type_fun_defs var_heap symbol_table
+ | i >= n
+ = (reverse rev_type_fun_defs, type_defs, var_heap, symbol_table)
+ # (type_def, type_defs) = type_defs![i]
+ | isTypeSynonym type_def || is_dictionary type_def
+ = add_td_funs_acc (i+1) n index ct_type_def type_defs rev_type_fun_defs var_heap symbol_table
+ # (type_fun_def, var_heap, symbol_table)
+ = add_td_fun_def index type_def.td_ident.id_name type_def.td_pos ct_type_def var_heap symbol_table
+ # type_defs = {type_defs & [i].td_fun_index = index}
+ # rev_type_fun_defs = [type_fun_def : rev_type_fun_defs]
+ = add_td_funs_acc (i+1) n (index+1) ct_type_def type_defs rev_type_fun_defs var_heap symbol_table
+
+ is_dictionary {td_ident} // FIXME, fragile
+ = name.[size name - 1] == ';'
+ where
+ name = td_ident.id_name
add_td_fun_def :: Int {#Char} Position TypeSymbIdent *VarHeap *SymbolTable
-> (!a,!*VarHeap,!*SymbolTable) | makeTypeFun a