summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-02-04 21:17:58 +0000
committerBram Moolenaar <Bram@vim.org>2022-02-04 21:17:58 +0000
commit83d0cec95697c244c8096c78aa806469302a8e19 (patch)
treea61468f75acdcedd8603b71051ab9ff21022fcea
parent3e79c97c18c50f97797ab13ed81c4011eba9aba0 (diff)
patch 8.2.4296: Vim9: not all code covered by testsv8.2.4296
Problem: Vim9: not all code covered by tests. Solution: Add a few more tests for corner cases. Fix hang when single quote is missing.
-rw-r--r--src/testdir/test_vim9_assign.vim6
-rw-r--r--src/testdir/test_vim9_cmd.vim2
-rw-r--r--src/testdir/test_vim9_expr.vim1
-rw-r--r--src/version.c2
-rw-r--r--src/vim9expr.c4
5 files changed, 13 insertions, 2 deletions
diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim
index 744fc5e715..79c08d3f44 100644
--- a/src/testdir/test_vim9_assign.vim
+++ b/src/testdir/test_vim9_assign.vim
@@ -1993,6 +1993,12 @@ def Test_unlet()
assert_false(exists('s:somevar'))
unlet! s:somevar
+ if 0
+ unlet g:does_not_exist
+ endif
+
+ v9.CheckDefExecFailure(['unlet v:notfound.key'], 'E1001:')
+
v9.CheckDefExecFailure([
'var dd = 111',
'unlet dd',
diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim
index bacf195f10..51a62e01f4 100644
--- a/src/testdir/test_vim9_cmd.vim
+++ b/src/testdir/test_vim9_cmd.vim
@@ -1449,7 +1449,7 @@ def Test_lockvar()
ex = v:exception
endtry
assert_match('E1121:', ex)
- unlockvar d.a
+ unlockvar d['a']
d.a = 7
assert_equal({a: 7, b: 5}, d)
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index cf4347c98c..87b801446a 100644
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -1833,6 +1833,7 @@ def Test_expr8_string()
v9.CheckDefAndScriptFailure(['var x = "abc'], 'E114:', 1)
v9.CheckDefAndScriptFailure(["var x = 'abc"], 'E115:', 1)
+ v9.CheckDefFailure(["if 0", "echo 'xx", "endif"], 'E115', 2)
enddef
def Test_expr8_vimvar()
diff --git a/src/version.c b/src/version.c
index f11705dbcb..503f873df0 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 4296,
+/**/
4295,
/**/
4294,
diff --git a/src/vim9expr.c b/src/vim9expr.c
index d36df84e0b..146e136bda 100644
--- a/src/vim9expr.c
+++ b/src/vim9expr.c
@@ -2824,8 +2824,10 @@ compile_expr1(char_u **arg, cctx_T *cctx, ppconst_T *ppconst)
// Ignore all kinds of errors when not producing code.
if (cctx->ctx_skip == SKIP_YES)
{
+ int prev_did_emsg = did_emsg;
+
skip_expr_cctx(arg, cctx);
- return OK;
+ return did_emsg == prev_did_emsg ? OK : FAIL;
}
// Evaluate the first expression.