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:
@@ -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
|
||||
|
@@ -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)
|
||||
|
@@ -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
|
||||
|
@@ -750,6 +750,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
4371,
|
||||
/**/
|
||||
4370,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user