summaryrefslogtreecommitdiffstats
path: root/src/testdir/test_vim9_expr.vim
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-01-29 21:45:34 +0000
committerBram Moolenaar <Bram@vim.org>2022-01-29 21:45:34 +0000
commit62aec93bfdb9e1b40d03a6d2e8e9511f8b1bdb2d (patch)
tree8f2962626c458f5ac5fa1f2ec46e79248683c81d /src/testdir/test_vim9_expr.vim
parent135e15251efd96c960e51e8ab31333c2d6887983 (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.vim1192
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)