forked from aniani/vim
patch 8.2.1766: Vim9: Some tests are still using :let
Problem: Vim9: Some tests are still using :let. Solution: Change the last few declarations to use :var.
This commit is contained in:
@@ -88,7 +88,7 @@ def Test_call_ufunc_count()
|
||||
enddef
|
||||
|
||||
def MyVarargs(arg: string, ...rest: list<string>): string
|
||||
let res = arg
|
||||
var res = arg
|
||||
for s in rest
|
||||
res ..= ',' .. s
|
||||
endfor
|
||||
@@ -160,7 +160,7 @@ func Test_call_default_args_from_func()
|
||||
endfunc
|
||||
|
||||
def Test_nested_global_function()
|
||||
let lines =<< trim END
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
def Outer()
|
||||
def g:Inner(): string
|
||||
@@ -209,7 +209,7 @@ def Test_nested_global_function()
|
||||
enddef
|
||||
|
||||
def Test_global_local_function()
|
||||
let lines =<< trim END
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
def g:Func(): string
|
||||
return 'global'
|
||||
@@ -233,13 +233,13 @@ def Test_global_local_function()
|
||||
enddef
|
||||
|
||||
def Test_local_function_shadows_global()
|
||||
let lines =<< trim END
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
def g:Gfunc(): string
|
||||
return 'global'
|
||||
enddef
|
||||
def AnotherFunc(): number
|
||||
let Gfunc = function('len')
|
||||
var Gfunc = function('len')
|
||||
return Gfunc('testing')
|
||||
enddef
|
||||
g:Gfunc()->assert_equal('global')
|
||||
@@ -272,7 +272,7 @@ def Test_call_wrong_args()
|
||||
CheckDefFailure(['bufnr(xxx)'], 'E1001:')
|
||||
CheckScriptFailure(['def Func(Ref: func(s: string))'], 'E475:')
|
||||
|
||||
let lines =<< trim END
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
def Func(s: string)
|
||||
echo s
|
||||
@@ -292,7 +292,7 @@ def Test_call_wrong_args()
|
||||
defcompile
|
||||
END
|
||||
writefile(lines, 'Xscript')
|
||||
let didCatch = false
|
||||
var didCatch = false
|
||||
try
|
||||
source Xscript
|
||||
catch
|
||||
@@ -328,7 +328,7 @@ enddef
|
||||
|
||||
" Default arg and varargs
|
||||
def MyDefVarargs(one: string, two = 'foo', ...rest: list<string>): string
|
||||
let res = one .. ',' .. two
|
||||
var res = one .. ',' .. two
|
||||
for s in rest
|
||||
res ..= ',' .. s
|
||||
endfor
|
||||
@@ -345,7 +345,7 @@ def Test_call_def_varargs()
|
||||
CheckDefFailure(['MyDefVarargs("one", "two", 123)'],
|
||||
'E1013: Argument 3: type mismatch, expected string but got number')
|
||||
|
||||
let lines =<< trim END
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
def Func(...l: list<string>)
|
||||
echo l
|
||||
@@ -410,7 +410,7 @@ def Test_call_def_varargs()
|
||||
enddef
|
||||
|
||||
def Test_call_call()
|
||||
let l = [3, 2, 1]
|
||||
var l = [3, 2, 1]
|
||||
call('reverse', [l])
|
||||
l->assert_equal([1, 2, 3])
|
||||
enddef
|
||||
@@ -430,30 +430,30 @@ def FuncVarargs(...arg: list<string>): string
|
||||
enddef
|
||||
|
||||
def Test_func_type_varargs()
|
||||
let RefDefArg: func(?string)
|
||||
var RefDefArg: func(?string)
|
||||
RefDefArg = FuncOneDefArg
|
||||
RefDefArg()
|
||||
s:value->assert_equal('text')
|
||||
RefDefArg('some')
|
||||
s:value->assert_equal('some')
|
||||
|
||||
let RefDef2Arg: func(?number, ?string): string
|
||||
var RefDef2Arg: func(?number, ?string): string
|
||||
RefDef2Arg = FuncTwoDefArg
|
||||
RefDef2Arg()->assert_equal('123text')
|
||||
RefDef2Arg(99)->assert_equal('99text')
|
||||
RefDef2Arg(77, 'some')->assert_equal('77some')
|
||||
|
||||
CheckDefFailure(['let RefWrong: func(string?)'], 'E1010:')
|
||||
CheckDefFailure(['let RefWrong: func(?string, string)'], 'E1007:')
|
||||
CheckDefFailure(['var RefWrong: func(string?)'], 'E1010:')
|
||||
CheckDefFailure(['var RefWrong: func(?string, string)'], 'E1007:')
|
||||
|
||||
let RefVarargs: func(...list<string>): string
|
||||
var RefVarargs: func(...list<string>): string
|
||||
RefVarargs = FuncVarargs
|
||||
RefVarargs()->assert_equal('')
|
||||
RefVarargs('one')->assert_equal('one')
|
||||
RefVarargs('one', 'two')->assert_equal('one,two')
|
||||
|
||||
CheckDefFailure(['let RefWrong: func(...list<string>, string)'], 'E110:')
|
||||
CheckDefFailure(['let RefWrong: func(...list<string>, ?string)'], 'E110:')
|
||||
CheckDefFailure(['var RefWrong: func(...list<string>, string)'], 'E110:')
|
||||
CheckDefFailure(['var RefWrong: func(...list<string>, ?string)'], 'E110:')
|
||||
enddef
|
||||
|
||||
" Only varargs
|
||||
@@ -470,7 +470,7 @@ def Test_call_varargs_only()
|
||||
enddef
|
||||
|
||||
def Test_using_var_as_arg()
|
||||
writefile(['def Func(x: number)', 'let x = 234', 'enddef', 'defcompile'], 'Xdef')
|
||||
writefile(['def Func(x: number)', 'var x = 234', 'enddef', 'defcompile'], 'Xdef')
|
||||
assert_fails('so Xdef', 'E1006:', '', 1, 'Func')
|
||||
delete('Xdef')
|
||||
enddef
|
||||
@@ -485,10 +485,10 @@ enddef
|
||||
|
||||
def Test_assign_to_argument()
|
||||
# works for dict and list
|
||||
let d: dict<string> = {}
|
||||
var d: dict<string> = {}
|
||||
DictArg(d)
|
||||
d['key']->assert_equal('value')
|
||||
let l: list<string> = []
|
||||
var l: list<string> = []
|
||||
ListArg(l)
|
||||
l[0]->assert_equal('value')
|
||||
|
||||
@@ -518,12 +518,12 @@ def Test_call_funcref()
|
||||
assert_fails('NotAFunc()', 'E117:', '', 2, 'Test_call_funcref') # comment after call
|
||||
assert_fails('g:NotAFunc()', 'E117:', '', 3, 'Test_call_funcref')
|
||||
|
||||
let lines =<< trim END
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
def RetNumber(): number
|
||||
return 123
|
||||
enddef
|
||||
let Funcref: func: number = function('RetNumber')
|
||||
var Funcref: func: number = function('RetNumber')
|
||||
Funcref()->assert_equal(123)
|
||||
END
|
||||
CheckScriptSuccess(lines)
|
||||
@@ -536,7 +536,7 @@ def Test_call_funcref()
|
||||
def Bar(F: func: number): number
|
||||
return F()
|
||||
enddef
|
||||
let Funcref = function('RetNumber')
|
||||
var Funcref = function('RetNumber')
|
||||
Bar(Funcref)->assert_equal(123)
|
||||
END
|
||||
CheckScriptSuccess(lines)
|
||||
@@ -546,7 +546,7 @@ def Test_call_funcref()
|
||||
def UseNumber(nr: number)
|
||||
echo nr
|
||||
enddef
|
||||
let Funcref: func(number) = function('UseNumber')
|
||||
var Funcref: func(number) = function('UseNumber')
|
||||
Funcref(123)
|
||||
END
|
||||
CheckScriptSuccess(lines)
|
||||
@@ -556,7 +556,7 @@ def Test_call_funcref()
|
||||
def UseNumber(nr: number)
|
||||
echo nr
|
||||
enddef
|
||||
let Funcref: func(string) = function('UseNumber')
|
||||
var Funcref: func(string) = function('UseNumber')
|
||||
END
|
||||
CheckScriptFailure(lines, 'E1012: Type mismatch; expected func(string) but got func(number)')
|
||||
|
||||
@@ -565,7 +565,7 @@ def Test_call_funcref()
|
||||
def EchoNr(nr = 34)
|
||||
g:echo = nr
|
||||
enddef
|
||||
let Funcref: func(?number) = function('EchoNr')
|
||||
var Funcref: func(?number) = function('EchoNr')
|
||||
Funcref()
|
||||
g:echo->assert_equal(34)
|
||||
Funcref(123)
|
||||
@@ -578,7 +578,7 @@ def Test_call_funcref()
|
||||
def EchoList(...l: list<number>)
|
||||
g:echo = l
|
||||
enddef
|
||||
let Funcref: func(...list<number>) = function('EchoList')
|
||||
var Funcref: func(...list<number>) = function('EchoList')
|
||||
Funcref()
|
||||
g:echo->assert_equal([])
|
||||
Funcref(1, 2, 3)
|
||||
@@ -593,7 +593,7 @@ def Test_call_funcref()
|
||||
g:listarg = l
|
||||
return nr
|
||||
enddef
|
||||
let Funcref: func(number, ?number, ...list<number>): number = function('OptAndVar')
|
||||
var Funcref: func(number, ?number, ...list<number>): number = function('OptAndVar')
|
||||
Funcref(10)->assert_equal(10)
|
||||
g:optarg->assert_equal(12)
|
||||
g:listarg->assert_equal([])
|
||||
@@ -614,21 +614,21 @@ let NotAFunc = 'text'
|
||||
|
||||
def CombineFuncrefTypes()
|
||||
# same arguments, different return type
|
||||
let Ref1: func(bool): string
|
||||
let Ref2: func(bool): number
|
||||
let Ref3: func(bool): any
|
||||
var Ref1: func(bool): string
|
||||
var Ref2: func(bool): number
|
||||
var Ref3: func(bool): any
|
||||
Ref3 = g:cond ? Ref1 : Ref2
|
||||
|
||||
# different number of arguments
|
||||
let Refa1: func(bool): number
|
||||
let Refa2: func(bool, number): number
|
||||
let Refa3: func: number
|
||||
var Refa1: func(bool): number
|
||||
var Refa2: func(bool, number): number
|
||||
var Refa3: func: number
|
||||
Refa3 = g:cond ? Refa1 : Refa2
|
||||
|
||||
# different argument types
|
||||
let Refb1: func(bool, string): number
|
||||
let Refb2: func(string, number): number
|
||||
let Refb3: func(any, any): number
|
||||
var Refb1: func(bool, string): number
|
||||
var Refb2: func(string, number): number
|
||||
var Refb3: func(any, any): number
|
||||
Refb3 = g:cond ? Refb1 : Refb2
|
||||
enddef
|
||||
|
||||
@@ -698,31 +698,31 @@ def Test_arg_type_wrong()
|
||||
enddef
|
||||
|
||||
def Test_vim9script_call()
|
||||
let lines =<< trim END
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
let var = ''
|
||||
var name = ''
|
||||
def MyFunc(arg: string)
|
||||
var = arg
|
||||
name = arg
|
||||
enddef
|
||||
MyFunc('foobar')
|
||||
var->assert_equal('foobar')
|
||||
name->assert_equal('foobar')
|
||||
|
||||
let str = 'barfoo'
|
||||
var str = 'barfoo'
|
||||
str->MyFunc()
|
||||
var->assert_equal('barfoo')
|
||||
name->assert_equal('barfoo')
|
||||
|
||||
g:value = 'value'
|
||||
g:value->MyFunc()
|
||||
var->assert_equal('value')
|
||||
name->assert_equal('value')
|
||||
|
||||
let listvar = []
|
||||
var listvar = []
|
||||
def ListFunc(arg: list<number>)
|
||||
listvar = arg
|
||||
enddef
|
||||
[1, 2, 3]->ListFunc()
|
||||
listvar->assert_equal([1, 2, 3])
|
||||
|
||||
let dictvar = {}
|
||||
var dictvar = {}
|
||||
def DictFunc(arg: dict<number>)
|
||||
dictvar = arg
|
||||
enddef
|
||||
@@ -738,28 +738,28 @@ def Test_vim9script_call()
|
||||
dictvar->assert_equal(#{a: 3, b: 4})
|
||||
|
||||
('text')->MyFunc()
|
||||
var->assert_equal('text')
|
||||
name->assert_equal('text')
|
||||
("some")->MyFunc()
|
||||
var->assert_equal('some')
|
||||
name->assert_equal('some')
|
||||
|
||||
# line starting with single quote is not a mark
|
||||
# line starting with double quote can be a method call
|
||||
'asdfasdf'->MyFunc()
|
||||
var->assert_equal('asdfasdf')
|
||||
name->assert_equal('asdfasdf')
|
||||
"xyz"->MyFunc()
|
||||
var->assert_equal('xyz')
|
||||
name->assert_equal('xyz')
|
||||
|
||||
def UseString()
|
||||
'xyork'->MyFunc()
|
||||
enddef
|
||||
UseString()
|
||||
var->assert_equal('xyork')
|
||||
name->assert_equal('xyork')
|
||||
|
||||
def UseString2()
|
||||
"knife"->MyFunc()
|
||||
enddef
|
||||
UseString2()
|
||||
var->assert_equal('knife')
|
||||
name->assert_equal('knife')
|
||||
|
||||
# prepending a colon makes it a mark
|
||||
new
|
||||
@@ -773,7 +773,7 @@ def Test_vim9script_call()
|
||||
'continued'
|
||||
)
|
||||
assert_equal('continued',
|
||||
var
|
||||
name
|
||||
)
|
||||
|
||||
call MyFunc(
|
||||
@@ -783,7 +783,7 @@ def Test_vim9script_call()
|
||||
)
|
||||
assert_equal(
|
||||
'morelines',
|
||||
var)
|
||||
name)
|
||||
END
|
||||
writefile(lines, 'Xcall.vim')
|
||||
source Xcall.vim
|
||||
@@ -791,11 +791,11 @@ def Test_vim9script_call()
|
||||
enddef
|
||||
|
||||
def Test_vim9script_call_fail_decl()
|
||||
let lines =<< trim END
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
let var = ''
|
||||
var name = ''
|
||||
def MyFunc(arg: string)
|
||||
let var = 123
|
||||
var name = 123
|
||||
enddef
|
||||
defcompile
|
||||
END
|
||||
@@ -803,7 +803,7 @@ def Test_vim9script_call_fail_decl()
|
||||
enddef
|
||||
|
||||
def Test_vim9script_call_fail_type()
|
||||
let lines =<< trim END
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
def MyFunc(arg: string)
|
||||
echo arg
|
||||
@@ -814,7 +814,7 @@ def Test_vim9script_call_fail_type()
|
||||
enddef
|
||||
|
||||
def Test_vim9script_call_fail_const()
|
||||
let lines =<< trim END
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
const var = ''
|
||||
def MyFunc(arg: string)
|
||||
@@ -831,7 +831,7 @@ enddef
|
||||
" recognized.
|
||||
func Test_function_python()
|
||||
CheckFeature python3
|
||||
let py = 'python3'
|
||||
var py = 'python3'
|
||||
execute py "<< EOF"
|
||||
def do_something():
|
||||
return 1
|
||||
@@ -839,7 +839,7 @@ EOF
|
||||
endfunc
|
||||
|
||||
def Test_delfunc()
|
||||
let lines =<< trim END
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
def g:GoneSoon()
|
||||
echo 'hello'
|
||||
@@ -881,7 +881,7 @@ def Test_redef_failure()
|
||||
enddef
|
||||
|
||||
def Test_vim9script_func()
|
||||
let lines =<< trim END
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
func Func(arg)
|
||||
echo a:arg
|
||||
@@ -992,13 +992,13 @@ def FuncOneArgRetAny(arg: any): any
|
||||
enddef
|
||||
|
||||
def Test_func_type()
|
||||
let Ref1: func()
|
||||
var Ref1: func()
|
||||
s:funcResult = 0
|
||||
Ref1 = FuncNoArgNoRet
|
||||
Ref1()
|
||||
s:funcResult->assert_equal(11)
|
||||
|
||||
let Ref2: func
|
||||
var Ref2: func
|
||||
s:funcResult = 0
|
||||
Ref2 = FuncNoArgNoRet
|
||||
Ref2()
|
||||
@@ -1021,7 +1021,7 @@ def Test_func_type()
|
||||
enddef
|
||||
|
||||
def Test_repeat_return_type()
|
||||
let res = 0
|
||||
var res = 0
|
||||
for n in repeat([1], 3)
|
||||
res += n
|
||||
endfor
|
||||
@@ -1036,7 +1036,7 @@ enddef
|
||||
|
||||
def Test_argv_return_type()
|
||||
next fileone filetwo
|
||||
let res = ''
|
||||
var res = ''
|
||||
for name in argv()
|
||||
res ..= name
|
||||
endfor
|
||||
@@ -1044,60 +1044,60 @@ def Test_argv_return_type()
|
||||
enddef
|
||||
|
||||
def Test_func_type_part()
|
||||
let RefVoid: func: void
|
||||
var RefVoid: func: void
|
||||
RefVoid = FuncNoArgNoRet
|
||||
RefVoid = FuncOneArgNoRet
|
||||
CheckDefFailure(['let RefVoid: func: void', 'RefVoid = FuncNoArgRetNumber'], 'E1012: Type mismatch; expected func(...) but got func(): number')
|
||||
CheckDefFailure(['let RefVoid: func: void', 'RefVoid = FuncNoArgRetString'], 'E1012: Type mismatch; expected func(...) but got func(): string')
|
||||
CheckDefFailure(['var RefVoid: func: void', 'RefVoid = FuncNoArgRetNumber'], 'E1012: Type mismatch; expected func(...) but got func(): number')
|
||||
CheckDefFailure(['var RefVoid: func: void', 'RefVoid = FuncNoArgRetString'], 'E1012: Type mismatch; expected func(...) but got func(): string')
|
||||
|
||||
let RefAny: func(): any
|
||||
var RefAny: func(): any
|
||||
RefAny = FuncNoArgRetNumber
|
||||
RefAny = FuncNoArgRetString
|
||||
CheckDefFailure(['let RefAny: func(): any', 'RefAny = FuncNoArgNoRet'], 'E1012: Type mismatch; expected func(): any but got func()')
|
||||
CheckDefFailure(['let RefAny: func(): any', 'RefAny = FuncOneArgNoRet'], 'E1012: Type mismatch; expected func(): any but got func(number)')
|
||||
CheckDefFailure(['var RefAny: func(): any', 'RefAny = FuncNoArgNoRet'], 'E1012: Type mismatch; expected func(): any but got func()')
|
||||
CheckDefFailure(['var RefAny: func(): any', 'RefAny = FuncOneArgNoRet'], 'E1012: Type mismatch; expected func(): any but got func(number)')
|
||||
|
||||
let RefNr: func: number
|
||||
var RefNr: func: number
|
||||
RefNr = FuncNoArgRetNumber
|
||||
RefNr = FuncOneArgRetNumber
|
||||
CheckDefFailure(['let RefNr: func: number', 'RefNr = FuncNoArgNoRet'], 'E1012: Type mismatch; expected func(...): number but got func()')
|
||||
CheckDefFailure(['let RefNr: func: number', 'RefNr = FuncNoArgRetString'], 'E1012: Type mismatch; expected func(...): number but got func(): string')
|
||||
CheckDefFailure(['var RefNr: func: number', 'RefNr = FuncNoArgNoRet'], 'E1012: Type mismatch; expected func(...): number but got func()')
|
||||
CheckDefFailure(['var RefNr: func: number', 'RefNr = FuncNoArgRetString'], 'E1012: Type mismatch; expected func(...): number but got func(): string')
|
||||
|
||||
let RefStr: func: string
|
||||
var RefStr: func: string
|
||||
RefStr = FuncNoArgRetString
|
||||
RefStr = FuncOneArgRetString
|
||||
CheckDefFailure(['let RefStr: func: string', 'RefStr = FuncNoArgNoRet'], 'E1012: Type mismatch; expected func(...): string but got func()')
|
||||
CheckDefFailure(['let RefStr: func: string', 'RefStr = FuncNoArgRetNumber'], 'E1012: Type mismatch; expected func(...): string but got func(): number')
|
||||
CheckDefFailure(['var RefStr: func: string', 'RefStr = FuncNoArgNoRet'], 'E1012: Type mismatch; expected func(...): string but got func()')
|
||||
CheckDefFailure(['var RefStr: func: string', 'RefStr = FuncNoArgRetNumber'], 'E1012: Type mismatch; expected func(...): string but got func(): number')
|
||||
enddef
|
||||
|
||||
def Test_func_type_fails()
|
||||
CheckDefFailure(['let ref1: func()'], 'E704:')
|
||||
CheckDefFailure(['var ref1: func()'], 'E704:')
|
||||
|
||||
CheckDefFailure(['let Ref1: func()', 'Ref1 = FuncNoArgRetNumber'], 'E1012: Type mismatch; expected func() but got func(): number')
|
||||
CheckDefFailure(['let Ref1: func()', 'Ref1 = FuncOneArgNoRet'], 'E1012: Type mismatch; expected func() but got func(number)')
|
||||
CheckDefFailure(['let Ref1: func()', 'Ref1 = FuncOneArgRetNumber'], 'E1012: Type mismatch; expected func() but got func(number): number')
|
||||
CheckDefFailure(['let Ref1: func(bool)', 'Ref1 = FuncTwoArgNoRet'], 'E1012: Type mismatch; expected func(bool) but got func(bool, number)')
|
||||
CheckDefFailure(['let Ref1: func(?bool)', 'Ref1 = FuncTwoArgNoRet'], 'E1012: Type mismatch; expected func(?bool) but got func(bool, number)')
|
||||
CheckDefFailure(['let Ref1: func(...bool)', 'Ref1 = FuncTwoArgNoRet'], 'E1012: Type mismatch; expected func(...bool) but got func(bool, number)')
|
||||
CheckDefFailure(['var Ref1: func()', 'Ref1 = FuncNoArgRetNumber'], 'E1012: Type mismatch; expected func() but got func(): number')
|
||||
CheckDefFailure(['var Ref1: func()', 'Ref1 = FuncOneArgNoRet'], 'E1012: Type mismatch; expected func() but got func(number)')
|
||||
CheckDefFailure(['var Ref1: func()', 'Ref1 = FuncOneArgRetNumber'], 'E1012: Type mismatch; expected func() but got func(number): number')
|
||||
CheckDefFailure(['var Ref1: func(bool)', 'Ref1 = FuncTwoArgNoRet'], 'E1012: Type mismatch; expected func(bool) but got func(bool, number)')
|
||||
CheckDefFailure(['var Ref1: func(?bool)', 'Ref1 = FuncTwoArgNoRet'], 'E1012: Type mismatch; expected func(?bool) but got func(bool, number)')
|
||||
CheckDefFailure(['var Ref1: func(...bool)', 'Ref1 = FuncTwoArgNoRet'], 'E1012: Type mismatch; expected func(...bool) but got func(bool, number)')
|
||||
|
||||
CheckDefFailure(['let RefWrong: func(string ,number)'], 'E1068:')
|
||||
CheckDefFailure(['let RefWrong: func(string,number)'], 'E1069:')
|
||||
CheckDefFailure(['let RefWrong: func(bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool)'], 'E1005:')
|
||||
CheckDefFailure(['let RefWrong: func(bool):string'], 'E1069:')
|
||||
CheckDefFailure(['var RefWrong: func(string ,number)'], 'E1068:')
|
||||
CheckDefFailure(['var RefWrong: func(string,number)'], 'E1069:')
|
||||
CheckDefFailure(['var RefWrong: func(bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool)'], 'E1005:')
|
||||
CheckDefFailure(['var RefWrong: func(bool):string'], 'E1069:')
|
||||
enddef
|
||||
|
||||
def Test_func_return_type()
|
||||
let nr: number
|
||||
var nr: number
|
||||
nr = FuncNoArgRetNumber()
|
||||
nr->assert_equal(1234)
|
||||
|
||||
nr = FuncOneArgRetAny(122)
|
||||
nr->assert_equal(122)
|
||||
|
||||
let str: string
|
||||
var str: string
|
||||
str = FuncOneArgRetAny('yes')
|
||||
str->assert_equal('yes')
|
||||
|
||||
CheckDefFailure(['let str: string', 'str = FuncNoArgRetNumber()'], 'E1012: Type mismatch; expected string but got number')
|
||||
CheckDefFailure(['var str: string', 'str = FuncNoArgRetNumber()'], 'E1012: Type mismatch; expected string but got number')
|
||||
enddef
|
||||
|
||||
def MultiLine(
|
||||
@@ -1161,7 +1161,7 @@ endfunc
|
||||
|
||||
def Test_error_reporting()
|
||||
# comment lines at the start of the function
|
||||
let lines =<< trim END
|
||||
var lines =<< trim END
|
||||
" comment
|
||||
def Func()
|
||||
# comment
|
||||
@@ -1183,7 +1183,7 @@ def Test_error_reporting()
|
||||
lines =<< trim END
|
||||
" comment
|
||||
def Func()
|
||||
let x = 1234
|
||||
var x = 1234
|
||||
# comment
|
||||
# comment
|
||||
invalid
|
||||
@@ -1202,9 +1202,9 @@ def Test_error_reporting()
|
||||
lines =<< trim END
|
||||
vim9script
|
||||
def Func()
|
||||
let db = #{foo: 1, bar: 2}
|
||||
var db = #{foo: 1, bar: 2}
|
||||
# comment
|
||||
let x = db.asdf
|
||||
var x = db.asdf
|
||||
enddef
|
||||
defcompile
|
||||
Func()
|
||||
@@ -1222,14 +1222,14 @@ enddef
|
||||
|
||||
def Test_deleted_function()
|
||||
CheckDefExecFailure([
|
||||
'let RefMe: func = function("g:DelMe")',
|
||||
'var RefMe: func = function("g:DelMe")',
|
||||
'delfunc g:DelMe',
|
||||
'echo RefMe()'], 'E117:')
|
||||
enddef
|
||||
|
||||
def Test_unknown_function()
|
||||
CheckDefExecFailure([
|
||||
'let Ref: func = function("NotExist")',
|
||||
'var Ref: func = function("NotExist")',
|
||||
'delfunc g:NotExist'], 'E700:')
|
||||
enddef
|
||||
|
||||
@@ -1238,12 +1238,12 @@ def RefFunc(Ref: func(string): string): string
|
||||
enddef
|
||||
|
||||
def Test_closure_simple()
|
||||
let local = 'some '
|
||||
var local = 'some '
|
||||
RefFunc({s -> local .. s})->assert_equal('some more')
|
||||
enddef
|
||||
|
||||
def MakeRef()
|
||||
let local = 'some '
|
||||
var local = 'some '
|
||||
g:Ref = {s -> local .. s}
|
||||
enddef
|
||||
|
||||
@@ -1254,7 +1254,7 @@ def Test_closure_ref_after_return()
|
||||
enddef
|
||||
|
||||
def MakeTwoRefs()
|
||||
let local = ['some']
|
||||
var local = ['some']
|
||||
g:Extend = {s -> local->add(s)}
|
||||
g:Read = {-> local}
|
||||
enddef
|
||||
@@ -1292,12 +1292,12 @@ def Test_closure_two_indirect_refs()
|
||||
enddef
|
||||
|
||||
def MakeArgRefs(theArg: string)
|
||||
let local = 'loc_val'
|
||||
var local = 'loc_val'
|
||||
g:UseArg = {s -> theArg .. '/' .. local .. '/' .. s}
|
||||
enddef
|
||||
|
||||
def MakeArgRefsVarargs(theArg: string, ...rest: list<string>)
|
||||
let local = 'the_loc'
|
||||
var local = 'the_loc'
|
||||
g:UseVararg = {s -> theArg .. '/' .. local .. '/' .. s .. '/' .. join(rest)}
|
||||
enddef
|
||||
|
||||
@@ -1313,7 +1313,7 @@ def Test_closure_using_argument()
|
||||
enddef
|
||||
|
||||
def MakeGetAndAppendRefs()
|
||||
let local = 'a'
|
||||
var local = 'a'
|
||||
|
||||
def Append(arg: string)
|
||||
local ..= arg
|
||||
@@ -1339,7 +1339,7 @@ def Test_closure_append_get()
|
||||
enddef
|
||||
|
||||
def Test_nested_closure()
|
||||
let local = 'text'
|
||||
var local = 'text'
|
||||
def Closure(arg: string): string
|
||||
return local .. arg
|
||||
enddef
|
||||
@@ -1351,19 +1351,19 @@ func GetResult(Ref)
|
||||
endfunc
|
||||
|
||||
def Test_call_closure_not_compiled()
|
||||
let text = 'text'
|
||||
var text = 'text'
|
||||
g:Ref = {s -> s .. text}
|
||||
GetResult(g:Ref)->assert_equal('sometext')
|
||||
enddef
|
||||
|
||||
def Test_double_closure_fails()
|
||||
let lines =<< trim END
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
def Func()
|
||||
let var = 0
|
||||
for i in range(2)
|
||||
timer_start(0, {-> var})
|
||||
endfor
|
||||
var name = 0
|
||||
for i in range(2)
|
||||
timer_start(0, {-> name})
|
||||
endfor
|
||||
enddef
|
||||
Func()
|
||||
END
|
||||
@@ -1371,7 +1371,7 @@ def Test_double_closure_fails()
|
||||
enddef
|
||||
|
||||
def Test_nested_closure_fails()
|
||||
let lines =<< trim END
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
def FuncA()
|
||||
FuncB(0)
|
||||
@@ -1385,40 +1385,40 @@ def Test_nested_closure_fails()
|
||||
enddef
|
||||
|
||||
def Test_sort_return_type()
|
||||
let res: list<number>
|
||||
var res: list<number>
|
||||
res = [1, 2, 3]->sort()
|
||||
enddef
|
||||
|
||||
def Test_sort_argument()
|
||||
let res = ['b', 'a', 'c']->sort('i')
|
||||
var res = ['b', 'a', 'c']->sort('i')
|
||||
res->assert_equal(['a', 'b', 'c'])
|
||||
enddef
|
||||
|
||||
def Test_getqflist_return_type()
|
||||
let l = getqflist()
|
||||
var l = getqflist()
|
||||
l->assert_equal([])
|
||||
|
||||
let d = getqflist(#{items: 0})
|
||||
var d = getqflist(#{items: 0})
|
||||
d->assert_equal(#{items: []})
|
||||
enddef
|
||||
|
||||
def Test_getloclist_return_type()
|
||||
let l = getloclist(1)
|
||||
var l = getloclist(1)
|
||||
l->assert_equal([])
|
||||
|
||||
let d = getloclist(1, #{items: 0})
|
||||
var d = getloclist(1, #{items: 0})
|
||||
d->assert_equal(#{items: []})
|
||||
enddef
|
||||
|
||||
def Test_copy_return_type()
|
||||
let l = copy([1, 2, 3])
|
||||
let res = 0
|
||||
var l = copy([1, 2, 3])
|
||||
var res = 0
|
||||
for n in l
|
||||
res += n
|
||||
endfor
|
||||
res->assert_equal(6)
|
||||
|
||||
let dl = deepcopy([1, 2, 3])
|
||||
var dl = deepcopy([1, 2, 3])
|
||||
res = 0
|
||||
for n in dl
|
||||
res += n
|
||||
@@ -1429,8 +1429,8 @@ def Test_copy_return_type()
|
||||
enddef
|
||||
|
||||
def Test_extend_return_type()
|
||||
let l = extend([1, 2], [3])
|
||||
let res = 0
|
||||
var l = extend([1, 2], [3])
|
||||
var res = 0
|
||||
for n in l
|
||||
res += n
|
||||
endfor
|
||||
@@ -1442,8 +1442,8 @@ def Test_garbagecollect()
|
||||
enddef
|
||||
|
||||
def Test_insert_return_type()
|
||||
let l = insert([2, 1], 3)
|
||||
let res = 0
|
||||
var l = insert([2, 1], 3)
|
||||
var res = 0
|
||||
for n in l
|
||||
res += n
|
||||
endfor
|
||||
@@ -1456,8 +1456,8 @@ def Test_keys_return_type()
|
||||
enddef
|
||||
|
||||
def Test_reverse_return_type()
|
||||
let l = reverse([1, 2, 3])
|
||||
let res = 0
|
||||
var l = reverse([1, 2, 3])
|
||||
var res = 0
|
||||
for n in l
|
||||
res += n
|
||||
endfor
|
||||
@@ -1465,8 +1465,8 @@ def Test_reverse_return_type()
|
||||
enddef
|
||||
|
||||
def Test_remove_return_type()
|
||||
let l = remove(#{one: [1, 2], two: [3, 4]}, 'one')
|
||||
let res = 0
|
||||
var l = remove(#{one: [1, 2], two: [3, 4]}, 'one')
|
||||
var res = 0
|
||||
for n in l
|
||||
res += n
|
||||
endfor
|
||||
@@ -1474,8 +1474,8 @@ def Test_remove_return_type()
|
||||
enddef
|
||||
|
||||
def Test_filter_return_type()
|
||||
let l = filter([1, 2, 3], {-> 1})
|
||||
let res = 0
|
||||
var l = filter([1, 2, 3], {-> 1})
|
||||
var res = 0
|
||||
for n in l
|
||||
res += n
|
||||
endfor
|
||||
@@ -1483,7 +1483,7 @@ def Test_filter_return_type()
|
||||
enddef
|
||||
|
||||
def Test_bufnr()
|
||||
let buf = bufnr()
|
||||
var buf = bufnr()
|
||||
bufnr('%')->assert_equal(buf)
|
||||
|
||||
buf = bufnr('Xdummy', true)
|
||||
@@ -1502,9 +1502,9 @@ def Test_char2nr()
|
||||
enddef
|
||||
|
||||
def Test_getreg_return_type()
|
||||
let s1: string = getreg('"')
|
||||
let s2: string = getreg('"', 1)
|
||||
let s3: list<string> = getreg('"', 1, 1)
|
||||
var s1: string = getreg('"')
|
||||
var s2: string = getreg('"', 1)
|
||||
var s3: list<string> = getreg('"', 1, 1)
|
||||
enddef
|
||||
|
||||
def Wrong_dict_key_type(items: list<number>): list<number>
|
||||
@@ -1516,10 +1516,10 @@ def Test_wrong_dict_key_type()
|
||||
enddef
|
||||
|
||||
def Line_continuation_in_def(dir: string = ''): string
|
||||
let path: string = empty(dir)
|
||||
\ ? 'empty'
|
||||
\ : 'full'
|
||||
return path
|
||||
var path: string = empty(dir)
|
||||
\ ? 'empty'
|
||||
\ : 'full'
|
||||
return path
|
||||
enddef
|
||||
|
||||
def Test_line_continuation_in_def()
|
||||
@@ -1527,7 +1527,7 @@ def Test_line_continuation_in_def()
|
||||
enddef
|
||||
|
||||
def Line_continuation_in_lambda(): list<string>
|
||||
let x = range(97, 100)
|
||||
var x = range(97, 100)
|
||||
->map({_, v -> nr2char(v)
|
||||
->toupper()})
|
||||
->reverse()
|
||||
@@ -1571,9 +1571,9 @@ def Test_bufname()
|
||||
enddef
|
||||
|
||||
def Test_bufwinid()
|
||||
let origwin = win_getid()
|
||||
var origwin = win_getid()
|
||||
below split SomeFile
|
||||
let SomeFileID = win_getid()
|
||||
var SomeFileID = win_getid()
|
||||
below split OtherFile
|
||||
below split SomeFile
|
||||
bufwinid('SomeFile')->assert_equal(SomeFileID)
|
||||
@@ -1596,7 +1596,7 @@ def Test_expand()
|
||||
enddef
|
||||
|
||||
def Test_getbufinfo()
|
||||
let bufinfo = getbufinfo(bufnr())
|
||||
var bufinfo = getbufinfo(bufnr())
|
||||
getbufinfo('%')->assert_equal(bufinfo)
|
||||
|
||||
edit Xtestfile1
|
||||
@@ -1609,9 +1609,9 @@ enddef
|
||||
|
||||
def Test_getbufline()
|
||||
e SomeFile
|
||||
let buf = bufnr()
|
||||
var buf = bufnr()
|
||||
e #
|
||||
let lines = ['aaa', 'bbb', 'ccc']
|
||||
var lines = ['aaa', 'bbb', 'ccc']
|
||||
setbufline(buf, 1, lines)
|
||||
getbufline('#', 1, '$')->assert_equal(lines)
|
||||
|
||||
@@ -1621,7 +1621,7 @@ enddef
|
||||
def Test_getchangelist()
|
||||
new
|
||||
setline(1, 'some text')
|
||||
let changelist = bufnr()->getchangelist()
|
||||
var changelist = bufnr()->getchangelist()
|
||||
getchangelist('%')->assert_equal(changelist)
|
||||
bwipe!
|
||||
enddef
|
||||
@@ -1634,13 +1634,13 @@ enddef
|
||||
|
||||
def Test_getcompletion()
|
||||
set wildignore=*.vim,*~
|
||||
let l = getcompletion('run', 'file', true)
|
||||
var l = getcompletion('run', 'file', true)
|
||||
l->assert_equal([])
|
||||
set wildignore&
|
||||
enddef
|
||||
|
||||
def Test_getreg()
|
||||
let lines = ['aaa', 'bbb', 'ccc']
|
||||
var lines = ['aaa', 'bbb', 'ccc']
|
||||
setreg('a', lines)
|
||||
getreg('a', true, true)->assert_equal(lines)
|
||||
enddef
|
||||
@@ -1669,8 +1669,8 @@ def Test_index()
|
||||
enddef
|
||||
|
||||
def Test_list2str_str2list_utf8()
|
||||
let s = "\u3042\u3044"
|
||||
let l = [0x3042, 0x3044]
|
||||
var s = "\u3042\u3044"
|
||||
var l = [0x3042, 0x3044]
|
||||
str2list(s, true)->assert_equal(l)
|
||||
list2str(l, true)->assert_equal(s)
|
||||
enddef
|
||||
@@ -1682,7 +1682,7 @@ def SID(): number
|
||||
enddef
|
||||
|
||||
def Test_maparg()
|
||||
let lnum = str2nr(expand('<sflnum>'))
|
||||
var lnum = str2nr(expand('<sflnum>'))
|
||||
map foo bar
|
||||
maparg('foo', '', false, true)->assert_equal(#{
|
||||
lnum: lnum + 1,
|
||||
@@ -1718,7 +1718,7 @@ enddef
|
||||
def Test_search()
|
||||
new
|
||||
setline(1, ['foo', 'bar'])
|
||||
let val = 0
|
||||
var val = 0
|
||||
# skip expr returns boolean
|
||||
search('bar', 'W', 0, 0, {-> val == 1})->assert_equal(2)
|
||||
:1
|
||||
@@ -1766,15 +1766,15 @@ def Test_setbufvar()
|
||||
enddef
|
||||
|
||||
def Test_setloclist()
|
||||
let items = [#{filename: '/tmp/file', lnum: 1, valid: true}]
|
||||
let what = #{items: items}
|
||||
var items = [#{filename: '/tmp/file', lnum: 1, valid: true}]
|
||||
var what = #{items: items}
|
||||
setqflist([], ' ', what)
|
||||
setloclist(0, [], ' ', what)
|
||||
enddef
|
||||
|
||||
def Test_setreg()
|
||||
setreg('a', ['aaa', 'bbb', 'ccc'])
|
||||
let reginfo = getreginfo('a')
|
||||
var reginfo = getreginfo('a')
|
||||
setreg('a', reginfo)
|
||||
getreginfo('a')->assert_equal(reginfo)
|
||||
enddef
|
||||
@@ -1800,10 +1800,10 @@ def Test_strchars()
|
||||
enddef
|
||||
|
||||
def Test_submatch()
|
||||
let pat = 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'
|
||||
let Rep = {-> range(10)->map({_, v -> submatch(v, true)})->string()}
|
||||
let actual = substitute('A123456789', pat, Rep, '')
|
||||
let expected = "[['A123456789'], ['1'], ['2'], ['3'], ['4'], ['5'], ['6'], ['7'], ['8'], ['9']]"
|
||||
var pat = 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'
|
||||
var Rep = {-> range(10)->map({_, v -> submatch(v, true)})->string()}
|
||||
var actual = substitute('A123456789', pat, Rep, '')
|
||||
var expected = "[['A123456789'], ['1'], ['2'], ['3'], ['4'], ['5'], ['6'], ['7'], ['8'], ['9']]"
|
||||
actual->assert_equal(expected)
|
||||
enddef
|
||||
|
||||
@@ -1818,7 +1818,7 @@ def Test_term_gettty()
|
||||
if !has('terminal')
|
||||
MissingFeature 'terminal'
|
||||
else
|
||||
let buf = Run_shell_in_terminal({})
|
||||
var buf = Run_shell_in_terminal({})
|
||||
term_gettty(buf, true)->assert_notequal('')
|
||||
StopShellInTerminal(buf)
|
||||
endif
|
||||
@@ -1829,7 +1829,7 @@ def Test_term_start()
|
||||
MissingFeature 'terminal'
|
||||
else
|
||||
botright new
|
||||
let winnr = winnr()
|
||||
var winnr = winnr()
|
||||
term_start(&shell, #{curwin: true})
|
||||
winnr()->assert_equal(winnr)
|
||||
bwipe!
|
||||
@@ -1837,9 +1837,9 @@ def Test_term_start()
|
||||
enddef
|
||||
|
||||
def Test_timer_paused()
|
||||
let id = timer_start(50, {-> 0})
|
||||
var id = timer_start(50, {-> 0})
|
||||
timer_pause(id, true)
|
||||
let info = timer_info(id)
|
||||
var info = timer_info(id)
|
||||
info[0]['paused']->assert_equal(1)
|
||||
timer_stop(id)
|
||||
enddef
|
||||
@@ -1884,7 +1884,7 @@ def Test_closure_in_map()
|
||||
enddef
|
||||
|
||||
def Test_partial_call()
|
||||
let Xsetlist = function('setloclist', [0])
|
||||
var Xsetlist = function('setloclist', [0])
|
||||
Xsetlist([], ' ', {'title': 'test'})
|
||||
getloclist(0, {'title': 1})->assert_equal({'title': 'test'})
|
||||
|
||||
@@ -1909,7 +1909,7 @@ enddef
|
||||
def Test_restore_modifiers()
|
||||
# check that when compiling a :def function command modifiers are not messed
|
||||
# up.
|
||||
let lines =<< trim END
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
set eventignore=
|
||||
autocmd QuickFixCmdPost * copen
|
||||
|
||||
Reference in New Issue
Block a user