mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 8.2.0764: Vim9: assigning to option not fully tested
Problem: Vim9: assigning to option not fully tested. Solution: Add more test cases. Allow using any type for assignment.
This commit is contained in:
parent
4457e1d98f
commit
a6e67e4f41
@ -14,6 +14,8 @@ let s:addToMe = 111
|
||||
let g:existing = 'yes'
|
||||
let g:inc_counter = 1
|
||||
let $SOME_ENV_VAR = 'some'
|
||||
let g:alist = [7]
|
||||
let g:astring = 'text'
|
||||
|
||||
def Test_assignment()
|
||||
let bool1: bool = true
|
||||
@ -95,7 +97,12 @@ def Test_assignment()
|
||||
assert_equal(2, &ts)
|
||||
call CheckDefFailure(['¬ex += 3'], 'E113:')
|
||||
call CheckDefFailure(['&ts ..= "xxx"'], 'E1019:')
|
||||
call CheckDefFailure(['&ts = [7]'], 'E1013:')
|
||||
call CheckDefExecFailure(['&ts = g:alist'], 'E1029: Expected number but got list')
|
||||
call CheckDefFailure(['&ts = "xx"'], 'E1013:')
|
||||
call CheckDefExecFailure(['&ts = g:astring'], 'E1029: Expected number but got string')
|
||||
call CheckDefFailure(['&path += 3'], 'E1013:')
|
||||
call CheckDefExecFailure(['&bs = "asdf"'], 'E474:')
|
||||
# test freeing ISN_STOREOPT
|
||||
call CheckDefFailure(['&ts = 3', 'let asdf'], 'E1022:')
|
||||
&ts = 8
|
||||
|
@ -746,6 +746,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
764,
|
||||
/**/
|
||||
763,
|
||||
/**/
|
||||
|
@ -3490,7 +3490,7 @@ compile_subscript(
|
||||
type_T **typep;
|
||||
|
||||
// list index: list[123]
|
||||
// list member: dict[key]
|
||||
// dict member: dict[key]
|
||||
// TODO: blob index
|
||||
// TODO: more arguments
|
||||
// TODO: recognize list or dict at runtime
|
||||
@ -4999,8 +4999,8 @@ compile_assignment(char_u *arg, exarg_T *eap, cmdidx_T cmdidx, cctx_T *cctx)
|
||||
goto theend;
|
||||
}
|
||||
}
|
||||
else if (*p != '=' && check_type(member_type, stacktype, TRUE)
|
||||
== FAIL)
|
||||
else if (*p != '=' && need_type(stacktype, member_type, -1,
|
||||
cctx) == FAIL)
|
||||
goto theend;
|
||||
}
|
||||
}
|
||||
|
@ -1164,13 +1164,9 @@ call_def_function(
|
||||
if (s == NULL)
|
||||
s = (char_u *)"";
|
||||
}
|
||||
else if (tv->v_type == VAR_NUMBER)
|
||||
n = tv->vval.v_number;
|
||||
else
|
||||
{
|
||||
emsg(_("E1051: Expected string or number"));
|
||||
goto failed;
|
||||
}
|
||||
// must be VAR_NUMBER, CHECKTYPE makes sure
|
||||
n = tv->vval.v_number;
|
||||
msg = set_option_value(iptr->isn_arg.storeopt.so_name,
|
||||
n, s, iptr->isn_arg.storeopt.so_flags);
|
||||
if (msg != NULL)
|
||||
|
Loading…
x
Reference in New Issue
Block a user