patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Problem: Vim9: divide by zero does not abort expression execution.
Solution: Use a "failed" flag. (issue #7704)
diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim
index 20bdb91..992eeaa 100644
--- a/src/testdir/test_vim9_assign.vim
+++ b/src/testdir/test_vim9_assign.vim
@@ -1489,6 +1489,30 @@
assert_equal('', $ENVVAR)
enddef
+def Test_expr_error_no_assign()
+ var lines =<< trim END
+ vim9script
+ var x = invalid
+ echo x
+ END
+ CheckScriptFailureList(lines, ['E121:', 'E121:'])
+
+ lines =<< trim END
+ vim9script
+ var x = 1 / 0
+ echo x
+ END
+ CheckScriptFailureList(lines, ['E1154:', 'E121:'])
+
+ lines =<< trim END
+ vim9script
+ var x = 1 % 0
+ echo x
+ END
+ CheckScriptFailureList(lines, ['E1154:', 'E121:'])
+enddef
+
+
def Test_assign_command_modifier()
var lines =<< trim END
var verbose = 0
diff --git a/src/testdir/vim9.vim b/src/testdir/vim9.vim
index bb522df..cc0510f 100644
--- a/src/testdir/vim9.vim
+++ b/src/testdir/vim9.vim
@@ -69,6 +69,19 @@
endtry
enddef
+def CheckScriptFailureList(lines: list<string>, errors: list<string>, lnum = -3)
+ var cwd = getcwd()
+ var fname = 'XScriptFailure' .. s:sequence
+ s:sequence += 1
+ writefile(lines, fname)
+ try
+ assert_fails('so ' .. fname, errors, lines, lnum)
+ finally
+ chdir(cwd)
+ delete(fname)
+ endtry
+enddef
+
def CheckScriptSuccess(lines: list<string>)
var cwd = getcwd()
var fname = 'XScriptSuccess' .. s:sequence