patch 8.2.2138: Vim9: "exit_cb" causes Vim to exit
Problem: Vim9: "exit_cb" causes Vim to exit.
Solution: Require white space after a command in Vim9 script. (closes #7467)
Also fix that Vim9 style heredoc was not always recognized.
diff --git a/src/testdir/test_let.vim b/src/testdir/test_let.vim
index 6dc36ea..2a37c19 100644
--- a/src/testdir/test_let.vim
+++ b/src/testdir/test_let.vim
@@ -338,7 +338,7 @@
endfunc
END
call writefile(text, 'XheredocFail')
- call assert_fails('source XheredocFail', 'E126:')
+ call assert_fails('source XheredocFail', 'E1145:')
call delete('XheredocFail')
let text =<< trim CodeEnd
@@ -347,7 +347,7 @@
endfunc
CodeEnd
call writefile(text, 'XheredocWrong')
- call assert_fails('source XheredocWrong', 'E126:')
+ call assert_fails('source XheredocWrong', 'E1145:')
call delete('XheredocWrong')
let text =<< trim TEXTend
diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim
index 2b02cb9..1075e17 100644
--- a/src/testdir/test_vim9_assign.vim
+++ b/src/testdir/test_vim9_assign.vim
@@ -982,6 +982,17 @@
var&lines =<< trim END
x
x
+ enddef
+ defcompile
+ [END]
+ CheckScriptFailure(lines, 'E1145: Missing heredoc end marker: END')
+ delfunc! g:Func
+
+ lines =<< trim [END]
+ def Func()
+ var lines =<< trim END
+ x
+ x
x
x
x
@@ -991,7 +1002,7 @@
enddef
call Func()
[END]
- CheckScriptFailure(lines, 'E990:')
+ CheckScriptFailure(lines, 'E1145: Missing heredoc end marker: END')
delfunc! g:Func
enddef
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index 13e824a..ccc612f 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -3058,7 +3058,7 @@
new
var lines =<< trim END
vim9script
- pu=split('abc', '\zs')
+ pu =split('abc', '\zs')
->join()
END
CheckScriptSuccess(lines)
@@ -3079,6 +3079,13 @@
xunmap <F3>
enddef
+def Test_white_space_after_command()
+ var lines =<< trim END
+ exit_cb: Func})
+ END
+ CheckDefAndScriptFailure(lines, 'E1144:', 1)
+enddef
+
" Keep this last, it messes up highlighting.
def Test_substitute_cmd()
new