From: Yegappan Lakshmanan Date: Sat, 31 Jan 2026 10:25:50 +0000 (+0000) Subject: patch 9.1.2122: Vim9: Negating a float doesn't result in a bool X-Git-Tag: v9.1.2122^0 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3a5e57fc7eeaf67175223abc2bf7752891297721;p=thirdparty%2Fvim.git patch 9.1.2122: Vim9: Negating a float doesn't result in a bool Problem: Vim9: Negating a float doesn't result in a boolean (kennypete) Solution: Make it return a boolean (Yegappan Lakshmanan). related: #19282 related: #19289 Signed-off-by: Yegappan Lakshmanan Signed-off-by: Christian Brabandt --- diff --git a/src/eval.c b/src/eval.c index d2f06fd114..71bd353701 100644 --- a/src/eval.c +++ b/src/eval.c @@ -5421,6 +5421,7 @@ eval9_leader( { rettv->v_type = VAR_BOOL; val = f == 0.0 ? VVAL_TRUE : VVAL_FALSE; + type = VAR_BOOL; } else f = !f; diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim index 4551ea5eb9..ab0b02a6d1 100644 --- a/src/testdir/test_vim9_expr.vim +++ b/src/testdir/test_vim9_expr.vim @@ -4117,6 +4117,11 @@ def Test_expr9_not() assert_equal(false, ![1, 2, 3]->reverse()) assert_equal(true, ![]->reverse()) + + # float + assert_equal(true, !0.0) + assert_equal(false, !1.0) + assert_equal(false, !25.678) END v9.CheckDefAndScriptSuccess(lines) enddef diff --git a/src/version.c b/src/version.c index 8279563519..78ae26eef0 100644 --- a/src/version.c +++ b/src/version.c @@ -734,6 +734,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 2122, /**/ 2121, /**/