diff options
Diffstat (limited to 'frontend/postparse.icl')
-rw-r--r-- | frontend/postparse.icl | 252 |
1 files changed, 212 insertions, 40 deletions
diff --git a/frontend/postparse.icl b/frontend/postparse.icl index 6af58be..fc63ca7 100644 --- a/frontend/postparse.icl +++ b/frontend/postparse.icl @@ -1054,13 +1054,14 @@ where scan_dcl_module dcl_module mod=:{mod_defs = pdefs} parsed_modules searchPaths modtimefunction files ca # (_, defs, imports, imported_objects,foreign_exports,ca) = reorganiseDefinitionsAndAddTypes dcl_module support_dynamics False pdefs ca - (def_macros, ca) = collectFunctions defs.def_macros False {ca & ca_fun_count=0,ca_rev_fun_defs=[]} - (range, ca) = addFunctionsRange def_macros ca + n_macros = length defs.def_macros + (def_macros, ca) = collectFunctions defs.def_macros False {ca & ca_fun_count=n_macros,ca_rev_fun_defs=[]} + range = {ir_from=0,ir_to=n_macros} (rev_fun_defs,ca) = ca!ca_rev_fun_defs - ca = {ca & ca_rev_fun_defs=[]} + def_macros = def_macros++reverse rev_fun_defs (pea_ok,ca) = ca!ca_error.pea_ok - mod = { mod & mod_imports = imports, mod_imported_objects = imported_objects, mod_defs = { defs & def_macros=reverse rev_fun_defs,def_macro_indices = range }} ca = {ca & ca_rev_fun_defs=[]} + mod = { mod & mod_imports = imports, mod_imported_objects = imported_objects, mod_defs = { defs & def_macros=def_macros,def_macro_indices = range }} (import_ok, parsed_modules,files, ca) = scanModules imports [mod : parsed_modules] cached_modules searchPaths support_generics support_dynamics modtimefunction files ca = (pea_ok && import_ok, parsed_modules,files, ca) @@ -1083,7 +1084,7 @@ scanModule mod=:{mod_ident,mod_type,mod_defs = pdefs} cached_modules support_gen (import_dcls_ok, parsed_modules, files, ca) = scanModules imports parsed_modules cached_modules searchPaths support_generics support_dynamics modtimefunction files ca - (pea_dcl_ok,optional_dcl_mod,ca) = collect_main_dcl_module optional_parsed_dcl_mod dcl_module_n ca + (pea_dcl_ok,optional_dcl_mod,ca) = collect_main_dcl_module optional_parsed_dcl_mod dcl_module_n ca modules = case (reverse parsed_modules) of [{mod_type=MK_NoMainDcl}:modules] @@ -1153,12 +1154,14 @@ where = (import_ok, Yes mod, NoIndex,parsed_modules, cached_modules,files, ca) collect_main_dcl_module (Yes mod=:{mod_defs=defs}) dcl_module_n ca - # (macro_defs, ca) = collectFunctions defs.def_macros False {ca & ca_fun_count=0,ca_rev_fun_defs=[]} - (range, ca) = addFunctionsRange macro_defs ca + # n_macros = length defs.def_macros + (def_macros, ca) = collectFunctions defs.def_macros False {ca & ca_fun_count=n_macros,ca_rev_fun_defs=[]} + range = {ir_from=0,ir_to=n_macros} (rev_fun_defs,ca) = ca!ca_rev_fun_defs + def_macros = def_macros++reverse rev_fun_defs ca = {ca & ca_rev_fun_defs=[]} (pea_ok,ca) = ca!ca_error.pea_ok - mod = { mod & mod_defs = { defs & def_macros=reverse rev_fun_defs,def_macro_indices = range }} + mod = { mod & mod_defs = { defs & def_macros=def_macros,def_macro_indices = range }} = (pea_ok,Yes mod,ca) collect_main_dcl_module No dcl_module_n ca | dcl_module_n==NoIndex @@ -1194,21 +1197,164 @@ collectFunctionBodies fun_name fun_arity fun_prio fun_kind all_defs=:[PD_Functio collectFunctionBodies fun_name fun_arity fun_prio fun_kind defs ca = ([], fun_kind, defs, ca) -collectGenericBodies :: ![ParsedDefinition] !Ident !Int !TypeCons !*CollectAdmin -> (![ParsedBody], ![ParsedDefinition],!*CollectAdmin) -collectGenericBodies all_defs=:[PD_GenericCase gc=:{gc_gcf=GCF gc_ident2 gcf} : defs] gc_ident1 gcf_arity1 gc_type_cons1 ca +collectGenericBodies :: ![ParsedDefinition] !Ident !Int !TypeCons !*CollectAdmin -> (![ParsedBody], !Int, ![ParsedDefinition],!*CollectAdmin) +collectGenericBodies all_defs=:[PD_GenericCase gc=:{gc_gcf=GCF gc_ident2 gcf} _ : defs] gc_ident1 gcf_arity1 gc_type_cons1 ca | gc_ident2==gc_ident1 && gc.gc_type_cons==gc_type_cons1 - #! (bodies, rest_defs, ca) = collectGenericBodies defs gc_ident1 gcf_arity1 gc_type_cons1 ca - # (GCF _ {gcf_body=GCB_ParsedBody args rhs,gcf_arity}) = gc.gc_gcf + #! (bodies, generic_info, rest_defs, ca) = collectGenericBodies defs gc_ident1 gcf_arity1 gc_type_cons1 ca + # (GCF _ {gcf_body=GCB_ParsedBody args rhs,gcf_arity,gcf_generic_info}) = gc.gc_gcf + # generic_info = generic_info bitor gcf_generic_info #! body = {pb_args = args, pb_rhs = rhs, pb_position = gc.gc_pos} | gcf_arity==gcf_arity1 - = ([body : bodies], rest_defs, ca) - #! msg = "This generic alternative has " +++ toString gcf_arity +++ " argument" - + (if (gcf_arity <> 1) "s" "")+++" instead of " +++ toString gcf_arity1 - #! ca = postParseError gc.gc_pos msg ca - = ([body : bodies], rest_defs, ca) - = ([], all_defs, ca) + = ([body : bodies], generic_info, rest_defs, ca) + #! msg = "This generic alternative has " +++ toString gcf_arity +++ " argument" + +++ (if (gcf_arity <> 1) "s" "")+++" instead of " +++ toString gcf_arity1 + #! ca = postParseError gc.gc_pos msg ca + = ([body : bodies], generic_info, rest_defs, ca) + = ([], 0, all_defs, ca) collectGenericBodies defs gc_ident1 gcf_arity1 gc_type_cons1 ca - = ([], defs, ca) + = ([], 0, defs, ca) + +replace_generic_info_record_by_arguments :: !Int ![ParsedBody] !Int !TypeCons !*CollectAdmin -> (![ParsedBody],!Int,!GenericInstanceDependencies,!*CollectAdmin) +replace_generic_info_record_by_arguments generic_info bodies arity (TypeConsSymb {type_ident={id_name}}) ca + # arity = add_n_bits generic_info (arity-1) + # (bodies,n_deps,deps,ca) = replace_generic_info_record_by_arguments_in_bodies bodies generic_info -1 0 ca + | n_deps>=0 + # deps = deps bitand ((1<<n_deps)-1) + = (bodies,arity,GenericInstanceUsedArgs n_deps deps,ca) + = (bodies,arity,GenericInstanceUsedArgs 0 0,ca) + where + generic_cons_index + = case id_name of + "OBJECT" -> 0 + "CONS" -> 1 + "RECORD" -> 2 + "FIELD" -> 3 + + replace_generic_info_record_by_arguments_in_bodies [body:bodies] generic_info n_deps deps ca + # (body,n_deps,deps,ca) = replace_generic_info_record_by_arguments_in_body body generic_info n_deps deps ca + # (bodies,n_deps,deps,ca) = replace_generic_info_record_by_arguments_in_bodies bodies generic_info n_deps deps ca + = ([body : bodies],n_deps,deps,ca) + replace_generic_info_record_by_arguments_in_bodies [] generic_info n_deps deps ca + = ([],n_deps,deps,ca) + + replace_generic_info_record_by_arguments_in_body body=:{pb_args=[PE_Record PE_Empty NoRecordName field_assignments:args]} generic_info n_deps deps ca + # (n_deps,deps) = mark_deps_in_args args 0 n_deps deps + # (args,ca) = add_fields generic_info field_assignments args ca + = ({body & pb_args = args},n_deps,deps,ca) + replace_generic_info_record_by_arguments_in_body body=:{pb_args=[PE_WildCard:args]} generic_info n_deps deps ca + # (n_deps,deps) = mark_deps_in_args args 0 n_deps deps + # args = add_wild_cards generic_info args + = ({body & pb_args = args},n_deps,deps,ca) + + add_fields :: !Int [FieldAssignment] [ParsedExpr] *CollectAdmin -> (![ParsedExpr],!*CollectAdmin) + add_fields generic_info field_assignments args ca + | generic_info==0 + = (args,ca) + | generic_info bitand 1<>0 + = add_field (field_0_name_of_generic_info generic_cons_index) (generic_info bitxor 1) field_assignments args ca + | generic_info bitand 2<>0 + = add_field (field_1_name_of_generic_info generic_cons_index) (generic_info bitxor 2) field_assignments args ca + | generic_info bitand 4<>0 + = add_field (field_2_name_of_generic_info generic_cons_index) (generic_info bitxor 4) field_assignments args ca + | generic_info bitand 8<>0 + = add_field (field_3_name_of_generic_info generic_cons_index) (generic_info bitxor 8) field_assignments args ca + | generic_info bitand 16<>0 + = add_field (field_4_name_of_generic_info generic_cons_index) (generic_info bitxor 16) field_assignments args ca + | generic_info bitand 32<>0 + = add_field (field_5_name_of_generic_info generic_cons_index) (generic_info bitxor 32) field_assignments args ca + + add_field :: !{#Char} !Int [FieldAssignment] [ParsedExpr] *CollectAdmin -> (![ParsedExpr],!*CollectAdmin) + add_field field_name generic_info field_assignments args ca + # (arg,ca) = field_or_wild_card field_name field_assignments ca + # (args,ca) = add_fields generic_info field_assignments args ca + = ([arg : args],ca) + + add_wild_cards 0 args + = args + add_wild_cards generic_info args + | generic_info bitand 1<>0 + = [PE_WildCard : add_wild_cards (generic_info>>1) args] + = add_wild_cards (generic_info>>1) args + + field_or_wild_card field_name [{bind_dst=FieldName {id_name},bind_src}:field_assignments] ca + | id_name==field_name + = case bind_src of + PE_Empty + # ({boxed_ident=ident}, ca_hash_table) = putIdentInHashTable id_name IC_Expression ca.ca_hash_table + -> (PE_Ident ident, {ca & ca_hash_table = ca_hash_table}) + _ + -> (bind_src,ca) + = field_or_wild_card field_name field_assignments ca + field_or_wild_card field_name field_assignments ca + = (PE_WildCard,ca) + + add_n_bits n c + | n>1 + = add_n_bits (n>>1) (c+(n bitand 1)) + = c+n + +determine_generic_instance_deps :: ![ParsedBody] !Int !TypeCons !*CollectAdmin -> (![ParsedBody],!Int,!GenericInstanceDependencies,!*CollectAdmin) +determine_generic_instance_deps bodies arity type_cons ca + = case type_cons of + TypeConsSymb {type_ident={id_name}} + | id_name=="OBJECT" || id_name=="CONS" || id_name=="RECORD" || id_name=="FIELD" || id_name=="PAIR" || id_name=="EITHER" || id_name=="UNIT" + # (n_deps,deps) = determine_generic_instance_deps_in_bodies bodies -1 0 + | n_deps>=0 + # deps = deps bitand ((1<<n_deps)-1) + -> (bodies,arity,GenericInstanceUsedArgs n_deps deps,ca) + -> (bodies,arity,GenericInstanceUsedArgs 0 0,ca) + _ + -> (bodies,arity,AllGenericInstanceDependencies,ca) + where + determine_generic_instance_deps_in_bodies [body:bodies] n_deps deps + # (n_deps,deps) = determine_generic_instance_deps_in_body body n_deps deps + = determine_generic_instance_deps_in_bodies bodies n_deps deps + determine_generic_instance_deps_in_bodies [] n_deps deps + = (n_deps,deps) + + determine_generic_instance_deps_in_body {pb_args=[_:args]} n_deps deps + = mark_deps_in_args args 0 n_deps deps + determine_generic_instance_deps_in_body body n_deps deps + = (n_deps,deps) + +remove_generic_info_and_determine_generic_instance_deps :: ![ParsedBody] !Int !TypeCons !*CollectAdmin -> (![ParsedBody],!Int,!GenericInstanceDependencies,!*CollectAdmin) +remove_generic_info_and_determine_generic_instance_deps bodies arity type_cons ca + = case type_cons of + TypeConsSymb {type_ident={id_name}} + | id_name=="OBJECT" || id_name=="CONS" || id_name=="RECORD" || id_name=="FIELD" || id_name=="PAIR" || id_name=="EITHER" || id_name=="UNIT" + # (bodies,n_deps,deps) = remove_generic_info_and_determine_generic_instance_deps_in_bodies bodies -1 0 + | n_deps>=0 + # deps = deps bitand ((1<<n_deps)-1) + -> (bodies,arity-1,GenericInstanceUsedArgs n_deps deps,ca) + -> (bodies,arity-1,GenericInstanceUsedArgs 0 0,ca) + _ + -> (bodies,arity-1,AllGenericInstanceDependencies,ca) + where + remove_generic_info_and_determine_generic_instance_deps_in_bodies [body:bodies] n_deps deps + # (body,n_deps,deps) = remove_generic_info_and_determine_generic_instance_deps_in_body body n_deps deps + # (bodies,n_deps,deps) = remove_generic_info_and_determine_generic_instance_deps_in_bodies bodies n_deps deps + = ([body:bodies],n_deps,deps) + remove_generic_info_and_determine_generic_instance_deps_in_bodies [] n_deps deps + = ([],n_deps,deps) + + remove_generic_info_and_determine_generic_instance_deps_in_body body=:{pb_args=[_:args]} n_deps deps + # (n_deps,deps) = mark_deps_in_args args 0 n_deps deps + = ({body & pb_args=args},n_deps,deps) + remove_generic_info_and_determine_generic_instance_deps_in_body body n_deps deps + = (body,n_deps,deps) + +mark_deps_in_args :: [ParsedExpr] Int Int Int -> (!Int,!Int) +mark_deps_in_args [PE_WildCard:args] arg_n n_deps deps + = mark_deps_in_args args (arg_n+1) n_deps deps +mark_deps_in_args [_:args] arg_n n_deps deps + # deps = deps bitor (1<<arg_n) + = mark_deps_in_args args (arg_n+1) n_deps deps +mark_deps_in_args [] arg_n n_deps deps + | n_deps>=0 + | arg_n<n_deps + = (arg_n,deps) + = (n_deps,deps) + = (arg_n,deps) strictness_from_fields :: ![ParsedSelector] -> StrictnessList strictness_from_fields fields @@ -1230,20 +1376,23 @@ where cons_count :: !Int, sel_count :: !Int, mem_count :: !Int, - type_count :: !Int + type_count :: !Int, + macro_count :: !Int } reorganiseDefinitions :: Bool [ParsedDefinition] !DefCounts *CollectAdmin -> (![FunDef],!CollectedDefinitions (ScannedInstanceAndMembersR FunDef), ![ParsedImport], ![ImportedObject],![ParsedForeignExport],!*CollectAdmin) -reorganiseDefinitions icl_module [PD_Function pos name is_infix args rhs fun_kind : defs] def_counts ca +reorganiseDefinitions icl_module [PD_Function pos name is_infix args rhs fun_kind : defs] def_counts=:{macro_count} ca # prio = if is_infix (Prio NoAssoc 9) NoPrio fun_arity = length args (bodies, fun_kind, defs, ca) = collectFunctionBodies name fun_arity prio fun_kind defs ca - (fun_defs, c_defs, imports, imported_objects,foreign_exports, ca) = reorganiseDefinitions icl_module defs def_counts ca fun = MakeNewImpOrDefFunction name fun_arity [{ pb_args = args, pb_rhs = rhs, pb_position = pos } : bodies] fun_kind prio No pos | fun_kind == FK_Macro + # def_counts & macro_count=macro_count+1 + (fun_defs, c_defs, imports, imported_objects,foreign_exports, ca) = reorganiseDefinitions icl_module defs def_counts ca = (fun_defs, { c_defs & def_macros = [ fun : c_defs.def_macros ]}, imports, imported_objects,foreign_exports, ca) + # (fun_defs, c_defs, imports, imported_objects,foreign_exports, ca) = reorganiseDefinitions icl_module defs def_counts ca = ([ fun : fun_defs ], c_defs, imports, imported_objects,foreign_exports, ca) -reorganiseDefinitions icl_module [PD_TypeSpec fun_pos fun_name prio No specials : defs] def_counts ca +reorganiseDefinitions icl_module [PD_TypeSpec fun_pos fun_name prio No specials : defs] def_counts=:{macro_count} ca = case defs of [PD_Function pos name is_infix args rhs fun_kind : defs] | fun_name <> name @@ -1253,10 +1402,12 @@ reorganiseDefinitions icl_module [PD_TypeSpec fun_pos fun_name prio No specials // | belongsToTypeSpec fun_name prio name is_infix # fun_arity = length args (bodies, fun_kind, defs, ca) = collectFunctionBodies name fun_arity prio fun_kind defs ca - (fun_defs, c_defs, imports, imported_objects,foreign_exports, ca) = reorganiseDefinitions icl_module defs def_counts ca fun = MakeNewImpOrDefFunction name fun_arity [{ pb_args = args, pb_rhs = rhs, pb_position = pos } : bodies ] fun_kind prio No fun_pos | fun_kind == FK_Macro + # def_counts & macro_count=macro_count+1 + (fun_defs, c_defs, imports, imported_objects,foreign_exports, ca) = reorganiseDefinitions icl_module defs def_counts ca -> (fun_defs, { c_defs & def_macros = [ fun : c_defs.def_macros]}, imports, imported_objects,foreign_exports, ca) + # (fun_defs, c_defs, imports, imported_objects,foreign_exports, ca) = reorganiseDefinitions icl_module defs def_counts ca -> ([ fun : fun_defs ], c_defs, imports, imported_objects,foreign_exports, ca) // -> reorganiseDefinitions icl_module defs cons_count sel_count mem_count (postParseError fun_pos "function body expected (1)" ca) _ @@ -1343,12 +1494,12 @@ reorganiseDefinitions icl_module [PD_Type type_def=:{td_rhs = MoreConses type_ex type_def & td_rhs = UncheckedAlgConses type_ext_ident cons_symbs c_defs & def_types = [type_def : c_defs.def_types], def_constructors = mapAppend ParsedConstructorToConsDef cons_defs c_defs.def_constructors = (fun_defs, c_defs, imports, imported_objects,foreign_exports, ca) -reorganiseDefinitions icl_module [PD_Class class_def=:{class_ident,class_arity,class_args} members : defs] def_counts=:{mem_count} ca +reorganiseDefinitions icl_module [PD_Class class_def=:{class_ident,class_arity,class_args} members : defs] def_counts=:{mem_count,macro_count} ca # type_context = { tc_class = TCClass {glob_module = NoIndex, glob_object = {ds_ident = class_ident, ds_arity = class_arity, ds_index = NoIndex }}, tc_types = [ TV tv \\ tv <- class_args ], tc_var = nilPtr} (mem_defs, mem_macros, ca) = check_symbols_of_class_members members type_context ca (mem_symbs, mem_defs, class_size) = reorganise_member_defs mem_defs mem_count - def_counts & mem_count=mem_count + class_size + def_counts & mem_count=mem_count + class_size, macro_count=macro_count + length mem_macros (fun_defs, c_defs, imports, imported_objects,foreign_exports, ca) = reorganiseDefinitions icl_module defs def_counts ca class_def = { class_def & class_members = { member \\ member <- mem_symbs }} c_defs = { c_defs & def_classes = [class_def : c_defs.def_classes], def_macros = mem_macros ++ c_defs.def_macros, @@ -1450,19 +1601,40 @@ reorganiseDefinitions icl_module [PD_Generic gen : defs] def_counts ca # (fun_defs, c_defs, imports, imported_objects,foreign_exports, ca) = reorganiseDefinitions icl_module defs def_counts ca c_defs = {c_defs & def_generics = [gen : c_defs.def_generics]} = (fun_defs, c_defs, imports, imported_objects,foreign_exports, ca) -reorganiseDefinitions icl_module [PD_GenericCase gc=:{gc_type_cons} : defs] def_counts ca - # (GCF gc_ident gcf=:{gcf_body=GCB_ParsedBody args rhs,gcf_arity}) = gc.gc_gcf - #! (bodies, defs, ca) = collectGenericBodies defs gc_ident gcf_arity gc_type_cons ca - #! (fun_defs, c_defs, imports, imported_objects,foreign_exports, ca) - = reorganiseDefinitions icl_module defs def_counts ca - # body = {pb_args = args, pb_rhs = rhs, pb_position = gc.gc_pos} - #! bodies = [body : bodies] - #! fun_name = genericIdentToFunIdent gc_ident.id_name gc.gc_type_cons - #! fun = MakeNewImpOrDefFunction fun_name gcf_arity bodies (FK_Function cNameNotLocationDependent) NoPrio No gc.gc_pos - # gcf & gcf_body=GCB_FunDef fun, gcf_arity=gcf_arity - #! inst = {gc & gc_gcf = GCF gc_ident gcf} - #! c_defs = {c_defs & def_generic_cases = [inst : c_defs.def_generic_cases]} - = (fun_defs, c_defs, imports, imported_objects,foreign_exports, ca) +reorganiseDefinitions icl_module [PD_GenericCase gc=:{gc_type_cons} generic_fun_ident : defs] def_counts=:{macro_count} ca + # (GCF gc_ident gcf=:{gcf_body=GCB_ParsedBody args rhs,gcf_arity,gcf_generic_info}) = gc.gc_gcf + #! (bodies, generic_info, defs, ca) = collectGenericBodies defs gc_ident gcf_arity gc_type_cons ca + # generic_info = generic_info bitor gcf_generic_info + #! body = { pb_args = args, pb_rhs = rhs, pb_position = gc.gc_pos } + # bodies = [body : bodies] + # fun_name = genericIdentToFunIdent gc_ident.id_name /*gcf.gcf_ident.id_name*/ gc.gc_type_cons + | icl_module + # (bodies,gcf_arity,generic_instance_deps,ca) + = if (generic_info > 0) + (replace_generic_info_record_by_arguments generic_info bodies gcf_arity gc_type_cons ca) + (determine_generic_instance_deps bodies gcf_arity gc_type_cons ca) + #! (fun_defs, c_defs, imports, imported_objects,foreign_exports, ca) + = reorganiseDefinitions icl_module defs def_counts ca + #! fun = MakeNewImpOrDefFunction fun_name gcf_arity bodies (FK_Function cNameNotLocationDependent) NoPrio No gc.gc_pos + # gcf & gcf_body=GCB_FunDef fun, gcf_arity=gcf_arity, gcf_generic_info=generic_info, gcf_generic_instance_deps=generic_instance_deps + #! inst = {gc & gc_gcf = GCF gc_ident gcf} + #! c_defs & def_generic_cases = [inst : c_defs.def_generic_cases] + = (fun_defs, c_defs, imports, imported_objects,foreign_exports, ca) + + # (bodies,gcf_arity,generic_instance_deps,ca) + = if (generic_info > 0) + (replace_generic_info_record_by_arguments generic_info bodies gcf_arity gc_type_cons ca) + (if (generic_info < 0) + (determine_generic_instance_deps bodies gcf_arity gc_type_cons ca) + (remove_generic_info_and_determine_generic_instance_deps bodies gcf_arity gc_type_cons ca)) + # def_counts & macro_count=macro_count+1 + #! (fun_defs, c_defs, imports, imported_objects,foreign_exports, ca) + = reorganiseDefinitions icl_module defs def_counts ca + #! macro = MakeNewImpOrDefFunction generic_fun_ident gcf_arity bodies (FK_Function False) NoPrio No gc.gc_pos + # gcf & gcf_body=GCB_MacroIndex macro_count, gcf_arity=gcf_arity, gcf_generic_info=generic_info, gcf_generic_instance_deps=generic_instance_deps + #! inst = {gc & gc_gcf = GCF gc_ident gcf} + #! c_defs & def_generic_cases = [inst : c_defs.def_generic_cases], def_macros = [macro : c_defs.def_macros] + = (fun_defs, c_defs, imports, imported_objects,foreign_exports, ca) reorganiseDefinitions icl_module [PD_Derive derive_defs : defs] def_counts=:{type_count} ca # def_counts & type_count=type_count+1 #! (fun_defs, c_defs, imports, imported_objects,foreign_exports, ca) = reorganiseDefinitions icl_module defs def_counts ca @@ -1520,7 +1692,7 @@ qualified_ident_to_import_declaration IC_Selector ident = abort "qualified_ident_to_import_declaration IC_Selector not yet implemented" reorganiseDefinitionsAndAddTypes mod_ident support_dynamics icl_module defs ca - # def_counts = {cons_count=0, sel_count=0, mem_count=0, type_count=0} + # def_counts = {cons_count=0, sel_count=0, mem_count=0, type_count=0, macro_count=0} | support_dynamics # clean_types_module_ident = predefined_idents.[PD_StdDynamic] |