patch 8.2.3296: Vim9: cannot add a number to a float
Problem: Vim9: cannot add a number to a float.
Solution: Accept a number if the destination is a float. (closes #8703)
diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim
index 428de1c..8491a4d 100644
--- a/src/testdir/test_vim9_assign.vim
+++ b/src/testdir/test_vim9_assign.vim
@@ -245,6 +245,23 @@
END
enddef
+def Test_float_and_number()
+ if !has('float')
+ MissingFeature float
+ else
+ var lines =<< trim END
+ var f: float
+ f += 2
+ f -= 1
+ assert_equal(1.0, f)
+ ++f
+ --f
+ assert_equal(1.0, f)
+ END
+ CheckDefAndScriptSuccess(lines)
+ endif
+enddef
+
let g:someNumber = 43
def Test_assign_concat()
diff --git a/src/version.c b/src/version.c
index cc8300b..c6852f1 100644
--- a/src/version.c
+++ b/src/version.c
@@ -756,6 +756,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 3296,
+/**/
3295,
/**/
3294,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index 1c6e328..d2a6f68 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -7021,8 +7021,10 @@
// Special case: assigning to @# can use a number or a
// string.
- if (lhs_type == &t_number_or_string
- && rhs_type->tt_type == VAR_NUMBER)
+ // Also: can assign a number to a float.
+ if ((lhs_type == &t_number_or_string
+ || lhs_type == &t_float)
+ && rhs_type->tt_type == VAR_NUMBER)
lhs_type = &t_number;
if (*p != '=' && need_type(rhs_type, lhs_type,
-1, 0, cctx, FALSE, FALSE) == FAIL)