summaryrefslogtreecommitdiff
path: root/src/evalvars.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-03-31 21:07:24 +0200
committerBram Moolenaar <Bram@vim.org>2021-03-31 21:07:24 +0200
commite535db86e76db5e8fcd2fa8ad54050e171e8adc3 (patch)
tree34938b8ee9c7d723ee06ae49de14e0693c826b95 /src/evalvars.c
parentdad4473f02e1fec86d43a2fc094536a4b27d3b25 (diff)
downloadvim-git-e535db86e76db5e8fcd2fa8ad54050e171e8adc3.tar.gz
patch 8.2.2680: Vim9: problem defining a script variable from legacy functionv8.2.2680
Problem: Vim9: problem defining a script variable from legacy function. Solution: Check if the script is Vim9, not the current syntax. (closes #8032)
Diffstat (limited to 'src/evalvars.c')
-rw-r--r--src/evalvars.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/evalvars.c b/src/evalvars.c
index e9e893a3f..a48245333 100644
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -3168,6 +3168,7 @@ set_var_const(
hashtab_T *ht;
int is_script_local;
int vim9script = in_vim9script();
+ int var_in_vim9script;
ht = find_var_ht(name, &varname);
if (ht == NULL || *varname == NUL)
@@ -3186,6 +3187,7 @@ set_var_const(
vim9_declare_error(name);
goto failed;
}
+ var_in_vim9script = is_script_local && current_script_is_vim9();
di = find_var_in_ht(ht, 0, varname, TRUE);
@@ -3217,7 +3219,7 @@ set_var_const(
goto failed;
}
- if (is_script_local && vim9script)
+ if (var_in_vim9script)
{
where_T where;
@@ -3244,7 +3246,7 @@ set_var_const(
// A Vim9 script-local variable is also present in sn_all_vars and
// sn_var_vals. It may set "type" from "tv".
- if (is_script_local && vim9script)
+ if (var_in_vim9script)
update_vim9_script_var(FALSE, di, flags, tv, &type);
}
@@ -3308,7 +3310,7 @@ set_var_const(
}
// add a new variable
- if (vim9script && is_script_local && (flags & ASSIGN_NO_DECL))
+ if (var_in_vim9script && (flags & ASSIGN_NO_DECL))
{
semsg(_(e_unknown_variable_str), name);
goto failed;
@@ -3342,7 +3344,7 @@ set_var_const(
// A Vim9 script-local variable is also added to sn_all_vars and
// sn_var_vals. It may set "type" from "tv".
- if (is_script_local && vim9script)
+ if (var_in_vim9script)
update_vim9_script_var(TRUE, di, flags, tv, &type);
}