diff options
author | sjakie | 2002-01-17 10:08:37 +0000 |
---|---|---|
committer | sjakie | 2002-01-17 10:08:37 +0000 |
commit | 4d280342ce75b8eabfda0a4e2ec7eacc655a0b4b (patch) | |
tree | c478c23863e7c3db60c1bd08de7258358484dc6d /frontend/checktypes.icl | |
parent | added default alternatives for functions 'is_lazy_or_strict_array' (diff) |
Bug fix: Scopes in dynamics
git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@968 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
Diffstat (limited to 'frontend/checktypes.icl')
-rw-r--r-- | frontend/checktypes.icl | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/frontend/checktypes.icl b/frontend/checktypes.icl index 90c155d..10a18ed 100644 --- a/frontend/checktypes.icl +++ b/frontend/checktypes.icl @@ -877,12 +877,12 @@ where remove_global_type_variables_in_dynamic dyn_info_ptr (expr_heap, symbol_table) # (dyn_info, expr_heap) = readPtr dyn_info_ptr expr_heap = case dyn_info of - EI_Dynamic (Yes {dt_global_vars}) _ - -> (expr_heap, remove_global_type_variables dt_global_vars symbol_table) - EI_Dynamic No _ - -> (expr_heap, symbol_table) - EI_DynamicTypeWithVars loc_type_vars {dt_global_vars} loc_dynamics - -> remove_global_type_variables_in_dynamics loc_dynamics (expr_heap, remove_global_type_variables dt_global_vars symbol_table) + EI_UnmarkedDynamic (Yes {dt_global_vars}) local_dynamics + -> remove_global_type_variables_in_dynamics local_dynamics (expr_heap, remove_global_type_variables dt_global_vars symbol_table) + EI_UnmarkedDynamic No local_dynamics + -> remove_global_type_variables_in_dynamics local_dynamics (expr_heap, symbol_table) + EI_DynamicTypeWithVars loc_type_vars {dt_global_vars} local_dynamics + -> remove_global_type_variables_in_dynamics local_dynamics (expr_heap, remove_global_type_variables dt_global_vars symbol_table) remove_global_type_variables global_vars symbol_table @@ -916,10 +916,10 @@ where check_global_type_variables_in_dynamic dyn_info_ptr (expr_heap, cs) # (dyn_info, expr_heap) = readPtr dyn_info_ptr expr_heap = case dyn_info of - EI_Dynamic (Yes {dt_global_vars}) _ - -> (expr_heap, check_global_type_variables dt_global_vars cs) - EI_Dynamic No _ - -> (expr_heap, cs) + EI_UnmarkedDynamic (Yes {dt_global_vars}) loc_dynamics + -> check_global_type_variables_in_dynamics loc_dynamics (expr_heap, check_global_type_variables dt_global_vars cs) + EI_UnmarkedDynamic No loc_dynamics + -> check_global_type_variables_in_dynamics loc_dynamics (expr_heap, cs) EI_DynamicTypeWithVars loc_type_vars {dt_global_vars} loc_dynamics -> check_global_type_variables_in_dynamics loc_dynamics (expr_heap, check_global_type_variables dt_global_vars cs) @@ -940,18 +940,19 @@ where check_dynamic mod_index scope dyn_info_ptr (type_defs, modules, type_heaps, expr_heap, cs) # (dyn_info, expr_heap) = readPtr dyn_info_ptr expr_heap = case dyn_info of - EI_Dynamic opt_type ei_dynamic_id + EI_UnmarkedDynamic opt_type loc_dynamics -> case opt_type of Yes dyn_type # (dyn_type, loc_type_vars, type_defs, modules, type_heaps, cs) = check_dynamic_type mod_index scope dyn_type type_defs modules type_heaps cs | isEmpty loc_type_vars - -> (type_defs, modules, type_heaps, expr_heap <:= (dyn_info_ptr, EI_Dynamic (Yes dyn_type) ei_dynamic_id), cs) + # expr_heap = expr_heap <:= (dyn_info_ptr, EI_UnmarkedDynamic (Yes dyn_type) loc_dynamics) + -> check_local_dynamics mod_index scope loc_dynamics type_defs modules type_heaps expr_heap cs # cs_symbol_table = removeVariablesFromSymbolTable scope loc_type_vars cs.cs_symbol_table cs_error = checkError loc_type_vars "type variable(s) not defined" cs.cs_error - -> (type_defs, modules, type_heaps, expr_heap <:= (dyn_info_ptr, EI_Dynamic (Yes dyn_type) ei_dynamic_id), + -> (type_defs, modules, type_heaps, expr_heap <:= (dyn_info_ptr, EI_UnmarkedDynamic (Yes dyn_type) loc_dynamics), { cs & cs_error = cs_error, cs_symbol_table = cs_symbol_table }) No - -> (type_defs, modules, type_heaps, expr_heap, cs) + -> check_local_dynamics mod_index scope loc_dynamics type_defs modules type_heaps expr_heap cs EI_DynamicType dyn_type loc_dynamics # (dyn_type, loc_type_vars, type_defs, modules, type_heaps, cs) = check_dynamic_type mod_index scope dyn_type type_defs modules type_heaps cs (type_defs, modules, type_heaps, expr_heap, cs) = check_local_dynamics mod_index scope loc_dynamics type_defs modules type_heaps expr_heap cs |