0
0
mirror of https://github.com/vim/vim.git synced 2025-09-24 03:44:06 -04:00

patch 8.2.4371: Vim9: can create a script variable from a legacy function

Problem:    Vim9: can create a script variable from a legacy function.
Solution:   Disallow creating a script variable from a function.
This commit is contained in:
Bram Moolenaar
2022-02-13 13:56:29 +00:00
parent cf6ad8ea8c
commit 75e27d78f5
4 changed files with 19 additions and 1 deletions

View File

@@ -3234,4 +3234,6 @@ EXTERN char e_function_name_must_start_with_capital_str[]
INIT(= N_("E1267: Function name must start with a capital: %s"));
EXTERN char e_cannot_use_s_colon_in_vim9_script_str[]
INIT(= N_("E1268: Cannot use s: in Vim9 script: %s"));
EXTERN char e_cannot_create_vim9_script_variable_in_function_str[]
INIT(= N_("E1269: Cannot create a Vim9 script variable in a function: %s"));
#endif

View File

@@ -3504,6 +3504,12 @@ set_var_const(
semsg(_(e_cannot_use_str_itself_it_is_imported), name);
goto failed;
}
if (!in_vim9script())
{
semsg(_(e_cannot_create_vim9_script_variable_in_function_str),
name);
goto failed;
}
}
if (dest_tv == NULL)

View File

@@ -3071,13 +3071,21 @@ def Test_forward_declaration()
delete('Xforward')
enddef
def Test_declare_script_in_func()
def Test_declare_script_var_in_func()
var lines =<< trim END
vim9script
func Declare()
let s:local = 123
endfunc
Declare()
END
v9.CheckScriptFailure(lines, 'E1269:')
enddef
def Test_lock_script_var()
var lines =<< trim END
vim9script
var local = 123
assert_equal(123, local)
var error: string

View File

@@ -750,6 +750,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
4371,
/**/
4370,
/**/