summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-01-04 13:37:54 +0100
committerBram Moolenaar <Bram@vim.org>2021-01-04 13:37:54 +0100
commit0ea04408653be843e37d03ce574f5d2eae682339 (patch)
treecf4644df939c3a83e3a86ac68568d53a3d474ff7
parent014f698cb68ff80c49f9f5d3dbe78127df281885 (diff)
patch 8.2.2297: Vim9: cannot set 'number' to a boolean valuev8.2.2297
Problem: Vim9: cannot set 'number' to a boolean value. Solution: Use tv_get_bool(). (closes #7615)
-rw-r--r--src/evalvars.c10
-rw-r--r--src/testdir/test_vim9_assign.vim9
-rw-r--r--src/version.c2
3 files changed, 19 insertions, 2 deletions
diff --git a/src/evalvars.c b/src/evalvars.c
index 42ff828a54..8aac7667d4 100644
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -1370,8 +1370,14 @@ ex_let_one(
|| opt_type == gov_hidden_bool
|| opt_type == gov_hidden_number)
&& (tv->v_type != VAR_STRING || !in_vim9script()))
- // number, possibly hidden
- n = (long)tv_get_number(tv);
+ {
+ if (opt_type == gov_bool || opt_type == gov_hidden_bool)
+ // bool, possibly hidden
+ n = (long)tv_get_bool(tv);
+ else
+ // number, possibly hidden
+ n = (long)tv_get_number(tv);
+ }
// Avoid setting a string option to the text "v:false" or similar.
// In Vim9 script also don't convert a number to string.
diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim
index bdae6350a6..da5e782a2b 100644
--- a/src/testdir/test_vim9_assign.vim
+++ b/src/testdir/test_vim9_assign.vim
@@ -161,6 +161,15 @@ def Test_assignment()
assert_equal(6, &g:ts)
&g:ts += 2
assert_equal(8, &g:ts)
+
+ &number = true
+ assert_equal(true, &number)
+ &number = 0
+ assert_equal(false, &number)
+ &number = 1
+ assert_equal(true, &number)
+ &number = false
+ assert_equal(false, &number)
END
CheckDefAndScriptSuccess(lines)
diff --git a/src/version.c b/src/version.c
index 7be57284fd..f173735672 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 */
/**/
+ 2297,
+/**/
2296,
/**/
2295,