1
0
forked from aniani/vim

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)
This commit is contained in:
Bram Moolenaar 2021-08-05 19:01:17 +02:00
parent 4f33bc20d7
commit af647e76ca
3 changed files with 23 additions and 2 deletions

View File

@ -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()

View File

@ -755,6 +755,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
3296,
/**/
3295,
/**/

View File

@ -7021,8 +7021,10 @@ compile_assignment(char_u *arg, exarg_T *eap, cmdidx_T cmdidx, cctx_T *cctx)
// 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)