patch 8.2.1627: Vim9: cannot pass "true" to submatch/term_gettty/term_start
Problem: Vim9: cannot pass "true" to submatch(), term_gettty() and
term_start()
Solution: Use tv_get_bool_chk(). (closes #6888, closes #6890, closes #6889)
diff --git a/src/evalfunc.c b/src/evalfunc.c
index e7683fc..e69f293 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -8400,7 +8400,7 @@
return;
}
if (argvars[1].v_type != VAR_UNKNOWN)
- retList = (int)tv_get_number_chk(&argvars[1], &error);
+ retList = (int)tv_get_bool_chk(&argvars[1], &error);
if (error)
return;
diff --git a/src/job.c b/src/job.c
index 0e73b1c..f55a8cd 100644
--- a/src/job.c
+++ b/src/job.c
@@ -448,7 +448,7 @@
if (!(supported2 & JO2_CURWIN))
break;
opt->jo_set2 |= JO2_CURWIN;
- opt->jo_curwin = tv_get_number(item);
+ opt->jo_curwin = tv_get_bool(item);
}
else if (STRCMP(hi->hi_key, "bufnr") == 0)
{
diff --git a/src/terminal.c b/src/terminal.c
index cab9cb9..fe84a9f 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -5768,7 +5768,7 @@
if (buf == NULL)
return;
if (argvars[1].v_type != VAR_UNKNOWN)
- num = tv_get_number(&argvars[1]);
+ num = tv_get_bool(&argvars[1]);
switch (num)
{
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index e315517..5800341 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -1,6 +1,7 @@
" Test various aspects of the Vim9 script language.
source check.vim
+source term_util.vim
source view_util.vim
source vim9.vim
source screendump.vim
@@ -1648,6 +1649,14 @@
strchars("A\u20dd", true)->assert_equal(1)
enddef
+def Test_submatch()
+ let pat = 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'
+ let Rep = {-> range(10)->map({_, v -> submatch(v, true)})->string()}
+ let actual = substitute('A123456789', pat, Rep, '')
+ let expected = "[['A123456789'], ['1'], ['2'], ['3'], ['4'], ['5'], ['6'], ['7'], ['8'], ['9']]"
+ assert_equal(expected, actual)
+enddef
+
def Test_synID()
new
setline(1, "text")
@@ -1655,6 +1664,20 @@
bwipe!
enddef
+def Test_term_gettty()
+ let buf = Run_shell_in_terminal({})
+ assert_notequal('', term_gettty(buf, true))
+ StopShellInTerminal(buf)
+enddef
+
+def Test_term_start()
+ botright new
+ let winnr = winnr()
+ term_start(&shell, #{curwin: true})
+ assert_equal(winnr, winnr())
+ bwipe!
+enddef
+
def Test_win_splitmove()
split
win_splitmove(1, 2, #{vertical: true, rightbelow: true})
diff --git a/src/version.c b/src/version.c
index c6c111a..b4d5769 100644
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1627,
+/**/
1626,
/**/
1625,