mirror of
https://github.com/vim/vim.git
synced 2025-09-26 04:04:07 -04:00
patch 8.2.1744: Vim9: using ":const!" is weird
Problem: Vim9: using ":const!" is weird. Solution: Use "var" - "final" - "const" like Dart. "let" still works for now.
This commit is contained in:
@@ -12,30 +12,30 @@ let g:alist = [7]
|
||||
let g:astring = 'text'
|
||||
|
||||
def Test_assignment_bool()
|
||||
let bool1: bool = true
|
||||
var bool1: bool = true
|
||||
assert_equal(v:true, bool1)
|
||||
let bool2: bool = false
|
||||
var bool2: bool = false
|
||||
assert_equal(v:false, bool2)
|
||||
|
||||
let bool3: bool = 0
|
||||
var bool3: bool = 0
|
||||
assert_equal(false, bool3)
|
||||
let bool4: bool = 1
|
||||
var bool4: bool = 1
|
||||
assert_equal(true, bool4)
|
||||
|
||||
let bool5: bool = 'yes' && 'no'
|
||||
var bool5: bool = 'yes' && 'no'
|
||||
assert_equal(true, bool5)
|
||||
let bool6: bool = [] && 99
|
||||
var bool6: bool = [] && 99
|
||||
assert_equal(false, bool6)
|
||||
let bool7: bool = [] || #{a: 1} && 99
|
||||
var bool7: bool = [] || #{a: 1} && 99
|
||||
assert_equal(true, bool7)
|
||||
|
||||
let lines =<< trim END
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
def GetFlag(): bool
|
||||
let flag: bool = 1
|
||||
var flag: bool = 1
|
||||
return flag
|
||||
enddef
|
||||
let flag: bool = GetFlag()
|
||||
var flag: bool = GetFlag()
|
||||
assert_equal(true, flag)
|
||||
flag = 0
|
||||
assert_equal(false, flag)
|
||||
@@ -47,41 +47,42 @@ def Test_assignment_bool()
|
||||
assert_equal(false, flag)
|
||||
END
|
||||
CheckScriptSuccess(lines)
|
||||
CheckDefAndScriptFailure(['let x: bool = 2'], 'E1012:')
|
||||
CheckDefAndScriptFailure(['let x: bool = -1'], 'E1012:')
|
||||
CheckDefAndScriptFailure(['let x: bool = [1]'], 'E1012:')
|
||||
CheckDefAndScriptFailure(['let x: bool = {}'], 'E1012:')
|
||||
CheckDefAndScriptFailure(['let x: bool = "x"'], 'E1012:')
|
||||
CheckDefAndScriptFailure(['var x: bool = 2'], 'E1012:')
|
||||
CheckDefAndScriptFailure(['var x: bool = -1'], 'E1012:')
|
||||
CheckDefAndScriptFailure(['var x: bool = [1]'], 'E1012:')
|
||||
CheckDefAndScriptFailure(['var x: bool = {}'], 'E1012:')
|
||||
CheckDefAndScriptFailure(['var x: bool = "x"'], 'E1012:')
|
||||
enddef
|
||||
|
||||
def Test_syntax()
|
||||
let var = 234
|
||||
let other: list<string> = ['asdf']
|
||||
var var = 234
|
||||
var other: list<string> = ['asdf']
|
||||
enddef
|
||||
|
||||
def Test_assignment()
|
||||
CheckDefFailure(['let x:string'], 'E1069:')
|
||||
CheckDefFailure(['let x:string = "x"'], 'E1069:')
|
||||
CheckDefFailure(['let a:string = "x"'], 'E1069:')
|
||||
CheckDefFailure(['let lambda = {-> "lambda"}'], 'E704:')
|
||||
CheckDefFailure(['var x:string'], 'E1069:')
|
||||
CheckDefFailure(['var x:string = "x"'], 'E1069:')
|
||||
CheckDefFailure(['var a:string = "x"'], 'E1069:')
|
||||
CheckDefFailure(['var lambda = {-> "lambda"}'], 'E704:')
|
||||
CheckScriptFailure(['var x = "x"'], 'E1124:')
|
||||
|
||||
let nr: number = 1234
|
||||
CheckDefFailure(['let nr: number = "asdf"'], 'E1012:')
|
||||
var nr: number = 1234
|
||||
CheckDefFailure(['var nr: number = "asdf"'], 'E1012:')
|
||||
|
||||
let a: number = 6 #comment
|
||||
var a: number = 6 #comment
|
||||
assert_equal(6, a)
|
||||
|
||||
if has('channel')
|
||||
let chan1: channel
|
||||
let job1: job
|
||||
let job2: job = job_start('willfail')
|
||||
var chan1: channel
|
||||
var job1: job
|
||||
var job2: job = job_start('willfail')
|
||||
endif
|
||||
if has('float')
|
||||
let float1: float = 3.4
|
||||
var float1: float = 3.4
|
||||
endif
|
||||
let Funky1: func
|
||||
let Funky2: func = function('len')
|
||||
let Party2: func = funcref('g:Test_syntax')
|
||||
var Funky1: func
|
||||
var Funky2: func = function('len')
|
||||
var Party2: func = funcref('g:Test_syntax')
|
||||
|
||||
g:newvar = 'new' #comment
|
||||
assert_equal('new', g:newvar)
|
||||
@@ -97,7 +98,7 @@ def Test_assignment()
|
||||
assert_equal('foobar', $ENVVAR)
|
||||
$ENVVAR = ''
|
||||
|
||||
let lines =<< trim END
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
$ENVVAR = 'barfoo'
|
||||
assert_equal('barfoo', $ENVVAR)
|
||||
@@ -126,15 +127,15 @@ def Test_assignment()
|
||||
assert_equal(2, &ts)
|
||||
|
||||
if has('float')
|
||||
let f100: float = 100.0
|
||||
var f100: float = 100.0
|
||||
f100 /= 5
|
||||
assert_equal(20.0, f100)
|
||||
|
||||
let f200: float = 200.0
|
||||
var f200: float = 200.0
|
||||
f200 /= 5.0
|
||||
assert_equal(40.0, f200)
|
||||
|
||||
CheckDefFailure(['let nr: number = 200', 'nr /= 5.0'], 'E1012:')
|
||||
CheckDefFailure(['var nr: number = 200', 'nr /= 5.0'], 'E1012:')
|
||||
endif
|
||||
|
||||
lines =<< trim END
|
||||
@@ -163,11 +164,11 @@ def Test_assignment()
|
||||
CheckDefFailure(['&path += 3'], 'E1012:')
|
||||
CheckDefExecFailure(['&bs = "asdf"'], 'E474:')
|
||||
# test freeing ISN_STOREOPT
|
||||
CheckDefFailure(['&ts = 3', 'let asdf'], 'E1022:')
|
||||
CheckDefFailure(['&ts = 3', 'var asdf'], 'E1022:')
|
||||
&ts = 8
|
||||
|
||||
lines =<< trim END
|
||||
let save_TI = &t_TI
|
||||
var save_TI = &t_TI
|
||||
&t_TI = ''
|
||||
assert_equal('', &t_TI)
|
||||
&t_TI = 'xxx'
|
||||
@@ -179,8 +180,8 @@ def Test_assignment()
|
||||
CheckDefFailure(['&t_TI = 123'], 'E1012:')
|
||||
CheckScriptFailure(['vim9script', '&t_TI = 123'], 'E928:')
|
||||
|
||||
CheckDefFailure(['let s:var = 123'], 'E1101:')
|
||||
CheckDefFailure(['let s:var: number'], 'E1101:')
|
||||
CheckDefFailure(['var s:var = 123'], 'E1101:')
|
||||
CheckDefFailure(['var s:var: number'], 'E1101:')
|
||||
|
||||
lines =<< trim END
|
||||
vim9script
|
||||
@@ -217,20 +218,20 @@ def Test_assignment()
|
||||
|
||||
# this should not leak
|
||||
if 0
|
||||
let text =<< trim END
|
||||
var text =<< trim END
|
||||
some text
|
||||
END
|
||||
endif
|
||||
enddef
|
||||
|
||||
def Test_extend_list()
|
||||
let lines =<< trim END
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
let l: list<number>
|
||||
var l: list<number>
|
||||
l += [123]
|
||||
assert_equal([123], l)
|
||||
|
||||
let d: dict<number>
|
||||
var d: dict<number>
|
||||
d['one'] = 1
|
||||
assert_equal(#{one: 1}, d)
|
||||
END
|
||||
@@ -239,41 +240,41 @@ enddef
|
||||
|
||||
def Test_single_letter_vars()
|
||||
# single letter variables
|
||||
let a: number = 123
|
||||
var a: number = 123
|
||||
a = 123
|
||||
assert_equal(123, a)
|
||||
let b: number
|
||||
var b: number
|
||||
b = 123
|
||||
assert_equal(123, b)
|
||||
let g: number
|
||||
var g: number
|
||||
g = 123
|
||||
assert_equal(123, g)
|
||||
let s: number
|
||||
var s: number
|
||||
s = 123
|
||||
assert_equal(123, s)
|
||||
let t: number
|
||||
var t: number
|
||||
t = 123
|
||||
assert_equal(123, t)
|
||||
let v: number
|
||||
var v: number
|
||||
v = 123
|
||||
assert_equal(123, v)
|
||||
let w: number
|
||||
var w: number
|
||||
w = 123
|
||||
assert_equal(123, w)
|
||||
enddef
|
||||
|
||||
def Test_vim9_single_char_vars()
|
||||
let lines =<< trim END
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
|
||||
# single character variable declarations work
|
||||
let a: string
|
||||
let b: number
|
||||
let l: list<any>
|
||||
let s: string
|
||||
let t: number
|
||||
let v: number
|
||||
let w: number
|
||||
var a: string
|
||||
var b: number
|
||||
var l: list<any>
|
||||
var s: string
|
||||
var t: number
|
||||
var v: number
|
||||
var w: number
|
||||
|
||||
# script-local variables can be used without s: prefix
|
||||
a = 'script-a'
|
||||
@@ -298,14 +299,14 @@ def Test_vim9_single_char_vars()
|
||||
enddef
|
||||
|
||||
def Test_assignment_list()
|
||||
let list1: list<bool> = [false, true, false]
|
||||
let list2: list<number> = [1, 2, 3]
|
||||
let list3: list<string> = ['sdf', 'asdf']
|
||||
let list4: list<any> = ['yes', true, 1234]
|
||||
let list5: list<blob> = [0z01, 0z02]
|
||||
var list1: list<bool> = [false, true, false]
|
||||
var list2: list<number> = [1, 2, 3]
|
||||
var list3: list<string> = ['sdf', 'asdf']
|
||||
var list4: list<any> = ['yes', true, 1234]
|
||||
var list5: list<blob> = [0z01, 0z02]
|
||||
|
||||
let listS: list<string> = []
|
||||
let listN: list<number> = []
|
||||
var listS: list<string> = []
|
||||
var listN: list<number> = []
|
||||
|
||||
assert_equal([1, 2, 3], list2)
|
||||
list2[-1] = 99
|
||||
@@ -320,19 +321,19 @@ def Test_assignment_list()
|
||||
list3 += ['end']
|
||||
assert_equal(['sdf', 'asdf', 'end'], list3)
|
||||
|
||||
CheckDefExecFailure(['let ll = [1, 2, 3]', 'll[-4] = 6'], 'E684:')
|
||||
CheckDefExecFailure(['let [v1, v2] = [1, 2]'], 'E1092:')
|
||||
CheckDefExecFailure(['var ll = [1, 2, 3]', 'll[-4] = 6'], 'E684:')
|
||||
CheckDefExecFailure(['var [v1, v2] = [1, 2]'], 'E1092:')
|
||||
|
||||
# type becomes list<any>
|
||||
let somelist = rand() > 0 ? [1, 2, 3] : ['a', 'b', 'c']
|
||||
var somelist = rand() > 0 ? [1, 2, 3] : ['a', 'b', 'c']
|
||||
enddef
|
||||
|
||||
def Test_assignment_list_vim9script()
|
||||
let lines =<< trim END
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
let v1: number
|
||||
let v2: number
|
||||
let v3: number
|
||||
var v1: number
|
||||
var v2: number
|
||||
var v3: number
|
||||
[v1, v2, v3] = [1, 2, 3]
|
||||
assert_equal([1, 2, 3], [v1, v2, v3])
|
||||
END
|
||||
@@ -340,27 +341,27 @@ def Test_assignment_list_vim9script()
|
||||
enddef
|
||||
|
||||
def Test_assignment_dict()
|
||||
let dict1: dict<bool> = #{one: false, two: true}
|
||||
let dict2: dict<number> = #{one: 1, two: 2}
|
||||
let dict3: dict<string> = #{key: 'value'}
|
||||
let dict4: dict<any> = #{one: 1, two: '2'}
|
||||
let dict5: dict<blob> = #{one: 0z01, two: 0z02}
|
||||
var dict1: dict<bool> = #{one: false, two: true}
|
||||
var dict2: dict<number> = #{one: 1, two: 2}
|
||||
var dict3: dict<string> = #{key: 'value'}
|
||||
var dict4: dict<any> = #{one: 1, two: '2'}
|
||||
var dict5: dict<blob> = #{one: 0z01, two: 0z02}
|
||||
|
||||
# overwrite
|
||||
dict3['key'] = 'another'
|
||||
|
||||
# empty key can be used
|
||||
let dd = {}
|
||||
var dd = {}
|
||||
dd[""] = 6
|
||||
assert_equal({'': 6}, dd)
|
||||
|
||||
# type becomes dict<any>
|
||||
let somedict = rand() > 0 ? #{a: 1, b: 2} : #{a: 'a', b: 'b'}
|
||||
var somedict = rand() > 0 ? #{a: 1, b: 2} : #{a: 'a', b: 'b'}
|
||||
|
||||
# assignment to script-local dict
|
||||
let lines =<< trim END
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
let test: dict<any> = {}
|
||||
var test: dict<any> = {}
|
||||
def FillDict(): dict<any>
|
||||
test['a'] = 43
|
||||
return test
|
||||
@@ -371,7 +372,7 @@ def Test_assignment_dict()
|
||||
|
||||
lines =<< trim END
|
||||
vim9script
|
||||
let test: dict<any>
|
||||
var test: dict<any>
|
||||
def FillDict(): dict<any>
|
||||
test['a'] = 43
|
||||
return test
|
||||
@@ -408,7 +409,7 @@ enddef
|
||||
def Test_assignment_local()
|
||||
# Test in a separated file in order not to the current buffer/window/tab is
|
||||
# changed.
|
||||
let script_lines: list<string> =<< trim END
|
||||
var script_lines: list<string> =<< trim END
|
||||
let b:existing = 'yes'
|
||||
let w:existing = 'yes'
|
||||
let t:existing = 'yes'
|
||||
@@ -446,37 +447,37 @@ enddef
|
||||
def Test_assignment_default()
|
||||
|
||||
# Test default values.
|
||||
let thebool: bool
|
||||
var thebool: bool
|
||||
assert_equal(v:false, thebool)
|
||||
|
||||
let thenumber: number
|
||||
var thenumber: number
|
||||
assert_equal(0, thenumber)
|
||||
|
||||
if has('float')
|
||||
let thefloat: float
|
||||
var thefloat: float
|
||||
assert_equal(0.0, thefloat)
|
||||
endif
|
||||
|
||||
let thestring: string
|
||||
var thestring: string
|
||||
assert_equal('', thestring)
|
||||
|
||||
let theblob: blob
|
||||
var theblob: blob
|
||||
assert_equal(0z, theblob)
|
||||
|
||||
let Thefunc: func
|
||||
var Thefunc: func
|
||||
assert_equal(test_null_function(), Thefunc)
|
||||
|
||||
let thelist: list<any>
|
||||
var thelist: list<any>
|
||||
assert_equal([], thelist)
|
||||
|
||||
let thedict: dict<any>
|
||||
var thedict: dict<any>
|
||||
assert_equal({}, thedict)
|
||||
|
||||
if has('channel')
|
||||
let thejob: job
|
||||
var thejob: job
|
||||
assert_equal(test_null_job(), thejob)
|
||||
|
||||
let thechannel: channel
|
||||
var thechannel: channel
|
||||
assert_equal(test_null_channel(), thechannel)
|
||||
|
||||
if has('unix') && executable('cat')
|
||||
@@ -487,14 +488,14 @@ def Test_assignment_default()
|
||||
endif
|
||||
endif
|
||||
|
||||
let nr = 1234 | nr = 5678
|
||||
var nr = 1234 | nr = 5678
|
||||
assert_equal(5678, nr)
|
||||
enddef
|
||||
|
||||
def Test_assignment_var_list()
|
||||
let v1: string
|
||||
let v2: string
|
||||
let vrem: list<string>
|
||||
var v1: string
|
||||
var v2: string
|
||||
var vrem: list<string>
|
||||
[v1] = ['aaa']
|
||||
assert_equal('aaa', v1)
|
||||
|
||||
@@ -519,18 +520,18 @@ def Test_assignment_var_list()
|
||||
enddef
|
||||
|
||||
def Test_assignment_vim9script()
|
||||
let lines =<< trim END
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
def Func(): list<number>
|
||||
return [1, 2]
|
||||
enddef
|
||||
let var1: number
|
||||
let var2: number
|
||||
var var1: number
|
||||
var var2: number
|
||||
[var1, var2] =
|
||||
Func()
|
||||
assert_equal(1, var1)
|
||||
assert_equal(2, var2)
|
||||
let ll =
|
||||
var ll =
|
||||
Func()
|
||||
assert_equal([1, 2], ll)
|
||||
|
||||
@@ -551,15 +552,15 @@ def Test_assignment_vim9script()
|
||||
assert_equal('plus', @+)
|
||||
endif
|
||||
|
||||
let a: number = 123
|
||||
var a: number = 123
|
||||
assert_equal(123, a)
|
||||
let s: string = 'yes'
|
||||
var s: string = 'yes'
|
||||
assert_equal('yes', s)
|
||||
let b: number = 42
|
||||
var b: number = 42
|
||||
assert_equal(42, b)
|
||||
let w: number = 43
|
||||
var w: number = 43
|
||||
assert_equal(43, w)
|
||||
let t: number = 44
|
||||
var t: number = 44
|
||||
assert_equal(44, t)
|
||||
END
|
||||
CheckScriptSuccess(lines)
|
||||
@@ -571,80 +572,80 @@ def Mess(): string
|
||||
enddef
|
||||
|
||||
def Test_assignment_failure()
|
||||
CheckDefFailure(['let var=234'], 'E1004:')
|
||||
CheckDefFailure(['let var =234'], 'E1004:')
|
||||
CheckDefFailure(['let var= 234'], 'E1004:')
|
||||
CheckDefFailure(['var var=234'], 'E1004:')
|
||||
CheckDefFailure(['var var =234'], 'E1004:')
|
||||
CheckDefFailure(['var var= 234'], 'E1004:')
|
||||
|
||||
CheckScriptFailure(['vim9script', 'let var=234'], 'E1004:')
|
||||
CheckScriptFailure(['vim9script', 'let var=234'], "before and after '='")
|
||||
CheckScriptFailure(['vim9script', 'let var =234'], 'E1004:')
|
||||
CheckScriptFailure(['vim9script', 'let var= 234'], 'E1004:')
|
||||
CheckScriptFailure(['vim9script', 'let var = 234', 'var+=234'], 'E1004:')
|
||||
CheckScriptFailure(['vim9script', 'let var = 234', 'var+=234'], "before and after '+='")
|
||||
CheckScriptFailure(['vim9script', 'let var = "x"', 'var..="y"'], 'E1004:')
|
||||
CheckScriptFailure(['vim9script', 'let var = "x"', 'var..="y"'], "before and after '..='")
|
||||
CheckScriptFailure(['vim9script', 'var var=234'], 'E1004:')
|
||||
CheckScriptFailure(['vim9script', 'var var=234'], "before and after '='")
|
||||
CheckScriptFailure(['vim9script', 'var var =234'], 'E1004:')
|
||||
CheckScriptFailure(['vim9script', 'var var= 234'], 'E1004:')
|
||||
CheckScriptFailure(['vim9script', 'var var = 234', 'var+=234'], 'E1004:')
|
||||
CheckScriptFailure(['vim9script', 'var var = 234', 'var+=234'], "before and after '+='")
|
||||
CheckScriptFailure(['vim9script', 'var var = "x"', 'var..="y"'], 'E1004:')
|
||||
CheckScriptFailure(['vim9script', 'var var = "x"', 'var..="y"'], "before and after '..='")
|
||||
|
||||
CheckDefFailure(['let true = 1'], 'E1034:')
|
||||
CheckDefFailure(['let false = 1'], 'E1034:')
|
||||
CheckDefFailure(['var true = 1'], 'E1034:')
|
||||
CheckDefFailure(['var false = 1'], 'E1034:')
|
||||
|
||||
CheckDefFailure(['[a; b; c] = g:list'], 'E452:')
|
||||
CheckDefExecFailure(['let a: number',
|
||||
CheckDefExecFailure(['var a: number',
|
||||
'[a] = test_null_list()'], 'E1093:')
|
||||
CheckDefExecFailure(['let a: number',
|
||||
CheckDefExecFailure(['var a: number',
|
||||
'[a] = []'], 'E1093:')
|
||||
CheckDefExecFailure(['let x: number',
|
||||
'let y: number',
|
||||
CheckDefExecFailure(['var x: number',
|
||||
'var y: number',
|
||||
'[x, y] = [1]'], 'E1093:')
|
||||
CheckDefExecFailure(['let x: number',
|
||||
'let y: number',
|
||||
'let z: list<number>',
|
||||
CheckDefExecFailure(['var x: number',
|
||||
'var y: number',
|
||||
'var z: list<number>',
|
||||
'[x, y; z] = [1]'], 'E1093:')
|
||||
|
||||
CheckDefFailure(['let somevar'], "E1022:")
|
||||
CheckDefFailure(['let &tabstop = 4'], 'E1052:')
|
||||
CheckDefFailure(['var somevar'], "E1022:")
|
||||
CheckDefFailure(['var &tabstop = 4'], 'E1052:')
|
||||
CheckDefFailure(['&g:option = 5'], 'E113:')
|
||||
CheckScriptFailure(['vim9script', 'let &tabstop = 4'], 'E1052:')
|
||||
CheckScriptFailure(['vim9script', 'var &tabstop = 4'], 'E1052:')
|
||||
|
||||
CheckDefFailure(['let $VAR = 5'], 'E1016: Cannot declare an environment variable:')
|
||||
CheckScriptFailure(['vim9script', 'let $ENV = "xxx"'], 'E1016:')
|
||||
CheckDefFailure(['var $VAR = 5'], 'E1016: Cannot declare an environment variable:')
|
||||
CheckScriptFailure(['vim9script', 'var $ENV = "xxx"'], 'E1016:')
|
||||
|
||||
if has('dnd')
|
||||
CheckDefFailure(['let @~ = 5'], 'E1066:')
|
||||
CheckDefFailure(['var @~ = 5'], 'E1066:')
|
||||
else
|
||||
CheckDefFailure(['let @~ = 5'], 'E354:')
|
||||
CheckDefFailure(['var @~ = 5'], 'E354:')
|
||||
CheckDefFailure(['@~ = 5'], 'E354:')
|
||||
endif
|
||||
CheckDefFailure(['let @a = 5'], 'E1066:')
|
||||
CheckDefFailure(['let @/ = "x"'], 'E1066:')
|
||||
CheckScriptFailure(['vim9script', 'let @a = "abc"'], 'E1066:')
|
||||
CheckDefFailure(['var @a = 5'], 'E1066:')
|
||||
CheckDefFailure(['var @/ = "x"'], 'E1066:')
|
||||
CheckScriptFailure(['vim9script', 'var @a = "abc"'], 'E1066:')
|
||||
|
||||
CheckDefFailure(['let g:var = 5'], 'E1016: Cannot declare a global variable:')
|
||||
CheckDefFailure(['let w:var = 5'], 'E1016: Cannot declare a window variable:')
|
||||
CheckDefFailure(['let b:var = 5'], 'E1016: Cannot declare a buffer variable:')
|
||||
CheckDefFailure(['let t:var = 5'], 'E1016: Cannot declare a tab variable:')
|
||||
CheckDefFailure(['var g:var = 5'], 'E1016: Cannot declare a global variable:')
|
||||
CheckDefFailure(['var w:var = 5'], 'E1016: Cannot declare a window variable:')
|
||||
CheckDefFailure(['var b:var = 5'], 'E1016: Cannot declare a buffer variable:')
|
||||
CheckDefFailure(['var t:var = 5'], 'E1016: Cannot declare a tab variable:')
|
||||
|
||||
CheckDefFailure(['let anr = 4', 'anr ..= "text"'], 'E1019:')
|
||||
CheckDefFailure(['let xnr += 4'], 'E1020:', 1)
|
||||
CheckScriptFailure(['vim9script', 'let xnr += 4'], 'E1020:')
|
||||
CheckDefFailure(["let xnr = xnr + 1"], 'E1001:', 1)
|
||||
CheckScriptFailure(['vim9script', 'let xnr = xnr + 4'], 'E121:')
|
||||
CheckDefFailure(['var anr = 4', 'anr ..= "text"'], 'E1019:')
|
||||
CheckDefFailure(['var xnr += 4'], 'E1020:', 1)
|
||||
CheckScriptFailure(['vim9script', 'var xnr += 4'], 'E1020:')
|
||||
CheckDefFailure(["var xnr = xnr + 1"], 'E1001:', 1)
|
||||
CheckScriptFailure(['vim9script', 'var xnr = xnr + 4'], 'E121:')
|
||||
|
||||
CheckScriptFailure(['vim9script', 'def Func()', 'let dummy = s:notfound', 'enddef', 'defcompile'], 'E1108:')
|
||||
CheckScriptFailure(['vim9script', 'def Func()', 'var dummy = s:notfound', 'enddef', 'defcompile'], 'E1108:')
|
||||
|
||||
CheckDefFailure(['let var: list<string> = [123]'], 'expected list<string> but got list<number>')
|
||||
CheckDefFailure(['let var: list<number> = ["xx"]'], 'expected list<number> but got list<string>')
|
||||
CheckDefFailure(['var var: list<string> = [123]'], 'expected list<string> but got list<number>')
|
||||
CheckDefFailure(['var var: list<number> = ["xx"]'], 'expected list<number> but got list<string>')
|
||||
|
||||
CheckDefFailure(['let var: dict<string> = #{key: 123}'], 'expected dict<string> but got dict<number>')
|
||||
CheckDefFailure(['let var: dict<number> = #{key: "xx"}'], 'expected dict<number> but got dict<string>')
|
||||
CheckDefFailure(['var var: dict<string> = #{key: 123}'], 'expected dict<string> but got dict<number>')
|
||||
CheckDefFailure(['var var: dict<number> = #{key: "xx"}'], 'expected dict<number> but got dict<string>')
|
||||
|
||||
CheckDefFailure(['let var = feedkeys("0")'], 'E1031:')
|
||||
CheckDefFailure(['let var: number = feedkeys("0")'], 'expected number but got void')
|
||||
CheckDefFailure(['var var = feedkeys("0")'], 'E1031:')
|
||||
CheckDefFailure(['var var: number = feedkeys("0")'], 'expected number but got void')
|
||||
|
||||
CheckDefFailure(['let var: dict <number>'], 'E1068:')
|
||||
CheckDefFailure(['let var: dict<number'], 'E1009:')
|
||||
CheckDefFailure(['var var: dict <number>'], 'E1068:')
|
||||
CheckDefFailure(['var var: dict<number'], 'E1009:')
|
||||
|
||||
assert_fails('s/^/\=Mess()/n', 'E794:')
|
||||
CheckDefFailure(['let var: dict<number'], 'E1009:')
|
||||
CheckDefFailure(['var var: dict<number'], 'E1009:')
|
||||
|
||||
CheckDefFailure(['w:foo: number = 10'],
|
||||
'E488: Trailing characters: : number = 1')
|
||||
@@ -657,7 +658,7 @@ def Test_assignment_failure()
|
||||
enddef
|
||||
|
||||
def Test_assign_list()
|
||||
let l: list<string> = []
|
||||
var l: list<string> = []
|
||||
l[0] = 'value'
|
||||
assert_equal('value', l[0])
|
||||
|
||||
@@ -667,7 +668,7 @@ def Test_assign_list()
|
||||
assert_equal('asdf', l[-1])
|
||||
assert_equal('value', l[-2])
|
||||
|
||||
let nrl: list<number> = []
|
||||
var nrl: list<number> = []
|
||||
for i in range(5)
|
||||
nrl[i] = i
|
||||
endfor
|
||||
@@ -675,7 +676,7 @@ def Test_assign_list()
|
||||
enddef
|
||||
|
||||
def Test_assign_dict()
|
||||
let d: dict<string> = {}
|
||||
var d: dict<string> = {}
|
||||
d['key'] = 'value'
|
||||
assert_equal('value', d['key'])
|
||||
|
||||
@@ -683,7 +684,7 @@ def Test_assign_dict()
|
||||
assert_equal('qwerty', d[123])
|
||||
assert_equal('qwerty', d['123'])
|
||||
|
||||
let nrd: dict<number> = {}
|
||||
var nrd: dict<number> = {}
|
||||
for i in range(3)
|
||||
nrd[i] = i
|
||||
endfor
|
||||
@@ -691,12 +692,12 @@ def Test_assign_dict()
|
||||
enddef
|
||||
|
||||
def Test_assign_dict_unknown_type()
|
||||
let lines =<< trim END
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
let mylist = []
|
||||
var mylist = []
|
||||
mylist += [#{one: 'one'}]
|
||||
def Func()
|
||||
let dd = mylist[0]
|
||||
var dd = mylist[0]
|
||||
assert_equal('one', dd.one)
|
||||
enddef
|
||||
Func()
|
||||
@@ -706,10 +707,10 @@ def Test_assign_dict_unknown_type()
|
||||
# doesn't work yet
|
||||
#lines =<< trim END
|
||||
# vim9script
|
||||
# let mylist = [[]]
|
||||
# var mylist = [[]]
|
||||
# mylist[0] += [#{one: 'one'}]
|
||||
# def Func()
|
||||
# let dd = mylist[0][0]
|
||||
# var dd = mylist[0][0]
|
||||
# assert_equal('one', dd.one)
|
||||
# enddef
|
||||
# Func()
|
||||
@@ -719,13 +720,13 @@ enddef
|
||||
|
||||
def Test_assign_lambda()
|
||||
# check if assign a lambda to a variable which type is func or any.
|
||||
let lines =<< trim END
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
let FuncRef = {->123}
|
||||
var FuncRef = {->123}
|
||||
assert_equal(123, FuncRef())
|
||||
let FuncRef_Func: func = {->123}
|
||||
var FuncRef_Func: func = {->123}
|
||||
assert_equal(123, FuncRef_Func())
|
||||
let FuncRef_Any: any = {->123}
|
||||
var FuncRef_Any: any = {->123}
|
||||
assert_equal(123, FuncRef_Any())
|
||||
END
|
||||
CheckScriptSuccess(lines)
|
||||
|
Reference in New Issue
Block a user