From 412f60627d680c0b7a0f9505c345d8fb5980b470 Mon Sep 17 00:00:00 2001 From: martijnv Date: Mon, 2 Apr 2001 12:07:55 +0000 Subject: bug fix in convertTypeCode2 git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@356 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d --- frontend/convertDynamics.icl | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/frontend/convertDynamics.icl b/frontend/convertDynamics.icl index 1ac9847..a91ad2a 100644 --- a/frontend/convertDynamics.icl +++ b/frontend/convertDynamics.icl @@ -382,7 +382,21 @@ convertTypecode2 cinp=:{cinp_st_args} t=:(TCE_Var var_info_ptr) replace_tc_args = (True,Var {var_name = a_ij_var_name, var_info_ptr = var_info_ptr, var_expr_ptr = nilPtr},binds,placeholders_and_tc_args,ci) convertTypecode2 cinp=:{cinp_st_args} t=:(TCE_TypeTerm var_info_ptr) replace_tc_args binds placeholders_and_tc_args ci - = convertTypecode2 cinp t replace_tc_args binds placeholders_and_tc_args ci + #! cinp_st_args + = filter (\{fv_info_ptr} -> fv_info_ptr == var_info_ptr) cinp_st_args + | isEmpty cinp_st_args + #! (e,binds,placeholders_and_tc_args,ci) + = convertTypecode cinp t replace_tc_args binds placeholders_and_tc_args ci + = (False,e,binds,placeholders_and_tc_args,ci) + + /* + ** the TCE_VAR is a TC argument and it is not part of a larger type expression. It + ** later suffices to generate a coerce instead of an application. This is an + ** optimization. + */ + = (True,Var {var_name = a_ij_var_name, var_info_ptr = var_info_ptr, var_expr_ptr = nilPtr},binds,placeholders_and_tc_args,ci) + +// = convertTypecode2 cinp t replace_tc_args binds placeholders_and_tc_args ci convertTypecode2 cinp t replace_tc_args binds placeholders_and_tc_args ci #! (e,binds,placeholders_and_tc_args,ci) -- cgit v1.2.3