changeset 25519:f7db86111acd v8.2.3296

patch 8.2.3296: Vim9: cannot add a number to a float Commit: https://github.com/vim/vim/commit/af647e76cacc60d3cfc5df3ff5b3d9d4b69b519d Author: Bram Moolenaar <Bram@vim.org> Date: Thu Aug 5 19:01:17 2021 +0200 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 https://github.com/vim/vim/issues/8703)
author Bram Moolenaar <Bram@vim.org>
date Thu, 05 Aug 2021 19:15:04 +0200
parents f0de0b105458
children 619be3af2a4e
files src/testdir/test_vim9_assign.vim src/version.c src/vim9compile.c
diffstat 3 files changed, 23 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_vim9_assign.vim
+++ b/src/testdir/test_vim9_assign.vim
@@ -245,6 +245,23 @@ def Test_assignment()
   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()
--- a/src/version.c
+++ b/src/version.c
@@ -756,6 +756,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3296,
+/**/
     3295,
 /**/
     3294,
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -7021,8 +7021,10 @@ compile_assignment(char_u *arg, exarg_T 
 
 		    // 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)