patch 8.2.1342: Vim9: accidentally using "t" gives a confusing error
Problem: Vim9: accidentally using "x" gives a confusing error.
Solution: Disallow using ":t" in Vim9 script. (issue #6399)
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index ad1693b..081d9e4 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -7276,6 +7276,9 @@
{
long n;
+ if (not_in_vim9(eap) == FAIL)
+ return;
+
n = get_address(eap, &eap->arg, eap->addr_type, FALSE, FALSE, FALSE, 1);
if (eap->arg == NULL) // error detected
{
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index c01b383..8950f31 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -1628,18 +1628,21 @@
enddef
def Test_no_insert_xit()
- call CheckDefExecFailure(['x = 1'], 'E1100:')
call CheckDefExecFailure(['a = 1'], 'E1100:')
- call CheckDefExecFailure(['i = 1'], 'E1100:')
call CheckDefExecFailure(['c = 1'], 'E1100:')
+ call CheckDefExecFailure(['i = 1'], 'E1100:')
+ call CheckDefExecFailure(['t = 1'], 'E1100:')
+ call CheckDefExecFailure(['x = 1'], 'E1100:')
- CheckScriptFailure(['vim9script', 'x = 1'], 'E1100:')
CheckScriptFailure(['vim9script', 'a = 1'], 'E488:')
CheckScriptFailure(['vim9script', 'a'], 'E1100:')
- CheckScriptFailure(['vim9script', 'i = 1'], 'E488:')
- CheckScriptFailure(['vim9script', 'i'], 'E1100:')
CheckScriptFailure(['vim9script', 'c = 1'], 'E488:')
CheckScriptFailure(['vim9script', 'c'], 'E1100:')
+ CheckScriptFailure(['vim9script', 'i = 1'], 'E488:')
+ CheckScriptFailure(['vim9script', 'i'], 'E1100:')
+ CheckScriptFailure(['vim9script', 't'], 'E1100:')
+ CheckScriptFailure(['vim9script', 't = 1'], 'E1100:')
+ CheckScriptFailure(['vim9script', 'x = 1'], 'E1100:')
enddef
def IfElse(what: number): string
diff --git a/src/version.c b/src/version.c
index 202ee2f..021487d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1342,
+/**/
1341,
/**/
1340,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index 97fa2e0..38c097c 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -7467,6 +7467,7 @@
case CMD_append:
case CMD_change:
case CMD_insert:
+ case CMD_t:
case CMD_xit:
not_in_vim9(&ea);
goto erret;
diff --git a/src/vim9script.c b/src/vim9script.c
index 2e94b8e..e7bb433 100644
--- a/src/vim9script.c
+++ b/src/vim9script.c
@@ -67,9 +67,10 @@
if (in_vim9script())
switch (eap->cmdidx)
{
- case CMD_insert:
case CMD_append:
case CMD_change:
+ case CMD_insert:
+ case CMD_t:
case CMD_xit:
semsg(_("E1100: Missing :let: %s"), eap->cmd);
return FAIL;