diff options
-rw-r--r-- | src/errors.h | 2 | ||||
-rw-r--r-- | src/evalvars.c | 6 | ||||
-rw-r--r-- | src/testdir/test_vim9_script.vim | 10 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 19 insertions, 1 deletions
diff --git a/src/errors.h b/src/errors.h index ef9e08346..c5a2649a5 100644 --- a/src/errors.h +++ b/src/errors.h @@ -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 diff --git a/src/evalvars.c b/src/evalvars.c index 994b9799c..d182a0e85 100644 --- a/src/evalvars.c +++ b/src/evalvars.c @@ -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) diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim index eec19d94f..9993c5edb 100644 --- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -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 diff --git a/src/version.c b/src/version.c index b7fbbbd8b..3edb62d26 100644 --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 4371, +/**/ 4370, /**/ 4369, |