From 653b43666c90042440136da159e7976b21969290 Mon Sep 17 00:00:00 2001 From: johnvg Date: Tue, 16 Jul 2002 15:24:56 +0000 Subject: handle DclFunCall in function remove_calls_from_symbol_table, add code for AbstractSynType git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@1149 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d --- frontend/check.icl | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'frontend') diff --git a/frontend/check.icl b/frontend/check.icl index 572fc3c..6c4bde5 100644 --- a/frontend/check.icl +++ b/frontend/check.icl @@ -1114,6 +1114,9 @@ where # symbol_table = remove_call entry.ste_kind fun_index entry id_info symbol_table = remove_calls_from_symbol_table fun_index fun_level fun_calls fun_defs macro_defs symbol_table = remove_calls_from_symbol_table fun_index fun_level fun_calls fun_defs macro_defs symbol_table + remove_calls_from_symbol_table fun_index fun_level [DclFunCall _ _ : fun_calls] fun_defs macro_defs symbol_table + = remove_calls_from_symbol_table fun_index fun_level fun_calls fun_defs macro_defs symbol_table + remove_calls_from_symbol_table fun_index fun_level [] fun_defs macro_defs symbol_table = (fun_defs,macro_defs,symbol_table) @@ -1145,7 +1148,7 @@ checkFunctions mod_index level fun_index to_index local_functions_index_offset f # (fun_def,fun_defs, e_info, heaps, cs) = checkFunction fun_def mod_index (FunctionOrIclMacroIndex fun_index) level local_functions_index_offset fun_defs e_info heaps cs # fun_defs = { fun_defs & [fun_index] = fun_def } = checkFunctions mod_index level (inc fun_index) to_index local_functions_index_offset fun_defs e_info heaps cs - + checkDclMacros :: !Index !Level !Index !Index !*{#FunDef} !*ExpressionInfo !*Heaps !*CheckState -> (!*{#FunDef},!*ExpressionInfo,!*Heaps,!*CheckState) checkDclMacros mod_index level fun_index to_index fun_defs e_info heaps cs @@ -1574,7 +1577,7 @@ where = def_kind == cTypeDefs || def_kind == cSelectorDefs || def_kind == cClassDefs || def_kind == cGenericDefs is_abstract_type com_type_defs decl_index - = case com_type_defs.[decl_index].td_rhs of (AbstractType _) -> True ; _ -> False + = case com_type_defs.[decl_index].td_rhs of (AbstractType _) -> True ; (AbstractSynType _ _) -> True ; _ -> False add_dcl_declaration info_ptr entry (Declaration dcl) def_index decl_index (conversion_table, icl_sizes, icl_defs, symbol_table) # (icl_index, icl_sizes) = icl_sizes![def_index] @@ -1617,6 +1620,10 @@ where # cs_error = checkError "abstract type not defined in implementation module" "" (setErrorAdmin (newPosition td_name td_pos) cs.cs_error) = (new_type_defs,new_cons_defs,new_selector_defs,conversion_table,icl_sizes,icl_decl_symbols,{ cs & cs_error = cs_error }) + add_type_def td=:{td_name, td_pos, td_rhs = AbstractSynType _ _} new_type_defs new_cons_defs new_selector_defs conversion_table icl_sizes icl_decl_symbols cs + # cs_error = checkError "abstract type not defined in implementation module" "" + (setErrorAdmin (newPosition td_name td_pos) cs.cs_error) + = (new_type_defs,new_cons_defs,new_selector_defs,conversion_table,icl_sizes,icl_decl_symbols,{ cs & cs_error = cs_error }) add_type_def td new_type_defs new_cons_defs new_selector_defs conversion_table icl_sizes icl_decl_symbols cs = ([td : new_type_defs],new_cons_defs,new_selector_defs,conversion_table,icl_sizes,icl_decl_symbols,cs) -- cgit v1.2.3