# HG changeset patch # User Bram Moolenaar # Date 1597776303 -7200 # Node ID 809b1e7fbd7262112330677cf735fc2058f6de32 # Parent 961d816a163fb9126f4573a571c22e3580f1f6fb patch 8.2.1481: Vim9: line number reported with error may be wrong Commit: https://github.com/vim/vim/commit/3affe7a6c6fc813f5d29857933ee6aca0b9c7bd6 Author: Bram Moolenaar Date: Tue Aug 18 20:34:13 2020 +0200 patch 8.2.1481: Vim9: line number reported with error may be wrong Problem: Vim9: line number reported with error may be wrong. Solution: Check line number in tests. diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim --- a/src/testdir/test_vim9_expr.vim +++ b/src/testdir/test_vim9_expr.vim @@ -93,49 +93,49 @@ def Test_expr1_vimscript() vim9script let var = v:true?1:2 END - CheckScriptFailure(lines, 'E1004:') + CheckScriptFailure(lines, 'E1004:', 2) lines =<< trim END vim9script let var = v:true? 1 : 2 END - CheckScriptFailure(lines, 'E1004:') + CheckScriptFailure(lines, 'E1004:', 2) lines =<< trim END vim9script let var = v:true ?1 : 2 END - CheckScriptFailure(lines, 'E1004:') + CheckScriptFailure(lines, 'E1004:', 2) lines =<< trim END vim9script let var = v:true ? 1: 2 END - CheckScriptFailure(lines, 'E1004:') + CheckScriptFailure(lines, 'E1004:', 2) lines =<< trim END vim9script let var = v:true ? 1 :2 END - CheckScriptFailure(lines, 'E1004:') + CheckScriptFailure(lines, 'E1004:', 2) enddef func Test_expr1_fails() - call CheckDefFailure(["let x = 1 ? 'one'"], "Missing ':' after '?'") - call CheckDefFailure(["let x = 1 ? 'one' : xxx"], "E1001:") + call CheckDefFailure(["let x = 1 ? 'one'"], "Missing ':' after '?'", 1) + call CheckDefFailure(["let x = 1 ? 'one' : xxx"], "E1001:", 1) let msg = "white space required before and after '?'" - call CheckDefFailure(["let x = 1? 'one' : 'two'"], msg) - call CheckDefFailure(["let x = 1 ?'one' : 'two'"], msg) - call CheckDefFailure(["let x = 1?'one' : 'two'"], msg) + call CheckDefFailure(["let x = 1? 'one' : 'two'"], msg, 1) + call CheckDefFailure(["let x = 1 ?'one' : 'two'"], msg, 1) + call CheckDefFailure(["let x = 1?'one' : 'two'"], msg, 1) let msg = "white space required before and after ':'" - call CheckDefFailure(["let x = 1 ? 'one': 'two'"], msg) - call CheckDefFailure(["let x = 1 ? 'one' :'two'"], msg) - call CheckDefFailure(["let x = 1 ? 'one':'two'"], msg) + call CheckDefFailure(["let x = 1 ? 'one': 'two'"], msg, 1) + call CheckDefFailure(["let x = 1 ? 'one' :'two'"], msg, 1) + call CheckDefFailure(["let x = 1 ? 'one':'two'"], msg, 1) " missing argument detected even when common type is used call CheckDefFailure([ \ 'let X = FuncOne', \ 'let Y = FuncTwo', \ 'let Z = g:cond ? FuncOne : FuncTwo', - \ 'Z()'], 'E119:') + \ 'Z()'], 'E119:', 4) endfunc " TODO: define inside test function @@ -207,17 +207,17 @@ def Test_expr2_vimscript() vim9script let var = v:true||v:true END - CheckScriptFailure(lines, 'E1004:') + CheckScriptFailure(lines, 'E1004:', 2) lines =<< trim END vim9script let var = v:true ||v:true END - CheckScriptFailure(lines, 'E1004:') + CheckScriptFailure(lines, 'E1004:', 2) lines =<< trim END vim9script let var = v:true|| v:true END - CheckScriptFailure(lines, 'E1004:') + CheckScriptFailure(lines, 'E1004:', 2) # check keeping the value lines =<< trim END @@ -254,11 +254,11 @@ enddef func Test_expr2_fails() let msg = "white space required before and after '||'" - call CheckDefFailure(["let x = 1||2"], msg) - call CheckDefFailure(["let x = 1 ||2"], msg) - call CheckDefFailure(["let x = 1|| 2"], msg) + call CheckDefFailure(["let x = 1||2"], msg, 1) + call CheckDefFailure(["let x = 1 ||2"], msg, 1) + call CheckDefFailure(["let x = 1|| 2"], msg, 1) - call CheckDefFailure(["let x = 1 || xxx"], 'E1001:') + call CheckDefFailure(["let x = 1 || xxx"], 'E1001:', 1) endfunc " test && @@ -328,17 +328,17 @@ def Test_expr3_vimscript() vim9script let var = v:true&&v:true END - CheckScriptFailure(lines, 'E1004:') + CheckScriptFailure(lines, 'E1004:', 2) lines =<< trim END vim9script let var = v:true &&v:true END - CheckScriptFailure(lines, 'E1004:') + CheckScriptFailure(lines, 'E1004:', 2) lines =<< trim END vim9script let var = v:true&& v:true END - CheckScriptFailure(lines, 'E1004:') + CheckScriptFailure(lines, 'E1004:', 2) # check keeping the value lines =<< trim END @@ -379,9 +379,9 @@ enddef func Test_expr3_fails() let msg = "white space required before and after '&&'" - call CheckDefFailure(["let x = 1&&2"], msg) - call CheckDefFailure(["let x = 1 &&2"], msg) - call CheckDefFailure(["let x = 1&& 2"], msg) + call CheckDefFailure(["let x = 1&&2"], msg, 1) + call CheckDefFailure(["let x = 1 &&2"], msg, 1) + call CheckDefFailure(["let x = 1&& 2"], msg, 1) endfunc " global variables to use for tests with the "any" type @@ -457,7 +457,7 @@ def Test_expr4_equal() assert_equal(false, 'abc' ==# 'ABC') set noignorecase - call CheckDefFailure(["let x = 'a' == xxx"], 'E1001:') + call CheckDefFailure(["let x = 'a' == xxx"], 'E1001:', 1) let bb = 0z3f assert_equal(true, 0z3f == bb) @@ -757,19 +757,19 @@ def Test_expr4_vim9script() vim9script echo '' == 0 END - CheckScriptFailure(lines, 'E1072:') + CheckScriptFailure(lines, 'E1072:', 2) lines =<< trim END vim9script echo v:true > v:false END - CheckScriptFailure(lines, 'Cannot compare bool with bool') + CheckScriptFailure(lines, 'Cannot compare bool with bool', 2) lines =<< trim END vim9script echo 123 is 123 END - CheckScriptFailure(lines, 'Cannot use "is" with number') + CheckScriptFailure(lines, 'Cannot use "is" with number', 2) # check 'ignorecase' not being used lines =<< trim END @@ -795,32 +795,32 @@ def Test_expr4_vim9script() vim9script echo 2>3 END - CheckScriptFailure(lines, 'E1004:') + CheckScriptFailure(lines, 'E1004:', 2) lines =<< trim END vim9script echo 2 >3 END - CheckScriptFailure(lines, 'E1004:') + CheckScriptFailure(lines, 'E1004:', 2) lines =<< trim END vim9script echo 2> 3 END - CheckScriptFailure(lines, 'E1004:') + CheckScriptFailure(lines, 'E1004:', 2) lines =<< trim END vim9script echo 2!=3 END - CheckScriptFailure(lines, 'E1004:') + CheckScriptFailure(lines, 'E1004:', 2) lines =<< trim END vim9script echo 2 !=3 END - CheckScriptFailure(lines, 'E1004:') + CheckScriptFailure(lines, 'E1004:', 2) lines =<< trim END vim9script echo 2!= 3 END - CheckScriptFailure(lines, 'E1004:') + CheckScriptFailure(lines, 'E1004:', 2) lines =<< trim END vim9script @@ -838,71 +838,71 @@ enddef func Test_expr4_fails() let msg = "white space required before and after '>'" - call CheckDefFailure(["let x = 1>2"], msg) - call CheckDefFailure(["let x = 1 >2"], msg) - call CheckDefFailure(["let x = 1> 2"], msg) + call CheckDefFailure(["let x = 1>2"], msg, 1) + call CheckDefFailure(["let x = 1 >2"], msg, 1) + call CheckDefFailure(["let x = 1> 2"], msg, 1) let msg = "white space required before and after '=='" - call CheckDefFailure(["let x = 1==2"], msg) - call CheckDefFailure(["let x = 1 ==2"], msg) - call CheckDefFailure(["let x = 1== 2"], msg) + call CheckDefFailure(["let x = 1==2"], msg, 1) + call CheckDefFailure(["let x = 1 ==2"], msg, 1) + call CheckDefFailure(["let x = 1== 2"], msg, 1) let msg = "white space required before and after 'is'" - call CheckDefFailure(["let x = '1'is'2'"], msg) - call CheckDefFailure(["let x = '1' is'2'"], msg) - call CheckDefFailure(["let x = '1'is '2'"], msg) + call CheckDefFailure(["let x = '1'is'2'"], msg, 1) + call CheckDefFailure(["let x = '1' is'2'"], msg, 1) + call CheckDefFailure(["let x = '1'is '2'"], msg, 1) let msg = "white space required before and after 'isnot'" - call CheckDefFailure(["let x = '1'isnot'2'"], msg) - call CheckDefFailure(["let x = '1' isnot'2'"], msg) - call CheckDefFailure(["let x = '1'isnot '2'"], msg) + call CheckDefFailure(["let x = '1'isnot'2'"], msg, 1) + call CheckDefFailure(["let x = '1' isnot'2'"], msg, 1) + call CheckDefFailure(["let x = '1'isnot '2'"], msg, 1) - call CheckDefFailure(["let x = 1 is# 2"], 'E15:') - call CheckDefFailure(["let x = 1 is? 2"], 'E15:') - call CheckDefFailure(["let x = 1 isnot# 2"], 'E15:') - call CheckDefFailure(["let x = 1 isnot? 2"], 'E15:') + call CheckDefFailure(["let x = 1 is# 2"], 'E15:', 1) + call CheckDefFailure(["let x = 1 is? 2"], 'E15:', 1) + call CheckDefFailure(["let x = 1 isnot# 2"], 'E15:', 1) + call CheckDefFailure(["let x = 1 isnot? 2"], 'E15:', 1) - call CheckDefFailure(["let x = 1 == '2'"], 'Cannot compare number with string') - call CheckDefFailure(["let x = '1' == 2"], 'Cannot compare string with number') - call CheckDefFailure(["let x = 1 == RetVoid()"], 'Cannot compare number with void') - call CheckDefFailure(["let x = RetVoid() == 1"], 'Cannot compare void with number') + call CheckDefFailure(["let x = 1 == '2'"], 'Cannot compare number with string', 1) + call CheckDefFailure(["let x = '1' == 2"], 'Cannot compare string with number', 1) + call CheckDefFailure(["let x = 1 == RetVoid()"], 'Cannot compare number with void', 1) + call CheckDefFailure(["let x = RetVoid() == 1"], 'Cannot compare void with number', 1) - call CheckDefFailure(["let x = true > false"], 'Cannot compare bool with bool') - call CheckDefFailure(["let x = true >= false"], 'Cannot compare bool with bool') - call CheckDefFailure(["let x = true < false"], 'Cannot compare bool with bool') - call CheckDefFailure(["let x = true <= false"], 'Cannot compare bool with bool') - call CheckDefFailure(["let x = true =~ false"], 'Cannot compare bool with bool') - call CheckDefFailure(["let x = true !~ false"], 'Cannot compare bool with bool') - call CheckDefFailure(["let x = true is false"], 'Cannot use "is" with bool') - call CheckDefFailure(["let x = true isnot false"], 'Cannot use "isnot" with bool') + call CheckDefFailure(["let x = true > false"], 'Cannot compare bool with bool', 1) + call CheckDefFailure(["let x = true >= false"], 'Cannot compare bool with bool', 1) + call CheckDefFailure(["let x = true < false"], 'Cannot compare bool with bool', 1) + call CheckDefFailure(["let x = true <= false"], 'Cannot compare bool with bool', 1) + call CheckDefFailure(["let x = true =~ false"], 'Cannot compare bool with bool', 1) + call CheckDefFailure(["let x = true !~ false"], 'Cannot compare bool with bool', 1) + call CheckDefFailure(["let x = true is false"], 'Cannot use "is" with bool', 1) + call CheckDefFailure(["let x = true isnot false"], 'Cannot use "isnot" with bool', 1) - call CheckDefFailure(["let x = v:none is v:null"], 'Cannot use "is" with special') - call CheckDefFailure(["let x = v:none isnot v:null"], 'Cannot use "isnot" with special') - call CheckDefFailure(["let x = 123 is 123"], 'Cannot use "is" with number') - call CheckDefFailure(["let x = 123 isnot 123"], 'Cannot use "isnot" with number') + call CheckDefFailure(["let x = v:none is v:null"], 'Cannot use "is" with special', 1) + call CheckDefFailure(["let x = v:none isnot v:null"], 'Cannot use "isnot" with special', 1) + call CheckDefFailure(["let x = 123 is 123"], 'Cannot use "is" with number', 1) + call CheckDefFailure(["let x = 123 isnot 123"], 'Cannot use "isnot" with number', 1) if has('float') - call CheckDefFailure(["let x = 1.3 is 1.3"], 'Cannot use "is" with float') - call CheckDefFailure(["let x = 1.3 isnot 1.3"], 'Cannot use "isnot" with float') + call CheckDefFailure(["let x = 1.3 is 1.3"], 'Cannot use "is" with float', 1) + call CheckDefFailure(["let x = 1.3 isnot 1.3"], 'Cannot use "isnot" with float', 1) endif - call CheckDefFailure(["let x = 0za1 > 0z34"], 'Cannot compare blob with blob') - call CheckDefFailure(["let x = 0za1 >= 0z34"], 'Cannot compare blob with blob') - call CheckDefFailure(["let x = 0za1 < 0z34"], 'Cannot compare blob with blob') - call CheckDefFailure(["let x = 0za1 <= 0z34"], 'Cannot compare blob with blob') - call CheckDefFailure(["let x = 0za1 =~ 0z34"], 'Cannot compare blob with blob') - call CheckDefFailure(["let x = 0za1 !~ 0z34"], 'Cannot compare blob with blob') + call CheckDefFailure(["let x = 0za1 > 0z34"], 'Cannot compare blob with blob', 1) + call CheckDefFailure(["let x = 0za1 >= 0z34"], 'Cannot compare blob with blob', 1) + call CheckDefFailure(["let x = 0za1 < 0z34"], 'Cannot compare blob with blob', 1) + call CheckDefFailure(["let x = 0za1 <= 0z34"], 'Cannot compare blob with blob', 1) + call CheckDefFailure(["let x = 0za1 =~ 0z34"], 'Cannot compare blob with blob', 1) + call CheckDefFailure(["let x = 0za1 !~ 0z34"], 'Cannot compare blob with blob', 1) - call CheckDefFailure(["let x = [13] > [88]"], 'Cannot compare list with list') - call CheckDefFailure(["let x = [13] >= [88]"], 'Cannot compare list with list') - call CheckDefFailure(["let x = [13] < [88]"], 'Cannot compare list with list') - call CheckDefFailure(["let x = [13] <= [88]"], 'Cannot compare list with list') - call CheckDefFailure(["let x = [13] =~ [88]"], 'Cannot compare list with list') - call CheckDefFailure(["let x = [13] !~ [88]"], 'Cannot compare list with list') + call CheckDefFailure(["let x = [13] > [88]"], 'Cannot compare list with list', 1) + call CheckDefFailure(["let x = [13] >= [88]"], 'Cannot compare list with list', 1) + call CheckDefFailure(["let x = [13] < [88]"], 'Cannot compare list with list', 1) + call CheckDefFailure(["let x = [13] <= [88]"], 'Cannot compare list with list', 1) + call CheckDefFailure(["let x = [13] =~ [88]"], 'Cannot compare list with list', 1) + call CheckDefFailure(["let x = [13] !~ [88]"], 'Cannot compare list with list', 1) - call CheckDefFailure(['let j: job', 'let chan: channel', 'let r = j == chan'], 'Cannot compare job with channel') - call CheckDefFailure(['let j: job', 'let x: list', 'let r = j == x'], 'Cannot compare job with list') - call CheckDefFailure(['let j: job', 'let Xx: func', 'let r = j == Xx'], 'Cannot compare job with func') - call CheckDefFailure(['let j: job', 'let Xx: func', 'let r = j == Xx'], 'Cannot compare job with func') + call CheckDefFailure(['let j: job', 'let chan: channel', 'let r = j == chan'], 'Cannot compare job with channel', 3) + call CheckDefFailure(['let j: job', 'let x: list', 'let r = j == x'], 'Cannot compare job with list', 3) + call CheckDefFailure(['let j: job', 'let Xx: func', 'let r = j == Xx'], 'Cannot compare job with func', 3) + call CheckDefFailure(['let j: job', 'let Xx: func', 'let r = j == Xx'], 'Cannot compare job with func', 3) endfunc " test addition, subtraction, concatenation @@ -978,58 +978,58 @@ def Test_expr5_vim9script() vim9script echo 'abc' is# 'abc' END - CheckScriptFailure(lines, 'E15:') + CheckScriptFailure(lines, 'E15:', 2) lines =<< trim END vim9script echo 'abc' is? 'abc' END - CheckScriptFailure(lines, 'E15:') + CheckScriptFailure(lines, 'E15:', 2) lines =<< trim END vim9script echo 'abc' isnot# 'abc' END - CheckScriptFailure(lines, 'E15:') + CheckScriptFailure(lines, 'E15:', 2) lines =<< trim END vim9script echo 'abc' isnot? 'abc' END - CheckScriptFailure(lines, 'E15:') + CheckScriptFailure(lines, 'E15:', 2) # check white space lines =<< trim END vim9script echo 5+6 END - CheckScriptFailure(lines, 'E1004:') + CheckScriptFailure(lines, 'E1004:', 2) lines =<< trim END vim9script echo 5 +6 END - CheckScriptFailure(lines, 'E1004:') + CheckScriptFailure(lines, 'E1004:', 2) lines =<< trim END vim9script echo 5+ 6 END - CheckScriptFailure(lines, 'E1004:') + CheckScriptFailure(lines, 'E1004:', 2) lines =<< trim END vim9script echo 'a'..'b' END - CheckScriptFailure(lines, 'E1004:') + CheckScriptFailure(lines, 'E1004:', 2) lines =<< trim END vim9script echo 'a' ..'b' END - CheckScriptFailure(lines, 'E1004:') + CheckScriptFailure(lines, 'E1004:', 2) lines =<< trim END vim9script echo 'a'.. 'b' END - CheckScriptFailure(lines, 'E1004:') + CheckScriptFailure(lines, 'E1004:', 2) # check valid string concatenation lines =<< trim END @@ -1049,37 +1049,37 @@ def Test_expr5_vim9script() vim9script echo 'a' .. [1] END - CheckScriptFailure(lines, 'E730:') + CheckScriptFailure(lines, 'E730:', 2) lines =<< trim END vim9script echo 'a' .. #{a: 1} END - CheckScriptFailure(lines, 'E731:') + CheckScriptFailure(lines, 'E731:', 2) lines =<< trim END vim9script echo 'a' .. test_void() END - CheckScriptFailure(lines, 'E908:') + CheckScriptFailure(lines, 'E908:', 2) lines =<< trim END vim9script echo 'a' .. 0z33 END - CheckScriptFailure(lines, 'E976:') + CheckScriptFailure(lines, 'E976:', 2) lines =<< trim END vim9script echo 'a' .. function('len') END - CheckScriptFailure(lines, 'E729:') + CheckScriptFailure(lines, 'E729:', 2) lines =<< trim END vim9script echo 'a' .. test_null_job() END - CheckScriptFailure(lines, 'E908:') + CheckScriptFailure(lines, 'E908:', 2) lines =<< trim END vim9script echo 'a' .. test_null_channel() END - CheckScriptFailure(lines, 'E908:') + CheckScriptFailure(lines, 'E908:', 2) enddef def Test_expr5_float() @@ -1109,36 +1109,36 @@ enddef func Test_expr5_fails() let msg = "white space required before and after '+'" - call CheckDefFailure(["let x = 1+2"], msg) - call CheckDefFailure(["let x = 1 +2"], msg) - call CheckDefFailure(["let x = 1+ 2"], msg) + call CheckDefFailure(["let x = 1+2"], msg, 1) + call CheckDefFailure(["let x = 1 +2"], msg, 1) + call CheckDefFailure(["let x = 1+ 2"], msg, 1) let msg = "white space required before and after '-'" - call CheckDefFailure(["let x = 1-2"], msg) - call CheckDefFailure(["let x = 1 -2"], msg) - call CheckDefFailure(["let x = 1- 2"], msg) + call CheckDefFailure(["let x = 1-2"], msg, 1) + call CheckDefFailure(["let x = 1 -2"], msg, 1) + call CheckDefFailure(["let x = 1- 2"], msg, 1) let msg = "white space required before and after '..'" - call CheckDefFailure(["let x = '1'..'2'"], msg) - call CheckDefFailure(["let x = '1' ..'2'"], msg) - call CheckDefFailure(["let x = '1'.. '2'"], msg) + call CheckDefFailure(["let x = '1'..'2'"], msg, 1) + call CheckDefFailure(["let x = '1' ..'2'"], msg, 1) + call CheckDefFailure(["let x = '1'.. '2'"], msg, 1) - call CheckDefFailure(["let x = 0z1122 + 33"], 'E1051') - call CheckDefFailure(["let x = 0z1122 + [3]"], 'E1051') - call CheckDefFailure(["let x = 0z1122 + 'asd'"], 'E1051') - call CheckDefFailure(["let x = 33 + 0z1122"], 'E1051') - call CheckDefFailure(["let x = [3] + 0z1122"], 'E1051') - call CheckDefFailure(["let x = 'asdf' + 0z1122"], 'E1051') - call CheckDefFailure(["let x = 6 + xxx"], 'E1001') + call CheckDefFailure(["let x = 0z1122 + 33"], 'E1051', 1) + call CheckDefFailure(["let x = 0z1122 + [3]"], 'E1051', 1) + call CheckDefFailure(["let x = 0z1122 + 'asd'"], 'E1051', 1) + call CheckDefFailure(["let x = 33 + 0z1122"], 'E1051', 1) + call CheckDefFailure(["let x = [3] + 0z1122"], 'E1051', 1) + call CheckDefFailure(["let x = 'asdf' + 0z1122"], 'E1051', 1) + call CheckDefFailure(["let x = 6 + xxx"], 'E1001', 1) - call CheckDefFailure(["let x = 'a' .. [1]"], 'E1105') - call CheckDefFailure(["let x = 'a' .. #{a: 1}"], 'E1105') - call CheckDefFailure(["let x = 'a' .. test_void()"], 'E1105') - call CheckDefFailure(["let x = 'a' .. 0z32"], 'E1105') - call CheckDefFailure(["let x = 'a' .. function('len')"], 'E1105') - call CheckDefFailure(["let x = 'a' .. function('len', ['a'])"], 'E1105') - call CheckDefFailure(["let x = 'a' .. test_null_job()"], 'E1105') - call CheckDefFailure(["let x = 'a' .. test_null_channel()"], 'E1105') + call CheckDefFailure(["let x = 'a' .. [1]"], 'E1105', 1) + call CheckDefFailure(["let x = 'a' .. #{a: 1}"], 'E1105', 1) + call CheckDefFailure(["let x = 'a' .. test_void()"], 'E1105', 1) + call CheckDefFailure(["let x = 'a' .. 0z32"], 'E1105', 1) + call CheckDefFailure(["let x = 'a' .. function('len')"], 'E1105', 1) + call CheckDefFailure(["let x = 'a' .. function('len', ['a'])"], 'E1105', 1) + call CheckDefFailure(["let x = 'a' .. test_null_job()"], 'E1105', 1) + call CheckDefFailure(["let x = 'a' .. test_null_channel()"], 'E1105', 1) endfunc " test multiply, divide, modulo @@ -1179,7 +1179,7 @@ def Test_expr6() * yf[0]) endif - call CheckDefFailure(["let x = 6 * xxx"], 'E1001') + call CheckDefFailure(["let x = 6 * xxx"], 'E1001', 1) enddef def Test_expr6_vim9script() @@ -1215,17 +1215,17 @@ def Test_expr6_vim9script() vim9script echo 5*6 END - CheckScriptFailure(lines, 'E1004:') + CheckScriptFailure(lines, 'E1004:', 2) lines =<< trim END vim9script echo 5 *6 END - CheckScriptFailure(lines, 'E1004:') + CheckScriptFailure(lines, 'E1004:', 2) lines =<< trim END vim9script echo 5* 6 END - CheckScriptFailure(lines, 'E1004:') + CheckScriptFailure(lines, 'E1004:', 2) enddef def Test_expr6_float() @@ -1260,45 +1260,45 @@ enddef func Test_expr6_fails() let msg = "white space required before and after '*'" - call CheckDefFailure(["let x = 1*2"], msg) - call CheckDefFailure(["let x = 1 *2"], msg) - call CheckDefFailure(["let x = 1* 2"], msg) + call CheckDefFailure(["let x = 1*2"], msg, 1) + call CheckDefFailure(["let x = 1 *2"], msg, 1) + call CheckDefFailure(["let x = 1* 2"], msg, 1) let msg = "white space required before and after '/'" - call CheckDefFailure(["let x = 1/2"], msg) - call CheckDefFailure(["let x = 1 /2"], msg) - call CheckDefFailure(["let x = 1/ 2"], msg) + call CheckDefFailure(["let x = 1/2"], msg, 1) + call CheckDefFailure(["let x = 1 /2"], msg, 1) + call CheckDefFailure(["let x = 1/ 2"], msg, 1) let msg = "white space required before and after '%'" - call CheckDefFailure(["let x = 1%2"], msg) - call CheckDefFailure(["let x = 1 %2"], msg) - call CheckDefFailure(["let x = 1% 2"], msg) + call CheckDefFailure(["let x = 1%2"], msg, 1) + call CheckDefFailure(["let x = 1 %2"], msg, 1) + call CheckDefFailure(["let x = 1% 2"], msg, 1) - call CheckDefFailure(["let x = '1' * '2'"], 'E1036:') - call CheckDefFailure(["let x = '1' / '2'"], 'E1036:') - call CheckDefFailure(["let x = '1' % '2'"], 'E1035:') + call CheckDefFailure(["let x = '1' * '2'"], 'E1036:', 1) + call CheckDefFailure(["let x = '1' / '2'"], 'E1036:', 1) + call CheckDefFailure(["let x = '1' % '2'"], 'E1035:', 1) - call CheckDefFailure(["let x = 0z01 * 0z12"], 'E1036:') - call CheckDefFailure(["let x = 0z01 / 0z12"], 'E1036:') - call CheckDefFailure(["let x = 0z01 % 0z12"], 'E1035:') + call CheckDefFailure(["let x = 0z01 * 0z12"], 'E1036:', 1) + call CheckDefFailure(["let x = 0z01 / 0z12"], 'E1036:', 1) + call CheckDefFailure(["let x = 0z01 % 0z12"], 'E1035:', 1) - call CheckDefFailure(["let x = [1] * [2]"], 'E1036:') - call CheckDefFailure(["let x = [1] / [2]"], 'E1036:') - call CheckDefFailure(["let x = [1] % [2]"], 'E1035:') + call CheckDefFailure(["let x = [1] * [2]"], 'E1036:', 1) + call CheckDefFailure(["let x = [1] / [2]"], 'E1036:', 1) + call CheckDefFailure(["let x = [1] % [2]"], 'E1035:', 1) - call CheckDefFailure(["let x = #{one: 1} * #{two: 2}"], 'E1036:') - call CheckDefFailure(["let x = #{one: 1} / #{two: 2}"], 'E1036:') - call CheckDefFailure(["let x = #{one: 1} % #{two: 2}"], 'E1035:') + call CheckDefFailure(["let x = #{one: 1} * #{two: 2}"], 'E1036:', 1) + call CheckDefFailure(["let x = #{one: 1} / #{two: 2}"], 'E1036:', 1) + call CheckDefFailure(["let x = #{one: 1} % #{two: 2}"], 'E1035:', 1) - call CheckDefFailure(["let x = 0xff[1]"], 'E1107:') + call CheckDefFailure(["let x = 0xff[1]"], 'E1107:', 1) if has('float') - call CheckDefFailure(["let x = 0.7[1]"], 'E1107:') + call CheckDefFailure(["let x = 0.7[1]"], 'E1107:', 1) endif endfunc func Test_expr6_float_fails() CheckFeature float - call CheckDefFailure(["let x = 1.0 % 2"], 'E1035:') + call CheckDefFailure(["let x = 1.0 % 2"], 'E1035:', 1) endfunc " define here to use old style parsing @@ -1336,9 +1336,9 @@ def Test_expr7t() let nr = 234 assert_equal(234, nr) - call CheckDefFailure(["let x = 123"], 'E1010:') - call CheckDefFailure(["let x = 123"], 'E1068:') - call CheckDefFailure(["let x = 123"], 'E1010:', 1) + call CheckDefFailure(["let x = 123"], 'E1068:', 1) + call CheckDefFailure(["let x = = v:oldfiles let compl: dict = v:completed_item - call CheckDefFailure(["let old: list = v:oldfiles"], 'E1012: type mismatch, expected list but got list') - call CheckDefFailure(["let old: dict = v:completed_item"], 'E1012: type mismatch, expected dict but got dict') + call CheckDefFailure(["let old: list = v:oldfiles"], 'E1012: type mismatch, expected list but got list', 1) + call CheckDefFailure(["let old: dict = v:completed_item"], 'E1012: type mismatch, expected dict but got dict', 1) enddef def Test_expr7_special() @@ -1414,11 +1414,11 @@ def Test_expr7_special() assert_equal(g:special_null, v:null) assert_equal(g:special_none, v:none) - call CheckDefFailure(['v:true = true'], 'E46:') - call CheckDefFailure(['v:true = false'], 'E46:') - call CheckDefFailure(['v:false = true'], 'E46:') - call CheckDefFailure(['v:null = 11'], 'E46:') - call CheckDefFailure(['v:none = 22'], 'E46:') + call CheckDefFailure(['v:true = true'], 'E46:', 1) + call CheckDefFailure(['v:true = false'], 'E46:', 1) + call CheckDefFailure(['v:false = true'], 'E46:', 1) + call CheckDefFailure(['v:null = 11'], 'E46:', 1) + call CheckDefFailure(['v:none = 22'], 'E46:', 1) enddef def Test_expr7_special_vim9script() @@ -1463,24 +1463,24 @@ def Test_expr7_list() 2] [3, 4] - call CheckDefFailure(["let x = 1234[3]"], 'E1107:') + call CheckDefFailure(["let x = 1234[3]"], 'E1107:', 1) call CheckDefExecFailure(["let x = g:anint[3]"], 'E1062:', 1) - call CheckDefFailure(["let x = g:list_mixed[xxx]"], 'E1001:') + call CheckDefFailure(["let x = g:list_mixed[xxx]"], 'E1001:', 1) - call CheckDefFailure(["let x = [1,2,3]"], 'E1069:') - call CheckDefFailure(["let x = [1 ,2, 3]"], 'E1068:') + call CheckDefFailure(["let x = [1,2,3]"], 'E1069:', 1) + call CheckDefFailure(["let x = [1 ,2, 3]"], 'E1068:', 1) call CheckDefExecFailure(["echo 1", "let x = [][0]", "echo 3"], 'E684:', 2) call CheckDefExecFailure(["let x = g:list_mixed['xx']"], 'E1029:', 1) - call CheckDefFailure(["let x = g:list_mixed["], 'E1097:') - call CheckDefFailure(["let x = g:list_mixed[0"], 'E1097:', 1) - call CheckDefExecFailure(["let x = g:list_empty[3]"], 'E684:') - call CheckDefFailure(["let l: list = [234, 'x']"], 'E1012:') - call CheckDefFailure(["let l: list = ['x', 234]"], 'E1012:') - call CheckDefFailure(["let l: list = [234, 'x']"], 'E1012:') - call CheckDefFailure(["let l: list = ['x', 123]"], 'E1012:') + call CheckDefFailure(["let x = g:list_mixed["], 'E1097:', 2) + call CheckDefFailure(["let x = g:list_mixed[0"], 'E1097:', 2) + call CheckDefExecFailure(["let x = g:list_empty[3]"], 'E684:', 1) + call CheckDefFailure(["let l: list = [234, 'x']"], 'E1012:', 1) + call CheckDefFailure(["let l: list = ['x', 234]"], 'E1012:', 1) + call CheckDefFailure(["let l: list = [234, 'x']"], 'E1012:', 1) + call CheckDefFailure(["let l: list = ['x', 123]"], 'E1012:', 1) enddef def Test_expr7_list_vim9script() @@ -1510,34 +1510,34 @@ def Test_expr7_list_vim9script() vim9script let l = [11,22] END - CheckScriptFailure(lines, 'E1069:') + CheckScriptFailure(lines, 'E1069:', 2) lines =<< trim END vim9script let l = [11 , 22] END - CheckScriptFailure(lines, 'E1068:') + CheckScriptFailure(lines, 'E1068:', 2) lines =<< trim END vim9script let l: list = [234, 'x'] END - CheckScriptFailure(lines, 'E1012:') + CheckScriptFailure(lines, 'E1012:', 2) lines =<< trim END vim9script let l: list = ['x', 234] END - CheckScriptFailure(lines, 'E1012:') + CheckScriptFailure(lines, 'E1012:', 2) lines =<< trim END vim9script let l: list = ['x', 234] END - CheckScriptFailure(lines, 'E1012:') + CheckScriptFailure(lines, 'E1012:', 2) lines =<< trim END vim9script let l: list = [234, 'x'] END - CheckScriptFailure(lines, 'E1012:') + CheckScriptFailure(lines, 'E1012:', 2) enddef def LambdaWithComments(): func @@ -1601,8 +1601,9 @@ def Test_expr7_lambda() assert_equal(false, LambdaUsingArg(0)()) assert_equal(true, LambdaUsingArg(1)()) - call CheckDefFailure(["filter([1, 2], {k,v -> 1})"], 'E1069:') - call CheckDefFailure(["let L = {a -> a + b}"], 'E1001:') + call CheckDefFailure(["filter([1, 2], {k,v -> 1})"], 'E1069:', 1) + # error is in first line of the lambda + call CheckDefFailure(["let L = {a -> a + b}"], 'E1001:', 0) assert_equal('xxxyyy', 'xxx'->{a, b -> a .. b}('yyy')) @@ -1610,7 +1611,7 @@ def Test_expr7_lambda() 'E1106: one argument too many') CheckDefExecFailure(["let s = 'asdf'->{a -> a}('x', 'y')"], 'E1106: 2 arguments too many') - CheckDefFailure(["echo 'asdf'->{a -> a}(x)"], 'E1001:') + CheckDefFailure(["echo 'asdf'->{a -> a}(x)"], 'E1001:', 1) enddef def Test_expr7_lambda_vim9script() @@ -1647,28 +1648,28 @@ def Test_expr7_dict() mixed = #{a: 234} mixed = #{} - call CheckDefFailure(["let x = #{a:8}"], 'E1069:') - call CheckDefFailure(["let x = #{a : 8}"], 'E1068:') - call CheckDefFailure(["let x = #{a :8}"], 'E1068:') - call CheckDefFailure(["let x = #{a: 8 , b: 9}"], 'E1068:') + call CheckDefFailure(["let x = #{a:8}"], 'E1069:', 1) + call CheckDefFailure(["let x = #{a : 8}"], 'E1068:', 1) + call CheckDefFailure(["let x = #{a :8}"], 'E1068:', 1) + call CheckDefFailure(["let x = #{a: 8 , b: 9}"], 'E1068:', 1) - call CheckDefFailure(["let x = #{8: 8}"], 'E1014:') - call CheckDefFailure(["let x = #{xxx}"], 'E720:') - call CheckDefFailure(["let x = #{xxx: 1", "let y = 2"], 'E722:') - call CheckDefFailure(["let x = #{xxx: 1,"], 'E723:') - call CheckDefFailure(["let x = {'a': xxx}"], 'E1001:') - call CheckDefFailure(["let x = {xxx: 8}"], 'E1001:') - call CheckDefFailure(["let x = #{a: 1, a: 2}"], 'E721:') - call CheckDefFailure(["let x = #"], 'E1015:') - call CheckDefFailure(["let x += 1"], 'E1020:') - call CheckDefFailure(["let x = x + 1"], 'E1001:') - call CheckDefExecFailure(["let x = g:anint.member"], 'E715:') - call CheckDefExecFailure(["let x = g:dict_empty.member"], 'E716:') + call CheckDefFailure(["let x = #{8: 8}"], 'E1014:', 1) + call CheckDefFailure(["let x = #{xxx}"], 'E720:', 1) + call CheckDefFailure(["let x = #{xxx: 1", "let y = 2"], 'E722:', 2) + call CheckDefFailure(["let x = #{xxx: 1,"], 'E723:', 2) + call CheckDefFailure(["let x = {'a': xxx}"], 'E1001:', 1) + call CheckDefFailure(["let x = {xxx: 8}"], 'E1001:', 1) + call CheckDefFailure(["let x = #{a: 1, a: 2}"], 'E721:', 1) + call CheckDefFailure(["let x = #"], 'E1015:', 1) + call CheckDefFailure(["let x += 1"], 'E1020:', 1) + call CheckDefFailure(["let x = x + 1"], 'E1001:', 1) + call CheckDefExecFailure(["let x = g:anint.member"], 'E715:', 1) + call CheckDefExecFailure(["let x = g:dict_empty.member"], 'E716:', 1) - call CheckDefFailure(['let x: dict = #{a: 234, b: "1"}'], 'E1012:') - call CheckDefFailure(['let x: dict = #{a: "x", b: 134}'], 'E1012:') - call CheckDefFailure(['let x: dict = #{a: 234, b: "1"}'], 'E1012:') - call CheckDefFailure(['let x: dict = #{a: "x", b: 134}'], 'E1012:') + call CheckDefFailure(['let x: dict = #{a: 234, b: "1"}'], 'E1012:', 1) + call CheckDefFailure(['let x: dict = #{a: "x", b: 134}'], 'E1012:', 1) + call CheckDefFailure(['let x: dict = #{a: 234, b: "1"}'], 'E1012:', 1) + call CheckDefFailure(['let x: dict = #{a: "x", b: 134}'], 'E1012:', 1) enddef def Test_expr7_dict_vim9script() @@ -1703,52 +1704,52 @@ def Test_expr7_dict_vim9script() vim9script let d = #{one:1, two: 2} END - CheckScriptFailure(lines, 'E1069:') + CheckScriptFailure(lines, 'E1069:', 2) lines =<< trim END vim9script let d = #{one: 1,two: 2} END - CheckScriptFailure(lines, 'E1069:') + CheckScriptFailure(lines, 'E1069:', 2) lines =<< trim END vim9script let d = #{one : 1} END - CheckScriptFailure(lines, 'E1068:') + CheckScriptFailure(lines, 'E1068:', 2) lines =<< trim END vim9script let d = #{one:1} END - CheckScriptFailure(lines, 'E1069:') + CheckScriptFailure(lines, 'E1069:', 2) lines =<< trim END vim9script let d = #{one: 1 , two: 2} END - CheckScriptFailure(lines, 'E1068:') + CheckScriptFailure(lines, 'E1068:', 2) lines =<< trim END vim9script let l: dict = #{a: 234, b: 'x'} END - CheckScriptFailure(lines, 'E1012:') + CheckScriptFailure(lines, 'E1012:', 2) lines =<< trim END vim9script let l: dict = #{a: 'x', b: 234} END - CheckScriptFailure(lines, 'E1012:') + CheckScriptFailure(lines, 'E1012:', 2) lines =<< trim END vim9script let l: dict = #{a: 'x', b: 234} END - CheckScriptFailure(lines, 'E1012:') + CheckScriptFailure(lines, 'E1012:', 2) lines =<< trim END vim9script let l: dict = #{a: 234, b: 'x'} END - CheckScriptFailure(lines, 'E1012:') + CheckScriptFailure(lines, 'E1012:', 2) enddef let g:oneString = 'one' @@ -1772,9 +1773,9 @@ def Test_expr_member() assert_equal('one', #{one: 'one'}.one) assert_equal('one', #{one: 'one'}[g:oneString]) - call CheckDefFailure(["let x = g:dict_one.#$!"], 'E1002:') - call CheckDefExecFailure(["let d: dict", "echo d['a']"], 'E716:') - call CheckDefExecFailure(["let d: dict", "d = g:list_empty"], 'E1029: Expected dict but got list') + call CheckDefFailure(["let x = g:dict_one.#$!"], 'E1002:', 1) + call CheckDefExecFailure(["let d: dict", "echo d['a']"], 'E716:', 2) + call CheckDefExecFailure(["let d: dict", "d = g:list_empty"], 'E1029: Expected dict but got list', 2) enddef def Test_expr7_any_index_slice() @@ -1844,20 +1845,20 @@ def Test_expr7_any_index_slice() CheckDefSuccess(lines) CheckScriptSuccess(['vim9script'] + lines) - CheckDefExecFailure(['echo g:testblob[2]'], 'E979:') - CheckScriptFailure(['vim9script', 'echo g:testblob[2]'], 'E979:') - CheckDefExecFailure(['echo g:testblob[-3]'], 'E979:') - CheckScriptFailure(['vim9script', 'echo g:testblob[-3]'], 'E979:') + CheckDefExecFailure(['echo g:testblob[2]'], 'E979:', 1) + CheckScriptFailure(['vim9script', 'echo g:testblob[2]'], 'E979:', 2) + CheckDefExecFailure(['echo g:testblob[-3]'], 'E979:', 1) + CheckScriptFailure(['vim9script', 'echo g:testblob[-3]'], 'E979:', 2) - CheckDefExecFailure(['echo g:testlist[4]'], 'E684:') - CheckScriptFailure(['vim9script', 'echo g:testlist[4]'], 'E684:') - CheckDefExecFailure(['echo g:testlist[-5]'], 'E684:') - CheckScriptFailure(['vim9script', 'echo g:testlist[-5]'], 'E684:') + CheckDefExecFailure(['echo g:testlist[4]'], 'E684:', 1) + CheckScriptFailure(['vim9script', 'echo g:testlist[4]'], 'E684:', 2) + CheckDefExecFailure(['echo g:testlist[-5]'], 'E684:', 1) + CheckScriptFailure(['vim9script', 'echo g:testlist[-5]'], 'E684:', 2) - CheckDefExecFailure(['echo g:testdict["a":"b"]'], 'E719:') - CheckScriptFailure(['vim9script', 'echo g:testdict["a":"b"]'], 'E719:') - CheckDefExecFailure(['echo g:testdict[1]'], 'E716:') - CheckScriptFailure(['vim9script', 'echo g:testdict[1]'], 'E716:') + CheckDefExecFailure(['echo g:testdict["a":"b"]'], 'E719:', 1) + CheckScriptFailure(['vim9script', 'echo g:testdict["a":"b"]'], 'E719:', 2) + CheckDefExecFailure(['echo g:testdict[1]'], 'E716:', 1) + CheckScriptFailure(['vim9script', 'echo g:testdict[1]'], 'E716:', 2) unlet g:teststring unlet g:testblob @@ -1926,7 +1927,7 @@ def Test_expr7_environment() assert_equal('testvar', $TESTVAR) assert_equal('', $ASDF_ASD_XXX) - call CheckDefFailure(["let x = $$$"], 'E1002:') + call CheckDefFailure(["let x = $$$"], 'E1002:', 1) enddef def Test_expr7_register() @@ -1941,7 +1942,7 @@ def Test_expr7_register() normal axyz assert_equal("xyz", @.) - call CheckDefFailure(["@. = 'yes'"], 'E354:') + call CheckDefFailure(["@. = 'yes'"], 'E354:', 1) @/ = 'slash' assert_equal('slash', @/) @@ -2026,11 +2027,11 @@ def Test_expr7_call() assert_equal(true, !range(5)->empty()) assert_equal([0, 1, 2], --3->range()) - call CheckDefFailure(["let x = 'yes'->Echo"], 'E107:') + call CheckDefFailure(["let x = 'yes'->Echo"], 'E107:', 1) call CheckScriptFailure([ "vim9script", "let x = substitute ('x', 'x', 'x', 'x')" - ], 'E121:') + ], 'E121:', 2) let auto_lines =<< trim END def g:some#func(): string @@ -2085,45 +2086,45 @@ def Test_expr7_not() enddef func Test_expr7_fails() - call CheckDefFailure(["let x = (12"], "E110:") + call CheckDefFailure(["let x = (12"], "E110:", 1) - call CheckDefFailure(["let x = -'xx'"], "E1030:") - call CheckDefFailure(["let x = +'xx'"], "E1030:") - call CheckDefFailure(["let x = -0z12"], "E974:") - call CheckDefExecFailure(["let x = -[8]"], "E39:") - call CheckDefExecFailure(["let x = -{'a': 1}"], "E39:") + call CheckDefFailure(["let x = -'xx'"], "E1030:", 1) + call CheckDefFailure(["let x = +'xx'"], "E1030:", 1) + call CheckDefFailure(["let x = -0z12"], "E974:", 1) + call CheckDefExecFailure(["let x = -[8]"], "E39:", 1) + call CheckDefExecFailure(["let x = -{'a': 1}"], "E39:", 1) - call CheckDefFailure(["let x = @"], "E1002:") - call CheckDefFailure(["let x = @<"], "E354:") + call CheckDefFailure(["let x = @"], "E1002:", 1) + call CheckDefFailure(["let x = @<"], "E354:", 1) - call CheckDefFailure(["let x = [1, 2"], "E697:") - call CheckDefFailure(["let x = [notfound]"], "E1001:") + call CheckDefFailure(["let x = [1, 2"], "E697:", 2) + call CheckDefFailure(["let x = [notfound]"], "E1001:", 1) - call CheckDefFailure(["let x = { -> 123) }"], "E451:") - call CheckDefFailure(["let x = 123->{x -> x + 5) }"], "E451:") + call CheckDefFailure(["let x = { -> 123) }"], "E451:", 1) + call CheckDefFailure(["let x = 123->{x -> x + 5) }"], "E451:", 1) - call CheckDefFailure(["let x = ¬exist"], 'E113:') - call CheckDefFailure(["&grepprg = [343]"], 'E1012:') + call CheckDefFailure(["let x = ¬exist"], 'E113:', 1) + call CheckDefFailure(["&grepprg = [343]"], 'E1012:', 1) - call CheckDefExecFailure(["echo s:doesnt_exist"], 'E121:') - call CheckDefExecFailure(["echo g:doesnt_exist"], 'E121:') + call CheckDefExecFailure(["echo s:doesnt_exist"], 'E121:', 1) + call CheckDefExecFailure(["echo g:doesnt_exist"], 'E121:', 1) - call CheckDefFailure(["echo a:somevar"], 'E1075:') - call CheckDefFailure(["echo l:somevar"], 'E1075:') - call CheckDefFailure(["echo x:somevar"], 'E1075:') + call CheckDefFailure(["echo a:somevar"], 'E1075:', 1) + call CheckDefFailure(["echo l:somevar"], 'E1075:', 1) + call CheckDefFailure(["echo x:somevar"], 'E1075:', 1) - call CheckDefExecFailure(["let x = +g:astring"], 'E1030:') - call CheckDefExecFailure(["let x = +g:ablob"], 'E974:') - call CheckDefExecFailure(["let x = +g:alist"], 'E745:') - call CheckDefExecFailure(["let x = +g:adict"], 'E728:') + call CheckDefExecFailure(["let x = +g:astring"], 'E1030:', 1) + call CheckDefExecFailure(["let x = +g:ablob"], 'E974:', 1) + call CheckDefExecFailure(["let x = +g:alist"], 'E745:', 1) + call CheckDefExecFailure(["let x = +g:adict"], 'E728:', 1) - call CheckDefFailure(["let x = ''", "let y = x.memb"], 'E715:') + call CheckDefFailure(["let x = ''", "let y = x.memb"], 'E715:', 2) - call CheckDefFailure(["'yes'->", "Echo()"], 'E488: Trailing characters: ->') + call CheckDefFailure(["'yes'->", "Echo()"], 'E488: Trailing characters: ->', 1) - call CheckDefExecFailure(["[1, 2->len()"], 'E697:') - call CheckDefExecFailure(["#{a: 1->len()"], 'E488:') - call CheckDefExecFailure(["{'a': 1->len()"], 'E723:') + call CheckDefExecFailure(["[1, 2->len()"], 'E697:', 2) + call CheckDefExecFailure(["#{a: 1->len()"], 'E488:', 1) + call CheckDefExecFailure(["{'a': 1->len()"], 'E723:', 2) endfunc let g:Funcrefs = [function('add')] @@ -2246,7 +2247,7 @@ def Test_expr7_list_subscript() lines = ['let l = [0, 1, 2]', 'echo l[g:astring : g:theone]'] CheckDefExecFailure(lines, 'E1029:') - CheckScriptFailure(['vim9script'] + lines, 'E1030:') + CheckScriptFailure(['vim9script'] + lines, 'E1030:', 3) enddef def Test_expr7_subscript_linebreak() @@ -2307,25 +2308,25 @@ def Test_expr7_method_call() enddef func Test_expr7_trailing_fails() - call CheckDefFailure(['let l = [2]', 'l->{l -> add(l, 8)}'], 'E107') - call CheckDefFailure(['let l = [2]', 'l->{l -> add(l, 8)} ()'], 'E274') + call CheckDefFailure(['let l = [2]', 'l->{l -> add(l, 8)}'], 'E107:', 2) + call CheckDefFailure(['let l = [2]', 'l->{l -> add(l, 8)} ()'], 'E274:', 2) endfunc func Test_expr_fails() - call CheckDefFailure(["let x = '1'is2"], 'E488:') - call CheckDefFailure(["let x = '1'isnot2"], 'E488:') + call CheckDefFailure(["let x = '1'is2"], 'E488:', 1) + call CheckDefFailure(["let x = '1'isnot2"], 'E488:', 1) - call CheckDefFailure(["CallMe ('yes')"], 'E476:') - call CheckDefFailure(["CallMe2('yes','no')"], 'E1069:') - call CheckDefFailure(["CallMe2('yes' , 'no')"], 'E1068:') + call CheckDefFailure(["CallMe ('yes')"], 'E476:', 1) + call CheckDefFailure(["CallMe2('yes','no')"], 'E1069:', 1) + call CheckDefFailure(["CallMe2('yes' , 'no')"], 'E1068:', 1) - call CheckDefFailure(["v:nosuch += 3"], 'E1001:') - call CheckDefFailure(["let v:statusmsg = ''"], 'E1016: Cannot declare a v: variable:') - call CheckDefFailure(["let asdf = v:nosuch"], 'E1001:') + call CheckDefFailure(["v:nosuch += 3"], 'E1001:', 1) + call CheckDefFailure(["let v:statusmsg = ''"], 'E1016: Cannot declare a v: variable:', 1) + call CheckDefFailure(["let asdf = v:nosuch"], 'E1001:', 1) - call CheckDefFailure(["echo len('asdf'"], 'E110:') - call CheckDefFailure(["echo Func0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789()"], 'E1011:') - call CheckDefFailure(["echo doesnotexist()"], 'E117:') + call CheckDefFailure(["echo len('asdf'"], 'E110:', 2) + call CheckDefFailure(["echo Func0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789()"], 'E1011:', 1) + call CheckDefFailure(["echo doesnotexist()"], 'E117:', 1) endfunc " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/vim9.vim b/src/testdir/vim9.vim --- a/src/testdir/vim9.vim +++ b/src/testdir/vim9.vim @@ -10,24 +10,28 @@ endfunc " Check that "lines" inside ":def" results in an "error" message. " If "lnum" is given check that the error is reported for this line. -func CheckDefFailure(lines, error, lnum = -1) - call writefile(['def Func()'] + a:lines + ['enddef', 'defcompile'], 'Xdef') - call assert_fails('so Xdef', a:error, a:lines, a:lnum) +" Add a line before and after to make it less likely that the line number is +" accidentally correct. +func CheckDefFailure(lines, error, lnum = -3) + call writefile(['def Func()', '# comment'] + a:lines + ['#comment', 'enddef', 'defcompile'], 'Xdef') + call assert_fails('so Xdef', a:error, a:lines, a:lnum + 1) call delete('Xdef') endfunc " Check that "lines" inside ":def" results in an "error" message when executed. " If "lnum" is given check that the error is reported for this line. -func CheckDefExecFailure(lines, error, lnum = -1) - call writefile(['def Func()'] + a:lines + ['enddef'], 'Xdef') +" Add a line before and after to make it less likely that the line number is +" accidentally correct. +func CheckDefExecFailure(lines, error, lnum = -3) + call writefile(['def Func()', '# comment'] + a:lines + ['#comment', 'enddef'], 'Xdef') so Xdef - call assert_fails('call Func()', a:error, a:lines, a:lnum) + call assert_fails('call Func()', a:error, a:lines, a:lnum + 1) call delete('Xdef') endfunc -def CheckScriptFailure(lines: list, error: string) +def CheckScriptFailure(lines: list, error: string, lnum = -3) writefile(lines, 'Xdef') - assert_fails('so Xdef', error, lines) + assert_fails('so Xdef', error, lines, lnum) delete('Xdef') enddef diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1481, +/**/ 1480, /**/ 1479, diff --git a/src/vim9execute.c b/src/vim9execute.c --- a/src/vim9execute.c +++ b/src/vim9execute.c @@ -2317,6 +2317,7 @@ call_def_function( // slice: composite is at stack-3, indexes at stack-2 and // stack-1 tv = is_slice ? STACK_TV_BOT(-3) : STACK_TV_BOT(-2); + SOURCING_LNUM = iptr->isn_lnum; if (check_can_index(tv, TRUE, TRUE) == FAIL) goto on_error; var1 = is_slice ? STACK_TV_BOT(-2) : STACK_TV_BOT(-1); @@ -2463,6 +2464,7 @@ call_def_function( int error = FALSE; tv = STACK_TV_BOT(-1); + SOURCING_LNUM = iptr->isn_lnum; if (check_not_string(tv) == FAIL) goto on_error; (void)tv_get_number_chk(tv, &error);