diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-09-13 18:57:47 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-09-13 18:57:47 +0200 |
commit | f0afd9e18227d3459c888584d0658a1837d2aaf8 (patch) | |
tree | 58d6fe28100f18052a7c848f3db0fd592ba8356e | |
parent | b806aa5bd910dba94fbde586f6019b4825813d28 (diff) |
patch 8.2.1674: Vim9: internal error when using variable that was not setv8.2.1674
Problem: Vim9: internal error when using variable that was not set.
Solution: Give a meaningful error. (closes #6937)
-rw-r--r-- | src/testdir/test_vim9_script.vim | 8 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/vim9script.c | 6 |
3 files changed, 15 insertions, 1 deletions
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim index bd0a5c8748..27dbd30d26 100644 --- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -3308,6 +3308,14 @@ def Test_invalid_sid() delete('Xdidit') enddef +def Test_unset_any_variable() + let lines =<< trim END + let var: any + assert_equal(0, var) + END + CheckDefAndScriptSuccess(lines) +enddef + " Keep this last, it messes up highlighting. def Test_substitute_cmd() new diff --git a/src/version.c b/src/version.c index f30daf818b..503c6ead01 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 */ /**/ + 1674, +/**/ 1673, /**/ 1672, diff --git a/src/vim9script.c b/src/vim9script.c index 48163150c6..74d0579f35 100644 --- a/src/vim9script.c +++ b/src/vim9script.c @@ -548,7 +548,11 @@ vim9_declare_scriptvar(exarg_T *eap, char_u *arg) // Create the variable with 0/NULL value. CLEAR_FIELD(init_tv); - init_tv.v_type = type->tt_type; + if (type->tt_type == VAR_ANY) + // A variable of type "any" is not possible, just use zero instead + init_tv.v_type = VAR_NUMBER; + else + init_tv.v_type = type->tt_type; set_var_const(name, type, &init_tv, FALSE, 0); vim_free(name); |