To: vim_dev@googlegroups.com Subject: Patch 8.2.2107 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.2107 Problem: Vim9: some errors not tested. Solution: Add tests. Fix getting the right error. Files: src/vim9compile.c, src/testdir/test_vim9_assign.vim, src/testdir/test_vim9_expr.vim *** ../vim-8.2.2106/src/vim9compile.c 2020-12-06 20:12:39.754611585 +0100 --- src/vim9compile.c 2020-12-07 21:36:42.291308500 +0100 *************** *** 2229,2234 **** --- 2229,2235 ---- { if (may_get_next_line(whitep, arg, cctx) == FAIL) { + SOURCING_LNUM = cctx->ctx_lnum + 1; emsg(_(e_line_incomplete)); return FAIL; } *************** *** 5300,5306 **** wp = op + oplen; p = skipwhite(wp); ! if (may_get_next_line(wp, &p, cctx) == FAIL) return FAIL; if (compile_expr0(&p, cctx) == FAIL) return NULL; --- 5301,5307 ---- wp = op + oplen; p = skipwhite(wp); ! if (may_get_next_line_error(wp, &p, cctx) == FAIL) return FAIL; if (compile_expr0(&p, cctx) == FAIL) return NULL; *** ../vim-8.2.2106/src/testdir/test_vim9_assign.vim 2020-12-05 13:40:57.499035073 +0100 --- src/testdir/test_vim9_assign.vim 2020-12-07 21:48:48.149029335 +0100 *************** *** 225,230 **** --- 225,269 ---- END enddef + def Test_assign_unpack() + var lines =<< trim END + var v1: number + var v2: number + [v1, v2] = [1, 2] + assert_equal(1, v1) + assert_equal(2, v2) + END + CheckDefAndScriptSuccess(lines) + + lines =<< trim END + var v1: number + var v2: number + [v1, v2] = + END + CheckDefFailure(lines, 'E1097:', 5) + + lines =<< trim END + var v1: number + var v2: number + [v1, v2] = xxx + END + CheckDefFailure(lines, 'E1001:', 3) + + lines =<< trim END + var v1: number + var v2: number + [v1, v2] = popup_clear() + END + CheckDefFailure(lines, 'E1031:', 3) + + lines =<< trim END + var v1: number + var v2: number + [v1, v2] = '' + END + CheckDefFailure(lines, 'E1012: Type mismatch; expected list but got string', 3) + enddef + def Test_assign_linebreak() var nr: number nr = *************** *** 237,243 **** assert_equal(12, nr) assert_equal(34, n2) ! CheckDefFailure(["var x = #"], 'E1097:', 2) enddef def Test_assign_index() --- 276,282 ---- assert_equal(12, nr) assert_equal(34, n2) ! CheckDefFailure(["var x = #"], 'E1097:', 3) enddef def Test_assign_index() *** ../vim-8.2.2106/src/testdir/test_vim9_expr.vim 2020-12-06 14:37:04.717124932 +0100 --- src/testdir/test_vim9_expr.vim 2020-12-07 21:43:30.630034576 +0100 *************** *** 188,195 **** call CheckDefExecFailure(["var x = [] ? 'one' : 'two'"], 'E745:', 1) call CheckDefExecFailure(["var x = {} ? 'one' : 'two'"], 'E728:', 1) ! call CheckDefExecFailure(["var x = false ? "], 'E1097:', 2) ! call CheckDefExecFailure(["var x = false ? 'one' : "], 'E1097:', 2) call CheckDefExecFailure(["var x = true ? xxx : 'foo'"], 'E1001:', 1) call CheckDefExecFailure(["var x = false ? 'foo' : xxx"], 'E1001:', 1) --- 188,195 ---- call CheckDefExecFailure(["var x = [] ? 'one' : 'two'"], 'E745:', 1) call CheckDefExecFailure(["var x = {} ? 'one' : 'two'"], 'E728:', 1) ! call CheckDefExecFailure(["var x = false ? "], 'E1097:', 3) ! call CheckDefExecFailure(["var x = false ? 'one' : "], 'E1097:', 3) call CheckDefExecFailure(["var x = true ? xxx : 'foo'"], 'E1001:', 1) call CheckDefExecFailure(["var x = false ? 'foo' : xxx"], 'E1001:', 1) *************** *** 352,358 **** call CheckDefFailure(["var x = 1 ||2"], msg, 1) call CheckDefFailure(["var x = 1|| 2"], msg, 1) ! call CheckDefFailure(["var x = false || "], 'E1097:', 2) call CheckDefFailure(["var x = 1 || xxx"], 'E1001:', 1) call CheckDefFailure(["var x = [] || false"], 'E1012:', 1) --- 352,358 ---- call CheckDefFailure(["var x = 1 ||2"], msg, 1) call CheckDefFailure(["var x = 1|| 2"], msg, 1) ! call CheckDefFailure(["var x = false || "], 'E1097:', 3) call CheckDefFailure(["var x = 1 || xxx"], 'E1001:', 1) call CheckDefFailure(["var x = [] || false"], 'E1012:', 1) *************** *** 587,593 **** CheckDefAndScriptSuccess(lines) CheckDefFailure(["var x = 'a' == xxx"], 'E1001:', 1) ! CheckDefFailure(["var x = 'a' == "], 'E1097:', 2) CheckDefExecFailure(['var items: any', 'eval 1', 'eval 2', 'if items == []', 'endif'], 'E691:', 4) enddef --- 587,593 ---- CheckDefAndScriptSuccess(lines) CheckDefFailure(["var x = 'a' == xxx"], 'E1001:', 1) ! CheckDefFailure(["var x = 'a' == "], 'E1097:', 3) CheckDefExecFailure(['var items: any', 'eval 1', 'eval 2', 'if items == []', 'endif'], 'E691:', 4) enddef *************** *** 1359,1365 **** CheckDefAndScriptSuccess(lines) CheckDefFailure(["var x = 6 * xxx"], 'E1001:', 1) ! CheckDefFailure(["var d = 6 * "], 'E1097:', 2) enddef def Test_expr6_vim9script() --- 1359,1365 ---- CheckDefAndScriptSuccess(lines) CheckDefFailure(["var x = 6 * xxx"], 'E1001:', 1) ! CheckDefFailure(["var d = 6 * "], 'E1097:', 3) enddef def Test_expr6_vim9script() *************** *** 1531,1537 **** assert_equal(234, nr) CheckDefFailure(["var x = 123"], 'E1010:', 1) ! CheckDefFailure(["var x = "], 'E1097:', 2) CheckDefFailure(["var x = 123"], 'E1068:', 1) CheckDefFailure(["var x = 123"], 'E1010:', 1) ! CheckDefFailure(["var x = "], 'E1097:', 3) CheckDefFailure(["var x = 123"], 'E1068:', 1) CheckDefFailure(["var x = = [234, 'x']"], 'E1012:', 1) CheckDefExecFailure(["var l: list = ['x', 234]"], 'E1012:', 1) --- 1684,1691 ---- CheckDefExecFailure(["echo 1", "var x = [][0]", "echo 3"], 'E684:', 2) CheckDefExecFailure(["var x = g:list_mixed['xx']"], 'E1012:', 1) ! CheckDefFailure(["var x = g:list_mixed["], 'E1097:', 3) ! CheckDefFailure(["var x = g:list_mixed[0"], 'E1097:', 3) CheckDefExecFailure(["var x = g:list_empty[3]"], 'E684:', 1) CheckDefExecFailure(["var l: list = [234, 'x']"], 'E1012:', 1) CheckDefExecFailure(["var l: list = ['x', 234]"], 'E1012:', 1) *************** *** 1948,1955 **** CheckDefAndScriptSuccess(lines) # legacy syntax doesn't work ! CheckDefFailure(["var x = #{key: 8}"], 'E1097:', 2) ! CheckDefFailure(["var x = 'a' .. #{a: 1}"], 'E1097:', 2) CheckDefFailure(["var x = {a:8}"], 'E1069:', 1) CheckDefFailure(["var x = {a : 8}"], 'E1059:', 1) --- 1948,1955 ---- CheckDefAndScriptSuccess(lines) # legacy syntax doesn't work ! CheckDefFailure(["var x = #{key: 8}"], 'E1097:', 3) ! CheckDefFailure(["var x = 'a' .. #{a: 1}"], 'E1097:', 3) CheckDefFailure(["var x = {a:8}"], 'E1069:', 1) CheckDefFailure(["var x = {a : 8}"], 'E1059:', 1) *************** *** 2609,2615 **** lines =<< trim END var d = 'asdf'[1: END ! CheckDefFailure(lines, 'E1097:', 2) lines =<< trim END var d = 'asdf'[1:xxx] END --- 2609,2615 ---- lines =<< trim END var d = 'asdf'[1: END ! CheckDefFailure(lines, 'E1097:', 3) lines =<< trim END var d = 'asdf'[1:xxx] END *************** *** 2617,2623 **** lines =<< trim END var d = 'asdf'[1:2 END ! CheckDefFailure(lines, 'E1097:', 2) lines =<< trim END var d = 'asdf'[1:2 echo d --- 2617,2623 ---- lines =<< trim END var d = 'asdf'[1:2 END ! CheckDefFailure(lines, 'E1097:', 3) lines =<< trim END var d = 'asdf'[1:2 echo d *** ../vim-8.2.2106/src/version.c 2020-12-07 18:04:59.373997754 +0100 --- src/version.c 2020-12-07 21:28:36.184763187 +0100 *************** *** 752,753 **** --- 752,755 ---- { /* Add new patch number below this line */ + /**/ + 2107, /**/ -- Every exit is an entrance into something else. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///