diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-01-29 21:45:34 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-01-29 21:45:34 +0000 |
commit | 62aec93bfdb9e1b40d03a6d2e8e9511f8b1bdb2d (patch) | |
tree | 8f2962626c458f5ac5fa1f2ec46e79248683c81d /src/testdir/test_vim9_expr.vim | |
parent | 135e15251efd96c960e51e8ab31333c2d6887983 (diff) |
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistentv8.2.4257
Problem: Vim9: finding global function without g: prefix but not finding
global variable is inconsistent.
Solution: Require using g: for a global function. Change the vim9.vim
script into a Vim9 script with exports. Fix that import in legacy
script does not work.
Diffstat (limited to 'src/testdir/test_vim9_expr.vim')
-rw-r--r-- | src/testdir/test_vim9_expr.vim | 1192 |
1 files changed, 606 insertions, 586 deletions
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim index 6428e6386a..d2f69abf71 100644 --- a/src/testdir/test_vim9_expr.vim +++ b/src/testdir/test_vim9_expr.vim @@ -1,7 +1,7 @@ " Tests for Vim9 script expressions source check.vim -source vim9.vim +import './vim9.vim' as v9 let g:cond = v:false def FuncOne(arg: number): string @@ -66,7 +66,7 @@ def Test_expr1_trinary() var Z = g:cond ? FuncOne : FuncTwo assert_equal(123, Z(3)) END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) enddef def Test_expr1_trinary_vimscript() @@ -77,7 +77,7 @@ def Test_expr1_trinary_vimscript() : 'no' assert_equal('yes', name) END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) lines =<< trim END var name = v:false @@ -85,7 +85,7 @@ def Test_expr1_trinary_vimscript() : 'no' assert_equal('no', name) END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) lines =<< trim END var name = v:false ? @@ -93,7 +93,7 @@ def Test_expr1_trinary_vimscript() 'no' assert_equal('no', name) END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) lines =<< trim END var name = v:false ? # comment @@ -102,48 +102,48 @@ def Test_expr1_trinary_vimscript() 'no' # comment assert_equal('no', name) END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) # check white space lines =<< trim END var name = v:true?1:2 END - CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''?'' at "?1:2"', 1) + v9.CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''?'' at "?1:2"', 1) lines =<< trim END var name = v:true? 1 : 2 END - CheckDefAndScriptFailure(lines, 'E1004:', 1) + v9.CheckDefAndScriptFailure(lines, 'E1004:', 1) lines =<< trim END var name = v:true ?1 : 2 END - CheckDefAndScriptFailure(lines, 'E1004:', 1) + v9.CheckDefAndScriptFailure(lines, 'E1004:', 1) lines =<< trim END var name = v:true ? 1: 2 END - CheckDefAndScriptFailure(lines, 'E1004: White space required before and after '':'' at ": 2"', 1) + v9.CheckDefAndScriptFailure(lines, 'E1004: White space required before and after '':'' at ": 2"', 1) lines =<< trim END var name = v:true ? 1 :2 END - CheckDefAndScriptFailure(lines, 'E1004:', 1) + v9.CheckDefAndScriptFailure(lines, 'E1004:', 1) lines =<< trim END var name = 'x' ? 1 : 2 END - CheckDefAndScriptFailure(lines, 'E1135:', 1) + v9.CheckDefAndScriptFailure(lines, 'E1135:', 1) lines =<< trim END var name = [] ? 1 : 2 END - CheckDefExecAndScriptFailure(lines, 'E745:', 1) + v9.CheckDefExecAndScriptFailure(lines, 'E745:', 1) lines =<< trim END var name = {} ? 1 : 2 END - CheckDefExecAndScriptFailure(lines, 'E728:', 1) + v9.CheckDefExecAndScriptFailure(lines, 'E728:', 1) # check after failure eval_flags is reset lines =<< trim END @@ -153,7 +153,7 @@ def Test_expr1_trinary_vimscript() endtry assert_equal(v:true, eval(string(v:true))) END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) lines =<< trim END try @@ -162,53 +162,53 @@ def Test_expr1_trinary_vimscript() endtry assert_equal(v:true, eval(string(v:true))) END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) enddef func Test_expr1_trinary_fails() - call CheckDefAndScriptFailure(["var x = 1 ? 'one'"], "Missing ':' after '?'", 1) + call v9.CheckDefAndScriptFailure(["var x = 1 ? 'one'"], "Missing ':' after '?'", 1) let msg = "White space required before and after '?'" - call CheckDefAndScriptFailure(["var x = 1? 'one' : 'two'"], msg, 1) - call CheckDefAndScriptFailure(["var x = 1 ?'one' : 'two'"], msg, 1) - call CheckDefAndScriptFailure(["var x = 1?'one' : 'two'"], msg, 1) + call v9.CheckDefAndScriptFailure(["var x = 1? 'one' : 'two'"], msg, 1) + call v9.CheckDefAndScriptFailure(["var x = 1 ?'one' : 'two'"], msg, 1) + call v9.CheckDefAndScriptFailure(["var x = 1?'one' : 'two'"], msg, 1) let lines =<< trim END var x = 1 ?'one' : 'two' # comment END - call CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''?'' at "?''one'' : ''two''"', 2) + call v9.CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''?'' at "?''one'' : ''two''"', 2) let msg = "White space required before and after ':'" - call CheckDefAndScriptFailure(["var x = 1 ? 'one': 'two'"], msg, 1) - call CheckDefAndScriptFailure(["var x = 1 ? 'one' :'two'"], msg, 1) - call CheckDefAndScriptFailure(["var x = 1 ? 'one':'two'"], msg, 1) + call v9.CheckDefAndScriptFailure(["var x = 1 ? 'one': 'two'"], msg, 1) + call v9.CheckDefAndScriptFailure(["var x = 1 ? 'one' :'two'"], msg, 1) + call v9.CheckDefAndScriptFailure(["var x = 1 ? 'one':'two'"], msg, 1) let lines =<< trim END var x = 1 ? 'one' :'two' # Comment END - call CheckDefAndScriptFailure(lines, 'E1004: White space required before and after '':'' at ":''two''"', 2) + call v9.CheckDefAndScriptFailure(lines, 'E1004: White space required before and after '':'' at ":''two''"', 2) - call CheckDefAndScriptFailure(["var x = 'x' ? 'one' : 'two'"], 'E1135:', 1) - call CheckDefAndScriptFailure(["var x = 0z1234 ? 'one' : 'two'"], 'E974:', 1) - call CheckDefExecAndScriptFailure(["var x = [] ? 'one' : 'two'"], 'E745:', 1) - call CheckDefExecAndScriptFailure(["var x = {} ? 'one' : 'two'"], 'E728:', 1) + call v9.CheckDefAndScriptFailure(["var x = 'x' ? 'one' : 'two'"], 'E1135:', 1) + call v9.CheckDefAndScriptFailure(["var x = 0z1234 ? 'one' : 'two'"], 'E974:', 1) + call v9.CheckDefExecAndScriptFailure(["var x = [] ? 'one' : 'two'"], 'E745:', 1) + call v9.CheckDefExecAndScriptFailure(["var x = {} ? 'one' : 'two'"], 'E728:', 1) - call CheckDefExecFailure(["var x = false ? "], 'E1097:', 3) - call CheckScriptFailure(['vim9script', "var x = false ? "], 'E15:', 2) - call CheckDefExecFailure(["var x = false ? 'one' : "], 'E1097:', 3) - call CheckScriptFailure(['vim9script', "var x = false ? 'one' : "], 'E15:', 2) + call v9.CheckDefExecFailure(["var x = false ? "], 'E1097:', 3) + call v9.CheckScriptFailure(['vim9script', "var x = false ? "], 'E15:', 2) + call v9.CheckDefExecFailure(["var x = false ? 'one' : "], 'E1097:', 3) + call v9.CheckScriptFailure(['vim9script', "var x = false ? 'one' : "], 'E15:', 2) - call CheckDefExecAndScriptFailure(["var x = true ? xxx : 'foo'"], ['E1001:', 'E121:'], 1) - call CheckDefExecAndScriptFailure(["var x = false ? 'foo' : xxx"], ['E1001:', 'E121:'], 1) + call v9.CheckDefExecAndScriptFailure(["var x = true ? xxx : 'foo'"], ['E1001:', 'E121:'], 1) + call v9.CheckDefExecAndScriptFailure(["var x = false ? 'foo' : xxx"], ['E1001:', 'E121:'], 1) if has('float') - call CheckDefAndScriptFailure(["var x = 0.1 ? 'one' : 'two'"], 'E805:', 1) + call v9.CheckDefAndScriptFailure(["var x = 0.1 ? 'one' : 'two'"], 'E805:', 1) endif " missing argument detected even when common type is used - call CheckDefAndScriptFailure([ + call v9.CheckDefAndScriptFailure([ \ 'var X = FuncOne', \ 'var Y = FuncTwo', \ 'var Z = g:cond ? FuncOne : FuncTwo', @@ -235,21 +235,21 @@ def Test_expr1_falsy() assert_equal(456, 0.0 ?? 456) endif END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) var msg = "White space required before and after '??'" - call CheckDefAndScriptFailure(["var x = 1?? 'one' : 'two'"], msg, 1) - call CheckDefAndScriptFailure(["var x = 1 ??'one' : 'two'"], msg, 1) - call CheckDefAndScriptFailure(["var x = 1??'one' : 'two'"], msg, 1) + call v9.CheckDefAndScriptFailure(["var x = 1?? 'one' : 'two'"], msg, 1) + call v9.CheckDefAndScriptFailure(["var x = 1 ??'one' : 'two'"], msg, 1) + call v9.CheckDefAndScriptFailure(["var x = 1??'one' : 'two'"], msg, 1) lines =<< trim END var x = 1 ??'one' : 'two' #comment END - CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''??'' at "??''one'' : ''two''"', 2) + v9.CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''??'' at "??''one'' : ''two''"', 2) enddef -def Record(val: any): any +def g:Record(val: any): any g:vals->add(val) return val enddef @@ -270,35 +270,35 @@ def Test_expr2() assert_equal(false, 0 || false) g:vals = [] - assert_equal(true, Record(1) || Record(3)) + assert_equal(true, g:Record(1) || g:Record(3)) assert_equal([1], g:vals) g:vals = [] - assert_equal(true, Record(0) || Record(1)) + assert_equal(true, g:Record(0) || g:Record(1)) assert_equal([0, 1], g:vals) g:vals = [] - assert_equal(true, Record(0) || Record(true)) + assert_equal(true, g:Record(0) || g:Record(true)) assert_equal([0, true], g:vals) g:vals = [] - assert_equal(true, Record(0) - || Record(1) - || Record(0)) + assert_equal(true, g:Record(0) + || g:Record(1) + || g:Record(0)) assert_equal([0, 1], g:vals) g:vals = [] - assert_equal(true, Record(0) - || Record(true) - || Record(0)) + assert_equal(true, g:Record(0) + || g:Record(true) + || g:Record(0)) assert_equal([0, true], g:vals) g:vals = [] - assert_equal(true, Record(true) || Record(false)) + assert_equal(true, g:Record(true) || g:Record(false)) assert_equal([true], g:vals) g:vals = [] - assert_equal(false, Record(0) || Record(false) || Record(0)) + assert_equal(false, g:Record(0) || g:Record(false) || g:Record(0)) assert_equal([0, false, 0], g:vals) g:vals = [] @@ -315,7 +315,7 @@ def Test_expr2() endif assert_equal([1], g:vals) END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) enddef def Test_expr2_vimscript() @@ -325,7 +325,7 @@ def Test_expr2_vimscript() || 1 assert_equal(true, name) END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) lines =<< trim END var name = v:false @@ -333,7 +333,7 @@ def Test_expr2_vimscript() || v:false assert_equal(v:true, name) END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) lines =<< trim END var name = v:false || @@ -341,7 +341,7 @@ def Test_expr2_vimscript() v:false assert_equal(v:true, name) END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) lines =<< trim END var name = v:false || # comment @@ -351,48 +351,48 @@ def Test_expr2_vimscript() v:false # comment assert_equal(v:true, name) END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) # check white space lines =<< trim END var name = v:true||v:true END - CheckDefExecAndScriptFailure(lines, 'E1004: White space required before and after ''||'' at "||v:true"', 1) + v9.CheckDefExecAndScriptFailure(lines, 'E1004: White space required before and after ''||'' at "||v:true"', 1) lines =<< trim END var name = v:true ||v:true END - CheckDefAndScriptFailure(lines, 'E1004:', 1) + v9.CheckDefAndScriptFailure(lines, 'E1004:', 1) lines =<< trim END var name = v:true|| v:true END - CheckDefAndScriptFailure(lines, 'E1004:', 1) + v9.CheckDefAndScriptFailure(lines, 'E1004:', 1) enddef def Test_expr2_fails() var msg = "White space required before and after '||'" - call CheckDefAndScriptFailure(["var x = 1||0"], msg, 1) - call CheckDefAndScriptFailure(["var x = 1 ||0"], msg, 1) - call CheckDefAndScriptFailure(["var x = 1|| 0"], msg, 1) + v9.CheckDefAndScriptFailure(["var x = 1||0"], msg, 1) + v9.CheckDefAndScriptFailure(["var x = 1 ||0"], msg, 1) + v9.CheckDefAndScriptFailure(["var x = 1|| 0"], msg, 1) - call CheckDefFailure(["var x = false || "], 'E1097:', 3) - call CheckScriptFailure(['vim9script', "var x = false || "], 'E15:', 2) + v9.CheckDefFailure(["var x = false || "], 'E1097:', 3) + v9.CheckScriptFailure(['vim9script', "var x = false || "], 'E15:', 2) # script does not fail, the second expression is skipped - call CheckDefFailure(["var x = 1 || xxx"], 'E1001:', 1) + v9.CheckDefFailure(["var x = 1 || xxx"], 'E1001:', 1) - call CheckDefAndScriptFailure(["var x = [] || false"], ['E1012:', 'E745:'], 1) + v9.CheckDefAndScriptFailure(["var x = [] || false"], ['E1012:', 'E745:'], 1) - call CheckDefAndScriptFailure(["if 'yes' || 0", 'echo 0', 'endif'], ['E1012: Type mismatch; expected bool but got string', 'E1135: Using a String as a Bool'], 1) + v9.CheckDefAndScriptFailure(["if 'yes' || 0", 'echo 0', 'endif'], ['E1012: Type mismatch; expected bool but got string', 'E1135: Using a String as a Bool'], 1) - call CheckDefAndScriptFailure(["var x = 3 || false"], ['E1012:', 'E1023:'], 1) - call CheckDefAndScriptFailure(["var x = false || 3"], ['E1012:', 'E1023:'], 1) + v9.CheckDefAndScriptFailure(["var x = 3 || false"], ['E1012:', 'E1023:'], 1) + v9.CheckDefAndScriptFailure(["var x = false || 3"], ['E1012:', 'E1023:'], 1) - call CheckDefAndScriptFailure(["if 3"], 'E1023:', 1) - call CheckDefExecAndScriptFailure(['var x = 3', 'if x', 'endif'], 'E1023:', 2) + v9.CheckDefAndScriptFailure(["if 3"], 'E1023:', 1) + v9.CheckDefExecAndScriptFailure(['var x = 3', 'if x', 'endif'], 'E1023:', 2) - call CheckDefAndScriptFailure(["var x = [] || false"], ['E1012: Type mismatch; expected bool but got list<unknown>', 'E745:'], 1) + v9.CheckDefAndScriptFailure(["var x = [] || false"], ['E1012: Type mismatch; expected bool but got list<unknown>', 'E745:'], 1) var lines =<< trim END vim9script @@ -400,14 +400,14 @@ def Test_expr2_fails() ||true # comment END - CheckScriptFailure(lines, 'E1004: White space required before and after ''||'' at "||true"', 3) + v9.CheckScriptFailure(lines, 'E1004: White space required before and after ''||'' at "||true"', 3) lines =<< trim END var x = false || false || a.b END - CheckDefFailure(lines, 'E1001:', 3) + v9.CheckDefFailure(lines, 'E1001:', 3) enddef " test && @@ -425,30 +425,30 @@ def Test_expr3() assert_equal(true, 1 && true) g:vals = [] - assert_equal(true, Record(true) && Record(1)) + assert_equal(true, g:Record(true) && g:Record(1)) assert_equal([true, 1], g:vals) g:vals = [] - assert_equal(true, Record(1) && Record(true)) + assert_equal(true, g:Record(1) && g:Record(true)) assert_equal([1, true], g:vals) g:vals = [] - assert_equal(false, Record(0) && Record(1)) + assert_equal(false, g:Record(0) && g:Record(1)) assert_equal([0], g:vals) g:vals = [] - assert_equal(false, Record(0) && Record(1) && Record(0)) + assert_equal(false, g:Record(0) && g:Record(1) && g:Record(0)) assert_equal([0], g:vals) g:vals = [] - assert_equal(false, Record(0) && Record(4) && Record(0)) + assert_equal(false, g:Record(0) && g:Record(4) && g:Record(0)) assert_equal([0], g:vals) g:vals = [] - assert_equal(false, Record(1) && Record(true) && Record(0)) + assert_equal(false, g:Record(1) && g:Record(true) && g:Record(0)) assert_equal([1, true, 0], g:vals) END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) enddef def Test_expr3_vimscript() @@ -458,7 +458,7 @@ def Test_expr3_vimscript() && 1 assert_equal(false, name) END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) lines =<< trim END var name = v:true @@ -466,7 +466,7 @@ def Test_expr3_vimscript() && v:true assert_equal(v:true, name) END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) lines =<< trim END var name = v:true && @@ -474,7 +474,7 @@ def Test_expr3_vimscript() v:true assert_equal(v:true, name) END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) lines =<< trim END var name = v:true && # comment @@ -484,62 +484,62 @@ def Test_expr3_vimscript() v:true assert_equal(v:true, name) END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) # check white space lines =<< trim END var name = v:true&&v:true END - CheckDefAndScriptFailure(lines, 'E1004:', 1) + v9.CheckDefAndScriptFailure(lines, 'E1004:', 1) lines =<< trim END var name = v:true &&v:true END - CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''&&'' at "&&v:true"', 1) + v9.CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''&&'' at "&&v:true"', 1) lines =<< trim END var name = v:true&& v:true END - CheckDefAndScriptFailure(lines, 'E1004:', 1) + v9.CheckDefAndScriptFailure(lines, 'E1004:', 1) enddef def Test_expr3_fails() var msg = "White space required before and after '&&'" - CheckDefAndScriptFailure(["var x = 1&&0"], msg, 1) - CheckDefAndScriptFailure(["var x = 1 &&0"], msg, 1) - CheckDefAndScriptFailure(["var x = 1&& 0"], msg, 1) + v9.CheckDefAndScriptFailure(["var x = 1&&0"], msg, 1) + v9.CheckDefAndScriptFailure(["var x = 1 &&0"], msg, 1) + v9.CheckDefAndScriptFailure(["var x = 1&& 0"], msg, 1) var lines =<< trim END var x = 1 &&0 # comment END - CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''&&'' at "&&0"', 2) + v9.CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''&&'' at "&&0"', 2) g:vals = [] - CheckDefAndScriptFailure(["if 'yes' && 0", 'echo 0', 'endif'], ['E1012: Type mismatch; expected bool but got string', 'E1135: Using a String as a Bool'], 1) + v9.CheckDefAndScriptFailure(["if 'yes' && 0", 'echo 0', 'endif'], ['E1012: Type mismatch; expected bool but got string', 'E1135: Using a String as a Bool'], 1) - CheckDefExecAndScriptFailure(['assert_equal(false, Record(1) && Record(4) && Record(0))'], 'E1023: Using a Number as a Bool: 4', 1) + v9.CheckDefExecAndScriptFailure(['assert_equal(false, g:Record(1) && g:Record(4) && g:Record(0))'], 'E1023: Using a Number as a Bool: 4', 1) lines =<< trim END if 3 && true endif END - CheckDefAndScriptFailure(lines, ['E1012:', 'E1023:'], 1) + v9.CheckDefAndScriptFailure(lines, ['E1012:', 'E1023:'], 1) lines =<< trim END if true && 3 endif END - CheckDefAndScriptFailure(lines, ['E1012:', 'E1023:'], 2) + v9.CheckDefAndScriptFailure(lines, ['E1012:', 'E1023:'], 2) lines =<< trim END if 'yes' && true endif END - CheckDefAndScriptFailure(lines, ['E1012:', 'E1135: Using a String as a Bool'], 1) + v9.CheckDefAndScriptFailure(lines, ['E1012:', 'E1135: Using a String as a Bool'], 1) enddef " global variables to use for tests with the "any" type @@ -663,18 +663,18 @@ def Test_expr4_equal() assert_equal(true, OneFunc('abc') == TwoFunc('123')) endif END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) - CheckDefAndScriptFailure(["var x = 'a' == xxx"], ['E1001:', 'E121:'], 1) - CheckDefFailure(["var x = 'a' == "], 'E1097:', 3) - CheckScriptFailure(['vim9script', "var x = 'a' == "], 'E15:', 2) + v9.CheckDefAndScriptFailure(["var x = 'a' == xxx"], ['E1001:', 'E121:'], 1) + v9.CheckDefFailure(["var x = 'a' == "], 'E1097:', 3) + v9.CheckScriptFailure(['vim9script', "var x = 'a' == "], 'E15:', 2) - CheckDefExecAndScriptFailure(['var items: any', 'eval 1 + 1', 'eval 2 + 2', 'if items == []', 'endif'], ['E691:', 'E1072:'], 4) + v9.CheckDefExecAndScriptFailure(['var items: any', 'eval 1 + 1', 'eval 2 + 2', 'if items == []', 'endif'], ['E691:', 'E1072:'], 4) - CheckDefExecAndScriptFailure(['var x: any = "a"', 'echo x == true'], 'E1072: Cannot compare string with bool', 2) - CheckDefExecAndScriptFailure(["var x: any = true", 'echo x == ""'], 'E1072: Cannot compare bool with string', 2) - CheckDefExecAndScriptFailure(["var x: any = 99", 'echo x == true'], ['E1138', 'E1072:'], 2) - CheckDefExecAndScriptFailure(["var x: any = 'a'", 'echo x == 99'], ['E1030:', 'E1072:'], 2) + v9.CheckDefExecAndScriptFailure(['var x: any = "a"', 'echo x == true'], 'E1072: Cannot compare string with bool', 2) + v9.CheckDefExecAndScriptFailure(["var x: any = true", 'echo x == ""'], 'E1072: Cannot compare bool with string', 2) + v9.CheckDefExecAndScriptFailure(["var x: any = 99", 'echo x == true'], ['E1138', 'E1072:'], 2) + v9.CheckDefExecAndScriptFailure(["var x: any = 'a'", 'echo x == 99'], ['E1030:', 'E1072:'], 2) lines =<< trim END vim9script @@ -686,7 +686,7 @@ def Test_expr4_equal() g:notReached = true Compare() END - CheckScriptFailure(lines, 'E1030: Using a String as a Number: "3"') + v9.CheckScriptFailure(lines, 'E1030: Using a String as a Number: "3"') assert_true(g:notReached) if has('float') @@ -700,7 +700,7 @@ def Test_expr4_equal() g:notReached = true Compare() END - CheckScriptFailure(lines, 'E892: Using a String as a Float') + v9.CheckScriptFailure(lines, 'E892: Using a String as a Float') assert_true(g:notReached) endif @@ -709,30 +709,30 @@ enddef def Test_expr4_wrong_type() for op in ['>', '>=', '<', '<=', '=~', '!~'] - CheckDefExecAndScriptFailure([ + v9.CheckDefExecAndScriptFailure([ "var a: any = 'a'", 'var b: any = true', 'echo a ' .. op .. ' b'], 'E1072:', 3) endfor for op in ['>', '>=', '<', '<='] - CheckDefExecAndScriptFailure([ + v9.CheckDefExecAndScriptFailure([ "var n: any = 2", 'echo n ' .. op .. ' "3"'], ['E1030:', 'E1072:'], 2) endfor for op in ['=~', '!~'] - CheckDefExecAndScriptFailure([ + v9.CheckDefExecAndScriptFailure([ "var n: any = 2", 'echo n ' .. op .. ' "3"'], 'E1072:', 2) endfor - CheckDefAndScriptFailure([ + v9.CheckDefAndScriptFailure([ 'echo v:none == true'], 'E1072:', 1) - CheckDefAndScriptFailure([ + v9.CheckDefAndScriptFailure([ 'echo false >= true'], 'E1072:', 1) - CheckDefExecAndScriptFailure([ + v9.CheckDefExecAndScriptFailure([ "var n: any = v:none", 'echo n == true'], 'E1072:', 2) - CheckDefExecAndScriptFailure([ + v9.CheckDefExecAndScriptFailure([ "var n: any = v:none", 'echo n < true'], 'E1072:', 2) enddef @@ -819,7 +819,7 @@ def Test_expr4_notequal() assert_equal(true, function('g:Test_expr4_equal', [123]) != function('g:Test_expr4_is', [123])) assert_equal(true, function('g:Test_expr4_equal', [123]) != function('g:Test_expr4_equal', [999])) END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) enddef " test > comperator @@ -845,7 +845,7 @@ def Test_expr4_greater() assert_false(ff > 3.0) endif END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) enddef " test >= comperator @@ -866,7 +866,7 @@ def Test_expr4_greaterequal() assert_false(ff >= 3.0) endif END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) enddef " test < comperator @@ -888,7 +888,7 @@ def Test_expr4_smaller() assert_true(ff < 3.0) endif END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) enddef " test <= comperator @@ -913,7 +913,7 @@ def Test_expr4_smallerequal() assert_true(ff <= 3.0) endif END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) enddef " test =~ comperator @@ -930,7 +930,7 @@ def Test_expr4_match() assert_equal(true, 'abc' =~? 'ABC') set noignorecase END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) enddef " test !~ comperator @@ -942,7 +942,7 @@ def Test_expr4_nomatch() assert_equal(false, '2' !~ '[0-9]') END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) enddef " test is comperator @@ -960,7 +960,7 @@ def Test_expr4_is() var otherblob = myblob assert_true(myblob is otherblob) END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) enddef " test isnot comperator @@ -979,10 +979,10 @@ def Test_expr4_isnot() var otherblob = myblob assert_false(myblob isnot otherblob) END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) enddef -def RetVoid() +def g:RetVoid() var x = 1 enddef @@ -993,7 +993,7 @@ def Test_expr4_vim9script() < 1 assert_equal(true, name) END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) lines =<< trim END var name = 123 @@ -1001,14 +1001,14 @@ def Test_expr4_vim9script() != 123 assert_equal(false, name) END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) lines =<< trim END var name = 123 == 123 assert_equal(true, name) END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) lines =<< trim END var list = [1, 2, 3] @@ -1016,7 +1016,7 @@ def Test_expr4_vim9script() is list assert_equal(true, name) END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) lines =<< trim END var list = [1, 2, 3] @@ -1025,7 +1025,7 @@ def Test_expr4_vim9script() is list assert_equal(true, name) END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) lines =<< trim END var myblob = 0z1234 @@ -1033,140 +1033,140 @@ def Test_expr4_vim9script() isnot 0z11 assert_equal(true, name) END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) # spot check mismatching types lines =<< trim END echo '' == 0 END - CheckDefAndScriptFailure(lines, 'E1072:', 1) + v9.CheckDefAndScriptFailure(lines, 'E1072:', 1) lines =<< trim END echo v:true > v:false END - CheckDefAndScriptFailure(lines, 'Cannot compare bool with bool', 1) + v9.CheckDefAndScriptFailure(lines, 'Cannot compare bool with bool', 1) lines =<< trim END echo 123 is 123 END - CheckDefAndScriptFailure(lines, 'Cannot use "is" with number', 1) + v9.CheckDefAndScriptFailure(lines, 'Cannot use "is" with number', 1) # check missing white space lines =<< trim END echo 2>3 END - CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''>'' at ">3"', 1) + v9.CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''>'' at ">3"', 1) lines =<< trim END echo 2 >3 END - CheckDefAndScriptFailure(lines, 'E1004:', 1) + v9.CheckDefAndScriptFailure(lines, 'E1004:', 1) lines =<< trim END echo 2> 3 END - CheckDefAndScriptFailure(lines, 'E1004:', 1) + v9.CheckDefAndScriptFailure(lines, 'E1004:', 1) lines =<< trim END echo 2!=3 END - CheckDefAndScriptFailure(lines, 'E1004:', 1) + v9.CheckDefAndScriptFailure(lines, 'E1004:', 1) lines =<< trim END echo 2 !=3 END - CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''!='' at "!=3"', 1) + v9.CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''!='' at "!=3"', 1) lines =<< trim END echo 2!= 3 END - CheckDefAndScriptFailure(lines, 'E1004:', 1) + v9.CheckDefAndScriptFailure(lines, 'E1004:', 1) for op in ['==', '>', '>=', '<', '<=', '=~', '!~', 'is', 'isnot'] lines = ["echo 'aaa'", op .. "'bbb'", '# comment'] var msg = printf("E1004: White space required before and after '%s'", op) - CheckDefAndScriptFailure(lines, msg, 2) + v9.CheckDefAndScriptFailure(lines, msg, 2) endfor lines =<< trim END echo len('xxx') == 3 END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) lines =<< trim END var line = 'abc' echo line[1] =~ '\w' END - CheckDefAndScriptSuccess(lines) + v9.CheckDefAndScriptSuccess(lines) enddef func Test_expr4_fails() let msg = "White space required before and after '>'" - call CheckDefAndScriptFailure(["var x = 1>2"], msg, 1) - call CheckDefAndScriptFailure(["var x = 1 >2"], msg, 1) - call CheckDefAndScriptFailure(["var x = 1> 2"], msg, 1) + call v9.CheckDefAndScriptFailure(["var x = 1>2"], msg, 1) + call v9.CheckDefAndScriptFailure(["var x = 1 >2"], msg, 1) + call v9.CheckDefAndScriptFailure(["var x = 1> 2"], msg, 1) let msg = "White space required before and after '=='" - call CheckDefAndScriptFailure(["var x = 1==2"], msg, 1) - call CheckDefAndScriptFailure(["var x = 1 ==2"], msg, 1) - call CheckDefAndScriptFailure(["var x = 1== 2"], msg, 1) + call v9.CheckDefAndScriptFailure(["var x = 1==2"], msg, 1) + call v9.CheckDefAndScriptFailure(["var x = 1 ==2"], msg, 1) + call v9.CheckDefAndScriptFailure(["var x = 1== 2"], msg, 1) let msg = "White space required before and after 'is'" - call CheckDefAndScriptFailure(["var x = '1'is'2'"], msg, 1) - call CheckDefAndScriptFailure(["var x = '1' is'2'"], msg, 1) - call CheckDefAndScriptFailure(["var x = '1'is '2'"], msg, 1) + call v9.CheckDefAndScriptFailure(["var x = '1'is'2'"], msg, 1) + call v9.CheckDefAndScriptFailure(["var x = '1' is'2'"], msg, 1) + call v9.CheckDefAndScriptFailure(["var x = '1'is '2'"], msg, 1) let msg = "White space required before and after 'isnot'" - call CheckDefAndScriptFailure(["var x = '1'isnot'2'"], msg, 1) - call CheckDefAndScriptFailure(["var x = '1' isnot'2'"], msg, 1) - call CheckDefAndScriptFailure(["var x = '1'isnot '2'"], msg, 1) - - call CheckDefAndScriptFailure(["var x = 1 is# 2"], 'E15:', 1) - call CheckDefAndScriptFailure(["var x = 1 is? 2"], 'E15:', 1) - call CheckDefAndScriptFailure(["var x = 1 isnot# 2"], 'E15:', 1) - call CheckDefAndScriptFailure(["var x = 1 isnot? 2"], 'E15:', 1) - - call CheckDefAndScriptFailure(["var x = 1 == '2'"], 'Cannot compare number with string', 1) - call CheckDefAndScriptFailure(["var x = '1' == 2"], 'Cannot compare string with number', 1) - call CheckDefAndScriptFailure(["var x = 1 == RetVoid()"], 'Cannot compare number with void', 1) - call CheckDefAndScriptFailure(["var x = RetVoid() == 1"], 'Cannot compare void with number', 1) - - call CheckDefAndScriptFailure(["var x = true > false"], 'Cannot compare bool with bool', 1) - call CheckDefAndScriptFailure(["var x = true >= false"], 'Cannot compare bool with bool', 1) - call CheckDefAndScriptFailure(["var x = true < false"], 'Cannot compare bool with bool', 1) - call CheckDefAndScriptFailure(["var x = true <= false"], 'Cannot compare bool with bool', 1) - call CheckDefAndScriptFailure(["var x = true =~ false"], 'Cannot compare bool with bool', 1) - call CheckDefAndScriptFailure(["var x = true !~ false"], 'Cannot compare bool with bool', 1) - call CheckDefAndScriptFailure(["var x = true is false"], 'Cannot use "is" with bool', 1) - call CheckDefAndScriptFailure(["var x = true isnot false"], 'Cannot use "isnot" with bool', 1) - - call CheckDefAndScriptFailure(["var x = v:none is v:null"], 'Cannot use "is" with special', 1) - call CheckDefAndScriptFailure(["var x = v:none isnot v:null"], 'Cannot use "isnot" with special', 1) - call CheckDefAndScriptFailure(["var x = 123 is 123"], 'Cannot use "is" with number', 1) - call CheckDefAndScriptFailure(["var x = 123 isnot 123"], 'Cannot use "isnot" with number', 1) + call v9.CheckDefAndScriptFailure(["var x = '1'isnot'2'"], msg, 1) + call v9.CheckDefAndScriptFailure(["var x = '1' isnot'2'"], msg, 1) + call v9.CheckDefAndScriptFailure(["var x = '1'isnot '2'"], msg, 1) + + call v9.CheckDefAndScriptFailure(["var x = 1 is# 2"], 'E15:', 1) + call v9.CheckDefAndScriptFailure(["var x = 1 is? 2"], 'E15:', 1) + call v9.CheckDefAndScriptFailure(["var x = 1 isnot# 2"], 'E15:', 1) + call v9.CheckDefAndScriptFailure(["var x = 1 isnot? 2"], 'E15:', 1) + + call v9.CheckDefAndScriptFailure(["var x = 1 == '2'"], 'Cannot compare number with string', 1) + call v9.CheckDefAndScriptFailure(["var x = '1' == 2"], 'Cannot compare string with number', 1) + call v9.CheckDefAndScriptFailure(["var x = 1 == g:RetVoid()"], 'Cannot compare number with void', 1) + call v9.CheckDefAndScriptFailure(["var x = g:RetVoid() == 1"], 'Cannot compare void with number', 1) + + call v9.CheckDefAndScriptFailure(["var x = true > false"], 'Cannot compare bool with bool', 1) + call v9.CheckDefAndScriptFailure(["var x = true >= false"], 'Cannot compare bool with bool', 1) + call v9.CheckDefAndScriptFailure(["var x = true < false"], 'Cannot compare bool with bool', 1) + call v9.CheckDefAndScriptFailure(["var x = true <= false"], 'Cannot compare bool with bool', 1) + call v9.CheckDefAndScriptFailure(["var x = true =~ false"], 'Cannot compare bool with bool', 1) + call v9.CheckDefAndScriptFailure(["var x = true !~ false"], 'Cannot compare bool with bool', 1) + call v9.CheckDefAndScriptFailure(["var x = true is false"], 'Cannot use "is" with bool', 1) + call v9.CheckDefAndScriptFailure(["var x = true isnot false"], 'Cannot use "isnot" with bool', 1) + + call v9.CheckDefAndScriptFailure(["var x = v:none is v:null"], 'Cannot use "is" with special', 1) + call v9.CheckDefAndScriptFailure(["var x = v:none isnot v:null"], 'Cannot use "isnot" with special', 1) + call v9.CheckDefAndScriptFailure(["var x = 123 is 123"], 'Cannot use "is" with number', 1) + call v9.CheckDefAndScriptFailure(["var x = 123 isnot 123"], 'Cannot use "isnot" with number', 1) if has('float') - call CheckDefAndScriptFailure(["var x = 1.3 is 1.3"], 'Cannot use "is" with float', 1) - call CheckDefAndScriptFailure(["var x = 1.3 isnot 1.3"], 'Cannot use "isnot" with float', 1) + call v9.CheckDefAndScriptFailure(["var x = 1.3 is 1.3"], 'Cannot use "is" with float', 1) + call v9.CheckDefAndScriptFailure(["var x = 1.3 isnot 1.3"], 'Cannot use "isnot" with float', 1) endif - call CheckDefAndScriptFailure(["var x = 0za1 > 0z34"], 'Cannot compare blob with blob', 1) - call CheckDefAndScriptFailure(["var x = 0za1 >= 0z34"], 'Cannot compare blob with blob', 1) - call CheckDefAndScriptFailure(["var x = 0za1 < 0z34"], 'Cannot compare blob with blob', 1) - call CheckDefAndScriptFailure(["var x = 0za1 <= 0z34"], 'Cannot compare blob with blob', 1) - call CheckDefAndScriptFailure(["var x = 0za1 =~ 0z34"], 'Cannot compare blob with blob', 1) - call CheckDefAndScriptFailure(["var x = 0za1 !~ 0z34"], 'Cannot compare blob with blob', 1) - - call CheckDefAndScriptFailure(["var x = [13] > [88]"], 'Cannot compare list with list', 1) - call CheckDefAndScriptFailure(["var x = [13] >= [88]"], 'Cannot compare list with list', 1) - call CheckDefAndScriptFailure(["var x = [13] < [88]"], 'Cannot compare list with list', 1) - call CheckDefAndScriptFailure(["var x = [13] <= [88]"], 'Cannot compare list with list', 1) - call CheckDefAndScriptFailure(["var x = [13] =~ [88]"], 'Cannot compare list with list', 1) - call CheckDefAndScriptFailure(["var x = [13] !~ [88]"], 'Cannot compare list with list', 1) - - call CheckDefAndScriptFailure(['var j: job', 'var chan: channel', 'var r = j == chan'], 'Cannot compare job with channel', 3) - call CheckDefAndScriptFailure(['var j: job', 'var x: list<any>', 'var r = j == x'], 'Cannot compare job with list', 3) - call CheckDefAndScriptFailure(['var j: job', 'var Xx: func', 'var r = j == Xx'], 'Cannot compare job with func', 3) - call CheckDefAndScriptFailure(['var j: job', 'var Xx: func', 'var r = j == Xx'], 'Cannot compare job with func', 3) + call v9.CheckDefAndScriptFailure(["var x = 0za1 > 0z34"], 'Cannot compare blob with blob', 1) + call v9.CheckDefAndScriptFailure(["var x = 0za1 >= 0z34"], 'Cannot compare blob with blob', 1) + call v9.CheckDefAndScriptFailure(["var x = 0za1 < 0z34"], 'Cannot compare blob with blob', 1) + call v9.CheckDefAndScriptFailure(["var x = 0za1 <= 0z34"], 'Cannot compare blob with blob', 1) + call v9.CheckDefAndScriptFailure(["var x = 0za1 =~ 0z34"], 'Cannot compare blob with blob', 1) + call v9.CheckDefAndScriptFailure(["var x = 0za1 !~ 0z34"], 'Cannot compare blob with blob', 1) + + call v9.CheckDefAndScriptFailure(["var x = [13] > [88]"], 'Cannot compare list with list', 1) |