mirror of
https://github.com/zoriya/vim.git
synced 2026-06-03 20:13:31 +00:00
patch 8.2.2080: Vim9: no proper error message for using s:var in for loop
Problem: Vim9: no proper error message for using s:var in for loop. Solution: Give a specific error.
This commit is contained in:
@@ -1884,6 +1884,27 @@ def Test_for_loop_fails()
|
||||
CheckDefFailure(['for i in range(3)', 'echo 3'], 'E170:')
|
||||
enddef
|
||||
|
||||
def Test_for_loop_script_var()
|
||||
# cannot use s:var in a :def function
|
||||
CheckDefFailure(['for s:var in range(3)', 'echo 3'], 'E1101:')
|
||||
|
||||
# can use s:var in Vim9 script, with or without s:
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
var total = 0
|
||||
for s:var in [1, 2, 3]
|
||||
total += s:var
|
||||
endfor
|
||||
assert_equal(6, total)
|
||||
|
||||
total = 0
|
||||
for var in [1, 2, 3]
|
||||
total += var
|
||||
endfor
|
||||
assert_equal(6, total)
|
||||
END
|
||||
enddef
|
||||
|
||||
def Test_for_loop_unpack()
|
||||
var lines =<< trim END
|
||||
var result = []
|
||||
|
||||
@@ -750,6 +750,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
2080,
|
||||
/**/
|
||||
2079,
|
||||
/**/
|
||||
|
||||
@@ -6617,6 +6617,12 @@ compile_for(char_u *arg_start, cctx_T *cctx)
|
||||
goto failed;
|
||||
}
|
||||
|
||||
if (STRNCMP(name, "s:", 2) == 0)
|
||||
{
|
||||
semsg(_(e_cannot_declare_script_variable_in_function), name);
|
||||
goto failed;
|
||||
}
|
||||
|
||||
// Reserve a variable to store "var".
|
||||
// TODO: check for type
|
||||
var_lvar = reserve_local(cctx, arg, varlen, FALSE, &t_any);
|
||||
|
||||
Reference in New Issue
Block a user