summaryrefslogtreecommitdiffstats
path: root/src/evalvars.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-06-21 15:52:59 +0200
committerBram Moolenaar <Bram@vim.org>2020-06-21 15:52:59 +0200
commite55b1c098d9dc04c960e6575bb554b5130af8989 (patch)
tree5c2825d93f3b76f1ba87603b062585c72df02131 /src/evalvars.c
parent820ffa567c5a4bc0d3517c79c91d63d8062c358e (diff)
patch 8.2.1028: Vim9: no error for declaring buffer, window, etc. variablev8.2.1028
Problem: Vim9: no error for declaring buffer, window, etc. variable. Solution: Give an error. Unify the error messages.
Diffstat (limited to 'src/evalvars.c')
-rw-r--r--src/evalvars.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/evalvars.c b/src/evalvars.c
index 91883ddc40..b3e89150ad 100644
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -1204,6 +1204,13 @@ ex_let_one(
emsg(_("E996: Cannot lock an environment variable"));
return NULL;
}
+ if (current_sctx.sc_version == SCRIPT_VERSION_VIM9
+ && (flags & LET_NO_COMMAND) == 0)
+ {
+ vim9_declare_error(arg);
+ return NULL;
+ }
+
// Find the end of the name.
++arg;
name = arg;
@@ -2864,16 +2871,17 @@ set_var_const(
semsg(_(e_illvar), name);
return;
}
+ is_script_local = ht == get_script_local_ht();
+
if (current_sctx.sc_version == SCRIPT_VERSION_VIM9
- && ht == &globvarht
- && (flags & LET_NO_COMMAND) == 0)
+ && !is_script_local
+ && (flags & LET_NO_COMMAND) == 0
+ && name[1] == ':')
{
- semsg(_(e_declare_global), name);
+ vim9_declare_error(name);
return;
}
- is_script_local = ht == get_script_local_ht();
-
di = find_var_in_ht(ht, 0, varname, TRUE);
// Search in parent scope which is possible to reference from lambda