diff options
author | Bram Moolenaar <Bram@vim.org> | 2021-03-31 21:07:24 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2021-03-31 21:07:24 +0200 |
commit | e535db86e76db5e8fcd2fa8ad54050e171e8adc3 (patch) | |
tree | 34938b8ee9c7d723ee06ae49de14e0693c826b95 /src/evalvars.c | |
parent | dad4473f02e1fec86d43a2fc094536a4b27d3b25 (diff) |
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.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/evalvars.c b/src/evalvars.c index e9e893a3f8..a482453331 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); } |