source check.vim
source vim9.vim
+" TODO: remove later
+let v:disallow_let = 1
let g:cond = v:false
def FuncOne(arg: number): string
assert_equal('one', 0z1234 ? 'one' : 'two')
assert_equal('one', [0] ? 'one' : 'two')
assert_equal('one', #{x: 0} ? 'one' : 'two')
- let var = 1
- assert_equal('one', var ? 'one' : 'two')
+ var name = 1
+ assert_equal('one', name ? 'one' : 'two')
assert_equal('two', false ? 'one' : 'two')
assert_equal('two', 0 ? 'one' : 'two')
assert_equal('two', 0z ? 'one' : 'two')
assert_equal('two', [] ? 'one' : 'two')
assert_equal('two', {} ? 'one' : 'two')
- var = 0
- assert_equal('two', var ? 'one' : 'two')
+ name = 0
+ assert_equal('two', name ? 'one' : 'two')
# with constant condition expression is not evaluated
assert_equal('one', 1 ? 'one' : xxx)
- let Some: func = function('len')
- let Other: func = function('winnr')
- let Res: func = g:atrue ? Some : Other
+ var Some: func = function('len')
+ var Other: func = function('winnr')
+ var Res: func = g:atrue ? Some : Other
assert_equal(function('len'), Res)
- let RetOne: func(string): number = function('len')
- let RetTwo: func(string): number = function('winnr')
- let RetThat: func = g:atrue ? RetOne : RetTwo
+ var RetOne: func(string): number = function('len')
+ var RetTwo: func(string): number = function('winnr')
+ var RetThat: func = g:atrue ? RetOne : RetTwo
assert_equal(function('len'), RetThat)
- let X = FuncOne
- let Y = FuncTwo
- let Z = g:cond ? FuncOne : FuncTwo
+ var X = FuncOne
+ var Y = FuncTwo
+ var Z = g:cond ? FuncOne : FuncTwo
assert_equal(123, Z(3))
enddef
def Test_expr1_vimscript()
# check line continuation
- let lines =<< trim END
+ var lines =<< trim END
vim9script
- let var = 1
+ var var = 1
? 'yes'
: 'no'
assert_equal('yes', var)
lines =<< trim END
vim9script
- let var = v:false
+ var var = v:false
? 'yes'
: 'no'
assert_equal('no', var)
lines =<< trim END
vim9script
- let var = v:false ?
+ var var = v:false ?
'yes' :
'no'
assert_equal('no', var)
# check white space
lines =<< trim END
vim9script
- let var = v:true?1:2
+ var var = v:true?1:2
END
CheckScriptFailure(lines, 'E1004:', 2)
lines =<< trim END
vim9script
- let var = v:true? 1 : 2
+ var var = v:true? 1 : 2
END
CheckScriptFailure(lines, 'E1004:', 2)
lines =<< trim END
vim9script
- let var = v:true ?1 : 2
+ var var = v:true ?1 : 2
END
CheckScriptFailure(lines, 'E1004:', 2)
lines =<< trim END
vim9script
- let var = v:true ? 1: 2
+ var var = v:true ? 1: 2
END
CheckScriptFailure(lines, 'E1004:', 2)
lines =<< trim END
vim9script
- let var = v:true ? 1 :2
+ var var = v:true ? 1 :2
END
CheckScriptFailure(lines, 'E1004:', 2)
enddef
func Test_expr1_fails()
- call CheckDefFailure(["let x = 1 ? 'one'"], "Missing ':' after '?'", 1)
+ call CheckDefFailure(["var x = 1 ? 'one'"], "Missing ':' after '?'", 1)
let msg = "White space required before and after '?'"
- 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)
+ call CheckDefFailure(["var x = 1? 'one' : 'two'"], msg, 1)
+ call CheckDefFailure(["var x = 1 ?'one' : 'two'"], msg, 1)
+ call CheckDefFailure(["var x = 1?'one' : 'two'"], msg, 1)
let msg = "White space required before and after ':'"
- 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)
+ call CheckDefFailure(["var x = 1 ? 'one': 'two'"], msg, 1)
+ call CheckDefFailure(["var x = 1 ? 'one' :'two'"], msg, 1)
+ call CheckDefFailure(["var 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',
+ \ 'var X = FuncOne',
+ \ 'var Y = FuncTwo',
+ \ 'var Z = g:cond ? FuncOne : FuncTwo',
\ 'Z()'], 'E119:', 4)
endfunc
def Test_expr2_vimscript()
# check line continuation
- let lines =<< trim END
+ var lines =<< trim END
vim9script
- let var = 0
+ var var = 0
|| 1
assert_equal(1, var)
END
lines =<< trim END
vim9script
- let var = v:false
+ var var = v:false
|| v:true
|| v:false
assert_equal(v:true, var)
lines =<< trim END
vim9script
- let var = v:false ||
+ var var = v:false ||
v:true ||
v:false
assert_equal(v:true, var)
# check white space
lines =<< trim END
vim9script
- let var = v:true||v:true
+ var var = v:true||v:true
END
CheckScriptFailure(lines, 'E1004:', 2)
lines =<< trim END
vim9script
- let var = v:true ||v:true
+ var var = v:true ||v:true
END
CheckScriptFailure(lines, 'E1004:', 2)
lines =<< trim END
vim9script
- let var = v:true|| v:true
+ var var = v:true|| v:true
END
CheckScriptFailure(lines, 'E1004:', 2)
func Test_expr2_fails()
let msg = "White space required before and after '||'"
- 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(["var x = 1||2"], msg, 1)
+ call CheckDefFailure(["var x = 1 ||2"], msg, 1)
+ call CheckDefFailure(["var x = 1|| 2"], msg, 1)
- call CheckDefFailure(["let x = 1 || xxx"], 'E1001:', 1)
+ call CheckDefFailure(["var x = 1 || xxx"], 'E1001:', 1)
endfunc
" test &&
def Test_expr3_vimscript()
# check line continuation
- let lines =<< trim END
+ var lines =<< trim END
vim9script
- let var = 0
+ var var = 0
&& 1
assert_equal(0, var)
END
lines =<< trim END
vim9script
- let var = v:true
+ var var = v:true
&& v:true
&& v:true
assert_equal(v:true, var)
lines =<< trim END
vim9script
- let var = v:true &&
+ var var = v:true &&
v:true &&
v:true
assert_equal(v:true, var)
# check white space
lines =<< trim END
vim9script
- let var = v:true&&v:true
+ var var = v:true&&v:true
END
CheckScriptFailure(lines, 'E1004:', 2)
lines =<< trim END
vim9script
- let var = v:true &&v:true
+ var var = v:true &&v:true
END
CheckScriptFailure(lines, 'E1004:', 2)
lines =<< trim END
vim9script
- let var = v:true&& v:true
+ var var = v:true&& v:true
END
CheckScriptFailure(lines, 'E1004:', 2)
func Test_expr3_fails()
let msg = "White space required before and after '&&'"
- 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(["var x = 1&&2"], msg, 1)
+ call CheckDefFailure(["var x = 1 &&2"], msg, 1)
+ call CheckDefFailure(["var x = 1&& 2"], msg, 1)
endfunc
" global variables to use for tests with the "any" type
" test == comperator
def Test_expr4_equal()
- let trueVar = true
- let falseVar = false
+ var trueVar = true
+ var falseVar = false
assert_equal(true, true == true)
assert_equal(false, true ==
false)
assert_equal(true, g:anone == v:none)
assert_equal(false, v:none == g:anull)
- let nr0 = 0
- let nr61 = 61
+ var nr0 = 0
+ var nr61 = 61
assert_equal(false, 2 == 0)
assert_equal(false, 2 == nr0)
assert_equal(true, 61 == 61)
assert_equal(false, 61 == g:anint)
if has('float')
- let ff = 0.3
+ var ff = 0.3
assert_equal(true, ff == 0.3)
assert_equal(false, 0.4 == ff)
assert_equal(true, 0.1 == g:afloat)
assert_equal(false, 'abc' ==# 'ABC')
set noignorecase
- CheckDefFailure(["let x = 'a' == xxx"], 'E1001:', 1)
- CheckDefExecFailure(['let items: any', 'eval 1', 'eval 2', 'if items == []', 'endif'], 'E691:', 4)
+ CheckDefFailure(["var x = 'a' == xxx"], 'E1001:', 1)
+ CheckDefExecFailure(['var items: any', 'eval 1', 'eval 2', 'if items == []', 'endif'], 'E691:', 4)
- let bb = 0z3f
+ var bb = 0z3f
assert_equal(true, 0z3f == bb)
assert_equal(false, bb == 0z4f)
assert_equal(true, g:ablob == 0z01ab)
assert_equal(false, function('g:Test_expr4_equal', [123]) == function('g:Test_expr4_is', [123]))
assert_equal(false, function('g:Test_expr4_equal', [123]) == function('g:Test_expr4_equal', [999]))
- let OneFunc: func
- let TwoFunc: func
+ var OneFunc: func
+ var TwoFunc: func
OneFunc = function('len')
TwoFunc = function('len')
assert_equal(true, OneFunc('abc') == TwoFunc('123'))
" test != comperator
def Test_expr4_notequal()
- let trueVar = true
- let falseVar = false
+ var trueVar = true
+ var falseVar = false
assert_equal(false, true != true)
assert_equal(true, true !=
false)
assert_equal(false, g:anone != v:none)
assert_equal(true, v:none != g:anull)
- let nr55 = 55
- let nr0 = 55
+ var nr55 = 55
+ var nr0 = 55
assert_equal(true, 2 != 0)
assert_equal(true, 2 != nr0)
assert_equal(false, 55 != 55)
assert_equal(true, 61 != g:anint)
if has('float')
- let ff = 0.3
+ var ff = 0.3
assert_equal(false, 0.3 != ff)
assert_equal(true, 0.4 != ff)
assert_equal(false, 0.1 != g:afloat)
assert_equal(true, 'abc' != 'ABC')
set noignorecase
- let bb = 0z3f
+ var bb = 0z3f
assert_equal(false, 0z3f != bb)
assert_equal(true, bb != 0z4f)
assert_equal(false, g:ablob != 0z01ab)
1)
assert_false(2 > 2)
assert_false(2 > 3)
- let nr2 = 2
+ var nr2 = 2
assert_true(nr2 > 0)
assert_true(nr2 >
1)
assert_false(nr2
> 3)
if has('float')
- let ff = 2.0
+ var ff = 2.0
assert_true(ff > 0.0)
assert_true(ff > 1.0)
assert_false(ff > 2.0)
assert_true(2 >=
2)
assert_false(2 >= 3)
- let nr2 = 2
+ var nr2 = 2
assert_true(nr2 >= 0)
assert_true(nr2 >= 2)
assert_false(nr2 >= 3)
if has('float')
- let ff = 2.0
+ var ff = 2.0
assert_true(ff >= 0.0)
assert_true(ff >= 2.0)
assert_false(ff >= 3.0)
2)
assert_true(2
< 3)
- let nr2 = 2
+ var nr2 = 2
assert_false(nr2 < 0)
assert_false(nr2 < 2)
assert_true(nr2 < 3)
if has('float')
- let ff = 2.0
+ var ff = 2.0
assert_false(ff < 0.0)
assert_false(ff < 2.0)
assert_true(ff < 3.0)
assert_true(2
<= 2)
assert_true(2 <= 3)
- let nr2 = 2
+ var nr2 = 2
assert_false(nr2 <= 0)
assert_false(nr2 <= 1)
assert_true(nr2 <= 2)
assert_true(nr2 <= 3)
if has('float')
- let ff = 2.0
+ var ff = 2.0
assert_false(ff <= 0.0)
assert_false(ff <= 1.0)
assert_true(ff <= 2.0)
" test is comperator
def Test_expr4_is()
- let mylist = [2]
+ var mylist = [2]
assert_false(mylist is [2])
- let other = mylist
+ var other = mylist
assert_true(mylist is
other)
- let myblob = 0z1234
+ var myblob = 0z1234
assert_false(myblob
is 0z1234)
- let otherblob = myblob
+ var otherblob = myblob
assert_true(myblob is otherblob)
enddef
" test isnot comperator
def Test_expr4_isnot()
- let mylist = [2]
+ var mylist = [2]
assert_true('2' isnot '0')
assert_true(mylist isnot [2])
- let other = mylist
+ var other = mylist
assert_false(mylist isnot
other)
- let myblob = 0z1234
+ var myblob = 0z1234
assert_true(myblob
isnot 0z1234)
- let otherblob = myblob
+ var otherblob = myblob
assert_false(myblob isnot otherblob)
enddef
def RetVoid()
- let x = 1
+ var x = 1
enddef
def Test_expr4_vim9script()
# check line continuation
- let lines =<< trim END
+ var lines =<< trim END
vim9script
- let var = 0
+ var var = 0
< 1
assert_equal(true, var)
END
lines =<< trim END
vim9script
- let var = 123
+ var var = 123
!= 123
assert_equal(false, var)
END
lines =<< trim END
vim9script
- let var = 123 ==
+ var var = 123 ==
123
assert_equal(true, var)
END
lines =<< trim END
vim9script
- let list = [1, 2, 3]
- let var = list
+ var list = [1, 2, 3]
+ var name = list
is list
- assert_equal(true, var)
+ assert_equal(true, name)
END
CheckScriptSuccess(lines)
lines =<< trim END
vim9script
- let myblob = 0z1234
- let var = myblob
+ var myblob = 0z1234
+ var name = myblob
isnot 0z11
- assert_equal(true, var)
+ assert_equal(true, name)
END
CheckScriptSuccess(lines)
lines =<< trim END
vim9script
- let line = 'abc'
+ var line = 'abc'
echo line[1] =~ '\w'
END
CheckScriptSuccess(lines)
func Test_expr4_fails()
let msg = "White space required before and after '>'"
- 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(["var x = 1>2"], msg, 1)
+ call CheckDefFailure(["var x = 1 >2"], msg, 1)
+ call CheckDefFailure(["var x = 1> 2"], msg, 1)
let msg = "White space required before and after '=='"
- 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(["var x = 1==2"], msg, 1)
+ call CheckDefFailure(["var x = 1 ==2"], msg, 1)
+ call CheckDefFailure(["var x = 1== 2"], msg, 1)
let msg = "White space required before and after 'is'"
- 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)
+ call CheckDefFailure(["var x = '1'is'2'"], msg, 1)
+ call CheckDefFailure(["var x = '1' is'2'"], msg, 1)
+ call CheckDefFailure(["var x = '1'is '2'"], msg, 1)
let msg = "White space required before and after 'isnot'"
- 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:', 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', 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', 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', 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)
+ call CheckDefFailure(["var x = '1'isnot'2'"], msg, 1)
+ call CheckDefFailure(["var x = '1' isnot'2'"], msg, 1)
+ call CheckDefFailure(["var x = '1'isnot '2'"], msg, 1)
+
+ call CheckDefFailure(["var x = 1 is# 2"], 'E15:', 1)
+ call CheckDefFailure(["var x = 1 is? 2"], 'E15:', 1)
+ call CheckDefFailure(["var x = 1 isnot# 2"], 'E15:', 1)
+ call CheckDefFailure(["var x = 1 isnot? 2"], 'E15:', 1)
+
+ call CheckDefFailure(["var x = 1 == '2'"], 'Cannot compare number with string', 1)
+ call CheckDefFailure(["var x = '1' == 2"], 'Cannot compare string with number', 1)
+ call CheckDefFailure(["var x = 1 == RetVoid()"], 'Cannot compare number with void', 1)
+ call CheckDefFailure(["var x = RetVoid() == 1"], 'Cannot compare void with number', 1)
+
+ call CheckDefFailure(["var x = true > false"], 'Cannot compare bool with bool', 1)
+ call CheckDefFailure(["var x = true >= false"], 'Cannot compare bool with bool', 1)
+ call CheckDefFailure(["var x = true < false"], 'Cannot compare bool with bool', 1)
+ call CheckDefFailure(["var x = true <= false"], 'Cannot compare bool with bool', 1)
+ call CheckDefFailure(["var x = true =~ false"], 'Cannot compare bool with bool', 1)
+ call CheckDefFailure(["var x = true !~ false"], 'Cannot compare bool with bool', 1)
+ call CheckDefFailure(["var x = true is false"], 'Cannot use "is" with bool', 1)
+ call CheckDefFailure(["var x = true isnot false"], 'Cannot use "isnot" with bool', 1)
+
+ call CheckDefFailure(["var x = v:none is v:null"], 'Cannot use "is" with special', 1)
+ call CheckDefFailure(["var x = v:none isnot v:null"], 'Cannot use "isnot" with special', 1)
+ call CheckDefFailure(["var x = 123 is 123"], 'Cannot use "is" with number', 1)
+ call CheckDefFailure(["var 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', 1)
- call CheckDefFailure(["let x = 1.3 isnot 1.3"], 'Cannot use "isnot" with float', 1)
+ call CheckDefFailure(["var x = 1.3 is 1.3"], 'Cannot use "is" with float', 1)
+ call CheckDefFailure(["var x = 1.3 isnot 1.3"], 'Cannot use "isnot" with float', 1)
endif
- 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', 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', 3)
- call CheckDefFailure(['let j: job', 'let x: list<any>', '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)
+ call CheckDefFailure(["var x = 0za1 > 0z34"], 'Cannot compare blob with blob', 1)
+ call CheckDefFailure(["var x = 0za1 >= 0z34"], 'Cannot compare blob with blob', 1)
+ call CheckDefFailure(["var x = 0za1 < 0z34"], 'Cannot compare blob with blob', 1)
+ call CheckDefFailure(["var x = 0za1 <= 0z34"], 'Cannot compare blob with blob', 1)
+ call CheckDefFailure(["var x = 0za1 =~ 0z34"], 'Cannot compare blob with blob', 1)
+ call CheckDefFailure(["var x = 0za1 !~ 0z34"], 'Cannot compare blob with blob', 1)
+
+ call CheckDefFailure(["var x = [13] > [88]"], 'Cannot compare list with list', 1)
+ call CheckDefFailure(["var x = [13] >= [88]"], 'Cannot compare list with list', 1)
+ call CheckDefFailure(["var x = [13] < [88]"], 'Cannot compare list with list', 1)
+ call CheckDefFailure(["var x = [13] <= [88]"], 'Cannot compare list with list', 1)
+ call CheckDefFailure(["var x = [13] =~ [88]"], 'Cannot compare list with list', 1)
+ call CheckDefFailure(["var x = [13] !~ [88]"], 'Cannot compare list with list', 1)
+
+ call CheckDefFailure(['var j: job', 'var chan: channel', 'var r = j == chan'], 'Cannot compare job with channel', 3)
+ call CheckDefFailure(['var j: job', 'var x: list<any>', 'var r = j == x'], 'Cannot compare job with list', 3)
+ call CheckDefFailure(['var j: job', 'var Xx: func', 'var r = j == Xx'], 'Cannot compare job with func', 3)
+ call CheckDefFailure(['var j: job', 'var Xx: func', 'var r = j == Xx'], 'Cannot compare job with func', 3)
endfunc
" test addition, subtraction, concatenation
assert_equal(0z01ab01ab, g:ablob + g:ablob)
# concatenate non-constant to constant
- let save_path = &path
+ var save_path = &path
&path = 'b'
assert_equal('ab', 'a' .. &path)
&path = save_path
def Test_expr5_vim9script()
# check line continuation
- let lines =<< trim END
+ var lines =<< trim END
vim9script
- let var = 11
+ var var = 11
+ 77
- 22
assert_equal(66, var)
lines =<< trim END
vim9script
- let var = 11 +
+ var var = 11 +
77 -
22
assert_equal(66, var)
lines =<< trim END
vim9script
- let var = 'one'
+ var var = 'one'
.. 'two'
assert_equal('onetwo', var)
END
if !has('channel')
MissingFeature 'float'
else
- let lines =<< trim END
+ var lines =<< trim END
vim9script
echo 'a' .. test_null_job()
END
func Test_expr5_fails()
let msg = "White space required before and after '+'"
- 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(["var x = 1+2"], msg, 1)
+ call CheckDefFailure(["var x = 1 +2"], msg, 1)
+ call CheckDefFailure(["var x = 1+ 2"], msg, 1)
let msg = "White space required before and after '-'"
- 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(["var x = 1-2"], msg, 1)
+ call CheckDefFailure(["var x = 1 -2"], msg, 1)
+ call CheckDefFailure(["var x = 1- 2"], msg, 1)
let msg = "White space required before and after '..'"
- 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', 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', 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(["var x = '1'..'2'"], msg, 1)
+ call CheckDefFailure(["var x = '1' ..'2'"], msg, 1)
+ call CheckDefFailure(["var x = '1'.. '2'"], msg, 1)
+
+ call CheckDefFailure(["var x = 0z1122 + 33"], 'E1051', 1)
+ call CheckDefFailure(["var x = 0z1122 + [3]"], 'E1051', 1)
+ call CheckDefFailure(["var x = 0z1122 + 'asd'"], 'E1051', 1)
+ call CheckDefFailure(["var x = 33 + 0z1122"], 'E1051', 1)
+ call CheckDefFailure(["var x = [3] + 0z1122"], 'E1051', 1)
+ call CheckDefFailure(["var x = 'asdf' + 0z1122"], 'E1051', 1)
+ call CheckDefFailure(["var x = 6 + xxx"], 'E1001', 1)
+
+ call CheckDefFailure(["var x = 'a' .. [1]"], 'E1105', 1)
+ call CheckDefFailure(["var x = 'a' .. #{a: 1}"], 'E1105', 1)
+ call CheckDefFailure(["var x = 'a' .. test_void()"], 'E1105', 1)
+ call CheckDefFailure(["var x = 'a' .. 0z32"], 'E1105', 1)
+ call CheckDefFailure(["var x = 'a' .. function('len')"], 'E1105', 1)
+ call CheckDefFailure(["var x = 'a' .. function('len', ['a'])"], 'E1105', 1)
endfunc
func Test_expr5_fails_channel()
CheckFeature channel
- call CheckDefFailure(["let x = 'a' .. test_null_job()"], 'E1105', 1)
- call CheckDefFailure(["let x = 'a' .. test_null_channel()"], 'E1105', 1)
+ call CheckDefFailure(["var x = 'a' .. test_null_job()"], 'E1105', 1)
+ call CheckDefFailure(["var x = 'a' .. test_null_channel()"], 'E1105', 1)
endfunc
" test multiply, divide, modulo
assert_equal(4, 6 * 4 / 6)
- let x = [2]
- let y = [3]
+ var x = [2]
+ var y = [3]
assert_equal(5, x[0] + y[0])
assert_equal(6, x[0] * y[0])
if has('float')
- let xf = [2.0]
- let yf = [3.0]
+ var xf = [2.0]
+ var yf = [3.0]
assert_equal(5.0, xf[0]
+ yf[0])
assert_equal(6.0, xf[0]
* yf[0])
endif
- CheckDefFailure(["let x = 6 * xxx"], 'E1001', 1)
+ CheckDefFailure(["var x = 6 * xxx"], 'E1001', 1)
enddef
def Test_expr6_vim9script()
# check line continuation
- let lines =<< trim END
+ var lines =<< trim END
vim9script
- let var = 11
+ var var = 11
* 22
/ 3
assert_equal(80, var)
lines =<< trim END
vim9script
- let var = 25
+ var var = 25
% 10
assert_equal(5, var)
END
lines =<< trim END
vim9script
- let var = 11 *
+ var var = 11 *
22 /
3
assert_equal(80, var)
func Test_expr6_fails()
let msg = "White space required before and after '*'"
- 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(["var x = 1*2"], msg, 1)
+ call CheckDefFailure(["var x = 1 *2"], msg, 1)
+ call CheckDefFailure(["var x = 1* 2"], msg, 1)
let msg = "White space required before and after '/'"
- 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(["var x = 1/2"], msg, 1)
+ call CheckDefFailure(["var x = 1 /2"], msg, 1)
+ call CheckDefFailure(["var x = 1/ 2"], msg, 1)
let msg = "White space required before and after '%'"
- 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(["var x = 1%2"], msg, 1)
+ call CheckDefFailure(["var x = 1 %2"], msg, 1)
+ call CheckDefFailure(["var x = 1% 2"], msg, 1)
- 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(["var x = '1' * '2'"], 'E1036:', 1)
+ call CheckDefFailure(["var x = '1' / '2'"], 'E1036:', 1)
+ call CheckDefFailure(["var x = '1' % '2'"], 'E1035:', 1)
- 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(["var x = 0z01 * 0z12"], 'E1036:', 1)
+ call CheckDefFailure(["var x = 0z01 / 0z12"], 'E1036:', 1)
+ call CheckDefFailure(["var x = 0z01 % 0z12"], 'E1035:', 1)
- 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(["var x = [1] * [2]"], 'E1036:', 1)
+ call CheckDefFailure(["var x = [1] / [2]"], 'E1036:', 1)
+ call CheckDefFailure(["var x = [1] % [2]"], 'E1035:', 1)
- 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(["var x = #{one: 1} * #{two: 2}"], 'E1036:', 1)
+ call CheckDefFailure(["var x = #{one: 1} / #{two: 2}"], 'E1036:', 1)
+ call CheckDefFailure(["var x = #{one: 1} % #{two: 2}"], 'E1035:', 1)
- call CheckDefFailure(["let x = 0xff[1]"], 'E1107:', 1)
+ call CheckDefFailure(["var x = 0xff[1]"], 'E1107:', 1)
if has('float')
- call CheckDefFailure(["let x = 0.7[1]"], 'E1107:', 1)
+ call CheckDefFailure(["var x = 0.7[1]"], 'E1107:', 1)
endif
endfunc
func Test_expr6_float_fails()
CheckFeature float
- call CheckDefFailure(["let x = 1.0 % 2"], 'E1035:', 1)
+ call CheckDefFailure(["var x = 1.0 % 2"], 'E1035:', 1)
endfunc
" define here to use old style parsing
" type casts
def Test_expr7t()
- let ls: list<string> = ['a', <string>g:string_empty]
- let ln: list<number> = [<number>g:anint, <number>g:thefour]
- let nr = <number>234
+ var ls: list<string> = ['a', <string>g:string_empty]
+ var ln: list<number> = [<number>g:anint, <number>g:thefour]
+ var nr = <number>234
assert_equal(234, nr)
- CheckDefFailure(["let x = <nr>123"], 'E1010:', 1)
- CheckDefFailure(["let x = <number >123"], 'E1068:', 1)
- CheckDefFailure(["let x = <number 123"], 'E1104:', 1)
+ CheckDefFailure(["var x = <nr>123"], 'E1010:', 1)
+ CheckDefFailure(["var x = <number >123"], 'E1068:', 1)
+ CheckDefFailure(["var x = <number 123"], 'E1104:', 1)
enddef
" test low level expression
assert_equal(g:blob_one, 0z01)
assert_equal(g:blob_long, 0z0102.0304)
- CheckDefFailure(["let x = 0z123"], 'E973:', 1)
+ CheckDefFailure(["var x = 0z123"], 'E973:', 1)
enddef
def Test_expr7_string()
assert_equal(g:string_long, "abcdefghijklm")
assert_equal(g:string_special, "ab\ncd\ref\ekk")
- CheckDefFailure(['let x = "abc'], 'E114:', 1)
- CheckDefFailure(["let x = 'abc"], 'E115:', 1)
+ CheckDefFailure(['var x = "abc'], 'E114:', 1)
+ CheckDefFailure(["var x = 'abc"], 'E115:', 1)
enddef
def Test_expr7_vimvar()
- let old: list<string> = v:oldfiles
- let compl: dict<any> = v:completed_item
+ var old: list<string> = v:oldfiles
+ var compl: dict<any> = v:completed_item
- CheckDefFailure(["let old: list<number> = v:oldfiles"], 'E1012: Type mismatch; expected list<number> but got list<string>', 1)
+ CheckDefFailure(["var old: list<number> = v:oldfiles"], 'E1012: Type mismatch; expected list<number> but got list<string>', 1)
new
exec "normal! afoo fo\<C-N>\<Esc>"
- CheckDefExecFailure(["let old: dict<number> = v:completed_item"], 'E1012: Type mismatch; expected dict<number> but got dict<string>', 1)
+ CheckDefExecFailure(["var old: dict<number> = v:completed_item"], 'E1012: Type mismatch; expected dict<number> but got dict<string>', 1)
bwipe!
enddef
enddef
def Test_expr7_special_vim9script()
- let lines =<< trim END
+ var lines =<< trim END
vim9script
- let t = true
- let f = false
+ var t = true
+ var f = false
assert_equal(v:true, true)
assert_equal(true, t)
assert_equal(v:false, false)
assert_equal(g:list_empty, [])
assert_equal(g:list_empty, [ ])
- let numbers: list<number> = [1, 2, 3]
+ var numbers: list<number> = [1, 2, 3]
numbers = [1]
numbers = []
- let strings: list<string> = ['a', 'b', 'c']
+ var strings: list<string> = ['a', 'b', 'c']
strings = ['x']
strings = []
- let mixed: list<any> = [1, 'b', false,]
+ var mixed: list<any> = [1, 'b', false,]
assert_equal(g:list_mixed, mixed)
assert_equal('b', mixed[1])
2] [3,
4]
- let llstring: list<list<string>> = [['text'], []]
+ var llstring: list<list<string>> = [['text'], []]
llstring = [[], ['text']]
llstring = [[], []]
g:rangelist = range(3)
CheckDefExecFailure(["var x: list<string> = g:rangelist"], 'E1012: Type mismatch; expected list<string> but got list<number>', 1)
- CheckDefFailure(["let x = 1234[3]"], 'E1107:', 1)
- CheckDefExecFailure(["let x = g:anint[3]"], 'E1062:', 1)
+ CheckDefFailure(["var x = 1234[3]"], 'E1107:', 1)
+ CheckDefExecFailure(["var x = g:anint[3]"], 'E1062:', 1)
- CheckDefFailure(["let x = g:list_mixed[xxx]"], 'E1001:', 1)
+ CheckDefFailure(["var x = g:list_mixed[xxx]"], 'E1001:', 1)
- CheckDefFailure(["let x = [1,2,3]"], 'E1069:', 1)
- CheckDefFailure(["let x = [1 ,2, 3]"], 'E1068:', 1)
+ CheckDefFailure(["var x = [1,2,3]"], 'E1069:', 1)
+ CheckDefFailure(["var x = [1 ,2, 3]"], 'E1068:', 1)
- CheckDefExecFailure(["echo 1", "let x = [][0]", "echo 3"], 'E684:', 2)
+ CheckDefExecFailure(["echo 1", "var x = [][0]", "echo 3"], 'E684:', 2)
- CheckDefExecFailure(["let x = g:list_mixed['xx']"], 'E1012:', 1)
- CheckDefFailure(["let x = g:list_mixed["], 'E1097:', 2)
- CheckDefFailure(["let x = g:list_mixed[0"], 'E1097:', 2)
- CheckDefExecFailure(["let x = g:list_empty[3]"], 'E684:', 1)
- CheckDefExecFailure(["let l: list<number> = [234, 'x']"], 'E1012:', 1)
- CheckDefExecFailure(["let l: list<number> = ['x', 234]"], 'E1012:', 1)
- CheckDefExecFailure(["let l: list<string> = [234, 'x']"], 'E1012:', 1)
- CheckDefExecFailure(["let l: list<string> = ['x', 123]"], 'E1012:', 1)
+ CheckDefExecFailure(["var x = g:list_mixed['xx']"], 'E1012:', 1)
+ CheckDefFailure(["var x = g:list_mixed["], 'E1097:', 2)
+ CheckDefFailure(["var x = g:list_mixed[0"], 'E1097:', 2)
+ CheckDefExecFailure(["var x = g:list_empty[3]"], 'E684:', 1)
+ CheckDefExecFailure(["var l: list<number> = [234, 'x']"], 'E1012:', 1)
+ CheckDefExecFailure(["var l: list<number> = ['x', 234]"], 'E1012:', 1)
+ CheckDefExecFailure(["var l: list<string> = [234, 'x']"], 'E1012:', 1)
+ CheckDefExecFailure(["var l: list<string> = ['x', 123]"], 'E1012:', 1)
enddef
def Test_expr7_list_vim9script()
- let lines =<< trim END
+ var lines =<< trim END
vim9script
- let l = [
+ var l = [
11,
22,
]
lines =<< trim END
vim9script
- let l = [11,
+ var l = [11,
22]
assert_equal([11, 22], l)
END
lines =<< trim END
vim9script
- let l = [11,22]
+ var l = [11,22]
END
CheckScriptFailure(lines, 'E1069:', 2)
lines =<< trim END
vim9script
- let l = [11 , 22]
+ var l = [11 , 22]
END
CheckScriptFailure(lines, 'E1068:', 2)
lines =<< trim END
vim9script
- let l: list<number> = [234, 'x']
+ var l: list<number> = [234, 'x']
END
CheckScriptFailure(lines, 'E1012:', 2)
lines =<< trim END
vim9script
- let l: list<number> = ['x', 234]
+ var l: list<number> = ['x', 234]
END
CheckScriptFailure(lines, 'E1012:', 2)
lines =<< trim END
vim9script
- let l: list<string> = ['x', 234]
+ var l: list<string> = ['x', 234]
END
CheckScriptFailure(lines, 'E1012:', 2)
lines =<< trim END
vim9script
- let l: list<string> = [234, 'x']
+ var l: list<string> = [234, 'x']
END
CheckScriptFailure(lines, 'E1012:', 2)
enddef
enddef
def Test_expr7_lambda()
- let La = { -> 'result'}
+ var La = { -> 'result'}
assert_equal('result', La())
assert_equal([1, 3, 5], [1, 2, 3]->map({key, val -> key + val}))
# line continuation inside lambda with "cond ? expr : expr" works
- let ll = range(3)
+ var ll = range(3)
map(ll, {k, v -> v % 2 ? {
'111': 111 } : {}
})
})
assert_equal([111, 222, 111], ll)
- let dl = [{'key': 0}, {'key': 22}]->filter({ _, v -> v['key'] })
+ var dl = [{'key': 0}, {'key': 22}]->filter({ _, v -> v['key'] })
assert_equal([{'key': 22}], dl)
dl = [{'key': 12}, {'foo': 34}]
CheckDefFailure(["filter([1, 2], {k,v -> 1})"], 'E1069:', 1)
# error is in first line of the lambda
- CheckDefFailure(["let L = {a -> a + b}"], 'E1001:', 0)
+ CheckDefFailure(["var L = {a -> a + b}"], 'E1001:', 0)
assert_equal('xxxyyy', 'xxx'->{a, b -> a .. b}('yyy'))
- CheckDefExecFailure(["let s = 'asdf'->{a -> a}('x')"],
+ CheckDefExecFailure(["var s = 'asdf'->{a -> a}('x')"],
'E1106: One argument too many')
- CheckDefExecFailure(["let s = 'asdf'->{a -> a}('x', 'y')"],
+ CheckDefExecFailure(["var s = 'asdf'->{a -> a}('x', 'y')"],
'E1106: 2 arguments too many')
CheckDefFailure(["echo 'asdf'->{a -> a}(x)"], 'E1001:', 1)
enddef
def Test_expr7_lambda_vim9script()
- let lines =<< trim END
+ var lines =<< trim END
vim9script
- let v = 10->{a ->
+ var v = 10->{a ->
a
+ 2
}()
enddef
def Test_epxr7_funcref()
- let lines =<< trim END
+ var lines =<< trim END
def RetNumber(): number
return 123
enddef
- let FuncRef = RetNumber
+ var FuncRef = RetNumber
assert_equal(123, FuncRef())
END
CheckDefAndScriptSuccess(lines)
assert_equal(g:dict_empty, {})
assert_equal(g:dict_empty, { })
assert_equal(g:dict_one, {'one': 1})
- let key = 'one'
- let val = 1
+ var key = 'one'
+ var val = 1
assert_equal(g:dict_one, {key: val})
- let numbers: dict<number> = #{a: 1, b: 2, c: 3}
+ var numbers: dict<number> = #{a: 1, b: 2, c: 3}
numbers = #{a: 1}
numbers = #{}
- let strings: dict<string> = #{a: 'a', b: 'b', c: 'c'}
+ var strings: dict<string> = #{a: 'a', b: 'b', c: 'c'}
strings = #{a: 'x'}
strings = #{}
- let mixed: dict<any> = #{a: 'a', b: 42}
+ var mixed: dict<any> = #{a: 'a', b: 42}
mixed = #{a: 'x'}
mixed = #{a: 234}
mixed = #{}
- let dictlist: dict<list<string>> = #{absent: [], present: ['hi']}
+ var dictlist: dict<list<string>> = #{absent: [], present: ['hi']}
dictlist = #{absent: ['hi'], present: []}
dictlist = #{absent: [], present: []}
- let dictdict: dict<dict<string>> = #{one: #{a: 'text'}, two: #{}}
+ var dictdict: dict<dict<string>> = #{one: #{a: 'text'}, two: #{}}
dictdict = #{one: #{}, two: #{a: 'text'}}
dictdict = #{one: #{}, two: #{}}
- CheckDefFailure(["let x = #{a:8}"], 'E1069:', 1)
- CheckDefFailure(["let x = #{a : 8}"], 'E1068:', 1)
- CheckDefFailure(["let x = #{a :8}"], 'E1068:', 1)
- CheckDefFailure(["let x = #{a: 8 , b: 9}"], 'E1068:', 1)
-
- CheckDefFailure(["let x = #{8: 8}"], 'E1014:', 1)
- CheckDefFailure(["let x = #{xxx}"], 'E720:', 1)
- CheckDefFailure(["let x = #{xxx: 1", "let y = 2"], 'E722:', 2)
- CheckDefFailure(["let x = #{xxx: 1,"], 'E723:', 2)
- CheckDefFailure(["let x = {'a': xxx}"], 'E1001:', 1)
- CheckDefFailure(["let x = {xxx: 8}"], 'E1001:', 1)
- CheckDefFailure(["let x = #{a: 1, a: 2}"], 'E721:', 1)
- CheckDefFailure(["let x = #"], 'E1015:', 1)
- CheckDefExecFailure(["let x = g:anint.member"], 'E715:', 1)
- CheckDefExecFailure(["let x = g:dict_empty.member"], 'E716:', 1)
-
- CheckDefExecFailure(['let x: dict<number> = #{a: 234, b: "1"}'], 'E1012:', 1)
- CheckDefExecFailure(['let x: dict<number> = #{a: "x", b: 134}'], 'E1012:', 1)
- CheckDefExecFailure(['let x: dict<string> = #{a: 234, b: "1"}'], 'E1012:', 1)
- CheckDefExecFailure(['let x: dict<string> = #{a: "x", b: 134}'], 'E1012:', 1)
+ CheckDefFailure(["var x = #{a:8}"], 'E1069:', 1)
+ CheckDefFailure(["var x = #{a : 8}"], 'E1068:', 1)
+ CheckDefFailure(["var x = #{a :8}"], 'E1068:', 1)
+ CheckDefFailure(["var x = #{a: 8 , b: 9}"], 'E1068:', 1)
+
+ CheckDefFailure(["var x = #{8: 8}"], 'E1014:', 1)
+ CheckDefFailure(["var x = #{xxx}"], 'E720:', 1)
+ CheckDefFailure(["var x = #{xxx: 1", "var y = 2"], 'E722:', 2)
+ CheckDefFailure(["var x = #{xxx: 1,"], 'E723:', 2)
+ CheckDefFailure(["var x = {'a': xxx}"], 'E1001:', 1)
+ CheckDefFailure(["var x = {xxx: 8}"], 'E1001:', 1)
+ CheckDefFailure(["var x = #{a: 1, a: 2}"], 'E721:', 1)
+ CheckDefFailure(["var x = #"], 'E1015:', 1)
+ CheckDefExecFailure(["var x = g:anint.member"], 'E715:', 1)
+ CheckDefExecFailure(["var x = g:dict_empty.member"], 'E716:', 1)
+
+ CheckDefExecFailure(['var x: dict<number> = #{a: 234, b: "1"}'], 'E1012:', 1)
+ CheckDefExecFailure(['var x: dict<number> = #{a: "x", b: 134}'], 'E1012:', 1)
+ CheckDefExecFailure(['var x: dict<string> = #{a: 234, b: "1"}'], 'E1012:', 1)
+ CheckDefExecFailure(['var x: dict<string> = #{a: "x", b: 134}'], 'E1012:', 1)
enddef
def Test_expr7_dict_vim9script()
- let lines =<< trim END
+ var lines =<< trim END
vim9script
- let d = {
+ var d = {
'one':
1,
'two': 2,
lines =<< trim END
vim9script
- let d = { "one": "one", "two": "two", }
+ var d = { "one": "one", "two": "two", }
assert_equal({'one': 'one', 'two': 'two'}, d)
END
CheckScriptSuccess(lines)
lines =<< trim END
vim9script
- let d = #{one: 1,
+ var d = #{one: 1,
two: 2,
}
assert_equal({'one': 1, 'two': 2}, d)
lines =<< trim END
vim9script
- let d = #{one:1, two: 2}
+ var d = #{one:1, two: 2}
END
CheckScriptFailure(lines, 'E1069:', 2)
lines =<< trim END
vim9script
- let d = #{one: 1,two: 2}
+ var d = #{one: 1,two: 2}
END
CheckScriptFailure(lines, 'E1069:', 2)
lines =<< trim END
vim9script
- let d = #{one : 1}
+ var d = #{one : 1}
END
CheckScriptFailure(lines, 'E1068:', 2)
lines =<< trim END
vim9script
- let d = #{one:1}
+ var d = #{one:1}
END
CheckScriptFailure(lines, 'E1069:', 2)
lines =<< trim END
vim9script
- let d = #{one: 1 , two: 2}
+ var d = #{one: 1 , two: 2}
END
CheckScriptFailure(lines, 'E1068:', 2)
lines =<< trim END
vim9script
- let l: dict<number> = #{a: 234, b: 'x'}
+ var l: dict<number> = #{a: 234, b: 'x'}
END
CheckScriptFailure(lines, 'E1012:', 2)
lines =<< trim END
vim9script
- let l: dict<number> = #{a: 'x', b: 234}
+ var l: dict<number> = #{a: 'x', b: 234}
END
CheckScriptFailure(lines, 'E1012:', 2)
lines =<< trim END
vim9script
- let l: dict<string> = #{a: 'x', b: 234}
+ var l: dict<string> = #{a: 'x', b: 234}
END
CheckScriptFailure(lines, 'E1012:', 2)
lines =<< trim END
vim9script
- let l: dict<string> = #{a: 234, b: 'x'}
+ var l: dict<string> = #{a: 234, b: 'x'}
END
CheckScriptFailure(lines, 'E1012:', 2)
enddef
def Test_expr_member()
assert_equal(1, g:dict_one.one)
- let d: dict<number> = g:dict_one
+ var d: dict<number> = g:dict_one
assert_equal(1, d['one'])
assert_equal(1, d[
'one'
assert_equal('one', #{one: 'one'}.one)
assert_equal('one', #{one: 'one'}[g:oneString])
- CheckDefFailure(["let x = g:dict_one.#$!"], 'E1002:', 1)
- CheckDefExecFailure(["let d: dict<any>", "echo d['a']"], 'E716:', 2)
- CheckDefExecFailure(["let d: dict<number>", "d = g:list_empty"], 'E1012: Type mismatch; expected dict<number> but got list<unknown>', 2)
+ CheckDefFailure(["var x = g:dict_one.#$!"], 'E1002:', 1)
+ CheckDefExecFailure(["var d: dict<any>", "echo d['a']"], 'E716:', 2)
+ CheckDefExecFailure(["var d: dict<number>", "d = g:list_empty"], 'E1012: Type mismatch; expected dict<number> but got list<unknown>', 2)
enddef
def Test_expr7_any_index_slice()
- let lines =<< trim END
+ var lines =<< trim END
# getting the one member should clear the list only after getting the item
assert_equal('bbb', ['aaa', 'bbb', 'ccc'][1])
enddef
def Test_expr_member_vim9script()
- let lines =<< trim END
+ var lines =<< trim END
vim9script
- let d = #{one:
+ var d = #{one:
'one',
two: 'two',
1: 1,
lines =<< trim END
vim9script
- let l = [1,
+ var l = [1,
2,
3, 4
]
assert_equal('testvar', $TESTVAR)
assert_equal('', $ASDF_ASD_XXX)
- CheckDefFailure(["let x = $$$"], 'E1002:', 1)
+ CheckDefFailure(["var x = $$$"], 'E1002:', 1)
enddef
def Test_expr7_register()
@a = 'register a'
assert_equal('register a', @a)
- let fname = expand('%')
+ var fname = expand('%')
assert_equal(fname, @%)
feedkeys(":echo 'some'\<CR>", "xt")
enddef
def Test_expr7_parens_vim9script()
- let lines =<< trim END
+ var lines =<< trim END
vim9script
- let s = (
+ var s = (
'one'
..
'two'
def Test_expr7_negate()
assert_equal(-99, -99)
assert_equal(99, --99)
- let nr = 88
+ var nr = 88
assert_equal(-88, -nr)
assert_equal(88, --nr)
enddef
assert_equal(true, !range(5)->empty())
assert_equal([0, 1, 2], --3->range())
- CheckDefFailure(["let x = 'yes'->Echo"], 'E107:', 1)
+ CheckDefFailure(["var x = 'yes'->Echo"], 'E107:', 1)
CheckScriptFailure([
"vim9script",
- "let x = substitute ('x', 'x', 'x', 'x')"
+ "var x = substitute ('x', 'x', 'x', 'x')"
], 'E121:', 2)
- CheckDefFailure(["let Ref = function('len' [1, 2])"], 'E1123:', 1)
+ CheckDefFailure(["var Ref = function('len' [1, 2])"], 'E1123:', 1)
- let auto_lines =<< trim END
+ var auto_lines =<< trim END
def g:some#func(): string
return 'found'
enddef
END
mkdir('Xruntime/autoload', 'p')
writefile(auto_lines, 'Xruntime/autoload/some.vim')
- let save_rtp = &rtp
+ var save_rtp = &rtp
&rtp = getcwd() .. '/Xruntime,' .. &rtp
assert_equal('found', g:some#func())
assert_equal('found', some#func())
def Test_expr7_not()
- let lines =<< trim END
+ var lines =<< trim END
assert_equal(true, !'')
assert_equal(true, ![])
assert_equal(false, !'asdf')
enddef
func Test_expr7_fails()
- call CheckDefFailure(["let x = (12"], "E110:", 1)
+ call CheckDefFailure(["var x = (12"], "E110:", 1)
- 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(["var x = -'xx'"], "E1030:", 1)
+ call CheckDefFailure(["var x = +'xx'"], "E1030:", 1)
+ call CheckDefFailure(["var x = -0z12"], "E974:", 1)
+ call CheckDefExecFailure(["var x = -[8]"], "E39:", 1)
+ call CheckDefExecFailure(["var x = -{'a': 1}"], "E39:", 1)
- call CheckDefFailure(["let x = @"], "E1002:", 1)
- call CheckDefFailure(["let x = @<"], "E354:", 1)
+ call CheckDefFailure(["var x = @"], "E1002:", 1)
+ call CheckDefFailure(["var x = @<"], "E354:", 1)
- call CheckDefFailure(["let x = [1, 2"], "E697:", 2)
- call CheckDefFailure(["let x = [notfound]"], "E1001:", 1)
+ call CheckDefFailure(["var x = [1, 2"], "E697:", 2)
+ call CheckDefFailure(["var x = [notfound]"], "E1001:", 1)
- call CheckDefFailure(["let x = { -> 123) }"], "E451:", 1)
- call CheckDefFailure(["let x = 123->{x -> x + 5) }"], "E451:", 1)
+ call CheckDefFailure(["var x = { -> 123) }"], "E451:", 1)
+ call CheckDefFailure(["var x = 123->{x -> x + 5) }"], "E451:", 1)
- call CheckDefFailure(["let x = ¬exist"], 'E113:', 1)
+ call CheckDefFailure(["var x = ¬exist"], 'E113:', 1)
call CheckDefFailure(["&grepprg = [343]"], 'E1012:', 1)
call CheckDefExecFailure(["echo s:doesnt_exist"], 'E121:', 1)
call CheckDefFailure(["echo l:somevar"], 'E1075:', 1)
call CheckDefFailure(["echo x:somevar"], 'E1075:', 1)
- 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 CheckDefExecFailure(["var x = +g:astring"], 'E1030:', 1)
+ call CheckDefExecFailure(["var x = +g:ablob"], 'E974:', 1)
+ call CheckDefExecFailure(["var x = +g:alist"], 'E745:', 1)
+ call CheckDefExecFailure(["var x = +g:adict"], 'E728:', 1)
- call CheckDefFailure(["let x = ''", "let y = x.memb"], 'E715:', 2)
+ call CheckDefFailure(["var x = ''", "var y = x.memb"], 'E715:', 2)
call CheckDefFailure(["'yes'->", "Echo()"], 'E488: Trailing characters: ->', 1)
assert_equal('nothing', g:CallMe('nothing'))
# partial call
- let Part = function('g:CallMe')
+ var Part = function('g:CallMe')
assert_equal('yes', Part('yes'))
# funcref call, using list index
- let l = []
+ var l = []
g:Funcrefs[0](l, 2)
assert_equal([2], l)
assert_equal([2, 5, 8], l)
# dict member
- let d = #{key: 123}
+ var d = #{key: 123}
assert_equal(123, d.key)
enddef
def Test_expr7_string_subscript()
- let lines =<< trim END
- let text = 'abcdef'
+ var lines =<< trim END
+ var text = 'abcdef'
assert_equal('', text[-1])
assert_equal('a', text[0])
assert_equal('e', text[4])
enddef
def Test_expr7_list_subscript()
- let lines =<< trim END
- let list = [0, 1, 2, 3, 4]
+ var lines =<< trim END
+ var list = [0, 1, 2, 3, 4]
assert_equal(0, list[0])
assert_equal(4, list[4])
assert_equal(4, list[-1])
CheckDefSuccess(lines)
CheckScriptSuccess(['vim9script'] + lines)
- lines = ['let l = [0, 1, 2]', 'echo l[g:astring : g:theone]']
+ lines = ['var l = [0, 1, 2]', 'echo l[g:astring : g:theone]']
CheckDefExecFailure(lines, 'E1012:')
CheckScriptFailure(['vim9script'] + lines, 'E1030:', 3)
enddef
def Test_expr7_dict_subscript()
- let lines =<< trim END
+ var lines =<< trim END
vim9script
- let l = [#{lnum: 2}, #{lnum: 1}]
- let res = l[0].lnum > l[1].lnum
+ var l = [#{lnum: 2}, #{lnum: 1}]
+ var res = l[0].lnum > l[1].lnum
assert_true(res)
END
CheckScriptSuccess(lines)
enddef
def Test_expr7_subscript_linebreak()
- let range = range(
+ var range = range(
3)
- let l = range
+ var l = range
->map('string(v:key)')
assert_equal(['0', '1', '2'], l)
assert_equal('1', l[
1])
- let d = #{one: 33}
+ var d = #{one: 33}
assert_equal(33, d.
one)
enddef
assert_equal(['first', 'second', 'third', 'last'], getline(1, '$'))
bwipe!
- let bufnr = bufnr()
- let loclist = [#{bufnr: bufnr, lnum: 42, col: 17, text: 'wrong'}]
+ var bufnr = bufnr()
+ var loclist = [#{bufnr: bufnr, lnum: 42, col: 17, text: 'wrong'}]
loclist->setloclist(0)
assert_equal([#{bufnr: bufnr,
lnum: 42,
module: ''}
], getloclist(0))
- let result: bool = get(#{n: 0}, 'n', 0)
+ var result: bool = get(#{n: 0}, 'n', 0)
assert_equal(false, result)
enddef
func Test_expr7_trailing_fails()
- call CheckDefFailure(['let l = [2]', 'l->{l -> add(l, 8)}'], 'E107:', 2)
- call CheckDefFailure(['let l = [2]', 'l->{l -> add(l, 8)} ()'], 'E274:', 2)
+ call CheckDefFailure(['var l = [2]', 'l->{l -> add(l, 8)}'], 'E107:', 2)
+ call CheckDefFailure(['var l = [2]', 'l->{l -> add(l, 8)} ()'], 'E274:', 2)
endfunc
func Test_expr_fails()
- call CheckDefFailure(["let x = '1'is2"], 'E488:', 1)
- call CheckDefFailure(["let x = '1'isnot2"], 'E488:', 1)
+ call CheckDefFailure(["var x = '1'is2"], 'E488:', 1)
+ call CheckDefFailure(["var x = '1'isnot2"], 'E488:', 1)
call CheckDefFailure(["CallMe ('yes')"], 'E476:', 1)
call CheckScriptFailure(["CallMe ('yes')"], 'E492:', 1)
call CheckDefFailure(["CallMe2('yes' , 'no')"], 'E1068:', 1)
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(["var v:statusmsg = ''"], 'E1016: Cannot declare a v: variable:', 1)
+ call CheckDefFailure(["var asdf = v:nosuch"], 'E1001:', 1)
call CheckDefFailure(["echo len('asdf'"], 'E110:', 2)
call CheckDefFailure(["echo Func0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789()"], 'E1011:', 1)