summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/errors.h2
-rw-r--r--src/evalvars.c6
-rw-r--r--src/testdir/test_vim9_script.vim10
-rw-r--r--src/version.c2
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,