mirror of
https://github.com/vim/vim.git
synced 2025-09-27 04:14:06 -04:00
patch 8.2.3263: Vim9: "..=" does not accept same types as the ".." operator
Problem: Vim9: "..=" does not accept same types as the ".." operator. Solution: Convert value to string like ".." does. (issue #8664)
This commit is contained in:
@@ -239,6 +239,32 @@ def Test_assignment()
|
|||||||
END
|
END
|
||||||
enddef
|
enddef
|
||||||
|
|
||||||
|
let g:someNumber = 43
|
||||||
|
|
||||||
|
def Test_assign_concat()
|
||||||
|
var lines =<< trim END
|
||||||
|
var s = '-'
|
||||||
|
s ..= 99
|
||||||
|
s ..= true
|
||||||
|
s ..= '-'
|
||||||
|
s ..= v:null
|
||||||
|
s ..= g:someNumber
|
||||||
|
assert_equal('-99true-null43', s)
|
||||||
|
END
|
||||||
|
CheckDefAndScriptSuccess(lines)
|
||||||
|
|
||||||
|
lines =<< trim END
|
||||||
|
var s = '-'
|
||||||
|
s ..= [1, 2]
|
||||||
|
END
|
||||||
|
CheckDefAndScriptFailure2(lines, 'E1105: Cannot convert list to string', 'E734: Wrong variable type for .=', 2)
|
||||||
|
lines =<< trim END
|
||||||
|
var s = '-'
|
||||||
|
s ..= {a: 2}
|
||||||
|
END
|
||||||
|
CheckDefAndScriptFailure2(lines, 'E1105: Cannot convert dict to string', 'E734: Wrong variable type for .=', 2)
|
||||||
|
enddef
|
||||||
|
|
||||||
def Test_assign_register()
|
def Test_assign_register()
|
||||||
var lines =<< trim END
|
var lines =<< trim END
|
||||||
@c = 'areg'
|
@c = 'areg'
|
||||||
|
@@ -1254,7 +1254,7 @@ def Test_disassemble_for_loop_eval()
|
|||||||
'res ..= str\_s*' ..
|
'res ..= str\_s*' ..
|
||||||
'\d\+ LOAD $0\_s*' ..
|
'\d\+ LOAD $0\_s*' ..
|
||||||
'\d\+ LOAD $2\_s*' ..
|
'\d\+ LOAD $2\_s*' ..
|
||||||
'\d\+ CHECKTYPE string stack\[-1\]\_s*' ..
|
'\d 2STRING_ANY stack\[-1\]\_s*' ..
|
||||||
'\d\+ CONCAT\_s*' ..
|
'\d\+ CONCAT\_s*' ..
|
||||||
'\d\+ STORE $0\_s*' ..
|
'\d\+ STORE $0\_s*' ..
|
||||||
'endfor\_s*' ..
|
'endfor\_s*' ..
|
||||||
|
@@ -755,6 +755,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
3263,
|
||||||
/**/
|
/**/
|
||||||
3262,
|
3262,
|
||||||
/**/
|
/**/
|
||||||
|
@@ -7086,8 +7086,12 @@ compile_assignment(char_u *arg, exarg_T *eap, cmdidx_T cmdidx, cctx_T *cctx)
|
|||||||
type_T *stacktype;
|
type_T *stacktype;
|
||||||
|
|
||||||
if (*op == '.')
|
if (*op == '.')
|
||||||
expected = &t_string;
|
{
|
||||||
|
if (may_generate_2STRING(-1, FALSE, cctx) == FAIL)
|
||||||
|
goto theend;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
expected = lhs.lhs_member_type;
|
expected = lhs.lhs_member_type;
|
||||||
stacktype = ((type_T **)stack->ga_data)[stack->ga_len - 1];
|
stacktype = ((type_T **)stack->ga_data)[stack->ga_len - 1];
|
||||||
if (
|
if (
|
||||||
@@ -7098,6 +7102,7 @@ compile_assignment(char_u *arg, exarg_T *eap, cmdidx_T cmdidx, cctx_T *cctx)
|
|||||||
need_type(stacktype, expected, -1, 0, cctx,
|
need_type(stacktype, expected, -1, 0, cctx,
|
||||||
FALSE, FALSE) == FAIL)
|
FALSE, FALSE) == FAIL)
|
||||||
goto theend;
|
goto theend;
|
||||||
|
}
|
||||||
|
|
||||||
if (*op == '.')
|
if (*op == '.')
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user