mirror of
https://github.com/vim/vim.git
synced 2025-09-23 03:43:49 -04:00
patch 8.2.1845: Vim9: function defined in a block can't use block variables
Problem: Vim9: function defined in a block can't use variables defined in that block. Solution: First step: Make a second hashtab that holds all script variables, also block-local ones, with more information.
This commit is contained in:
@@ -1348,8 +1348,8 @@ do_source(
|
||||
}
|
||||
}
|
||||
|
||||
// old imports are no longer valid
|
||||
free_imports(sid);
|
||||
// old imports and script variables are no longer valid
|
||||
free_imports_and_script_vars(sid);
|
||||
|
||||
// in Vim9 script functions are marked deleted
|
||||
if (is_vim9)
|
||||
@@ -1375,6 +1375,7 @@ do_source(
|
||||
// Allocate the local script variables to use for this script.
|
||||
new_script_vars(script_items.ga_len);
|
||||
ga_init2(&si->sn_var_vals, sizeof(svar_T), 10);
|
||||
hash_init(&si->sn_all_vars.dv_hashtab);
|
||||
ga_init2(&si->sn_imports, sizeof(imported_T), 10);
|
||||
ga_init2(&si->sn_type_list, sizeof(type_T), 10);
|
||||
# ifdef FEAT_PROFILE
|
||||
@@ -1592,7 +1593,7 @@ free_scriptnames(void)
|
||||
vim_free(si->sn_vars);
|
||||
|
||||
vim_free(si->sn_name);
|
||||
free_imports(i);
|
||||
free_imports_and_script_vars(i);
|
||||
free_string_option(si->sn_save_cpo);
|
||||
# ifdef FEAT_PROFILE
|
||||
ga_clear(&si->sn_prl_ga);
|
||||
|
Reference in New Issue
Block a user