# HG changeset patch # User Bram Moolenaar # Date 1601240404 -7200 # Node ID 166a0f17b05e30b29dcfe56a57f40efa60f76e94 # Parent 70f3df42437ed8b488092d32aa3870a3777a9c4e patch 8.2.1766: Vim9: Some tests are still using :let Commit: https://github.com/vim/vim/commit/7a9cbca00a8ec53306f8a5852e332feb79091793 Author: Bram Moolenaar Date: Sun Sep 27 22:47:05 2020 +0200 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. diff --git a/src/testdir/runtest.vim b/src/testdir/runtest.vim --- a/src/testdir/runtest.vim +++ b/src/testdir/runtest.vim @@ -355,6 +355,9 @@ func FinishTesting() qall! endfunc +" TODO: remove later +let v:disallow_let = 1 + " Source the test script. First grab the file name, in case the script " navigates away. g:testname can be used by the tests. let g:testname = expand('%') diff --git a/src/testdir/test_maparg.vim b/src/testdir/test_maparg.vim --- a/src/testdir/test_maparg.vim +++ b/src/testdir/test_maparg.vim @@ -83,13 +83,13 @@ endfunc def Test_vim9_maparg() nmap { w - let one: string = maparg('{') + var one: string = maparg('{') assert_equal('w', one) - let two: string = maparg('{', 'n') + var two: string = maparg('{', 'n') assert_equal('w', two) - let three: string = maparg('{', 'n', 0) + var three: string = maparg('{', 'n', 0) assert_equal('w', three) - let four: dict = maparg('{', 'n', 0, 1) + var four: dict = maparg('{', 'n', 0, 1) assert_equal(['{', 'w', 'n'], [four.lhs, four.rhs, four.mode]) nunmap { enddef diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim --- a/src/testdir/test_popupwin.vim +++ b/src/testdir/test_popupwin.vim @@ -2690,7 +2690,7 @@ def Popupwin_close_prevwin() split wincmd b assert_equal(2, winnr()) - let buf = term_start(&shell, #{hidden: 1}) + var buf = term_start(&shell, #{hidden: 1}) popup_create(buf, {}) TermWait(buf, 100) popup_clear(true) diff --git a/src/testdir/test_textprop.vim b/src/testdir/test_textprop.vim --- a/src/testdir/test_textprop.vim +++ b/src/testdir/test_textprop.vim @@ -226,8 +226,8 @@ def Test_prop_find2() endfor endfor cursor(1, 8) - let expected = {'lnum': 1, 'id': 0, 'col': 14, 'end': 1, 'type': 'misspell', 'length': 2, 'start': 1} - let result = prop_find(#{type: 'misspell', skipstart: true}, 'f') + var expected = {'lnum': 1, 'id': 0, 'col': 14, 'end': 1, 'type': 'misspell', 'length': 2, 'start': 1} + var result = prop_find(#{type: 'misspell', skipstart: true}, 'f') assert_equal(expected, result) prop_type_delete('misspell') diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim --- a/src/testdir/test_vim9_assign.vim +++ b/src/testdir/test_vim9_assign.vim @@ -3,9 +3,6 @@ source check.vim source vim9.vim -" TODO: remove later -let v:disallow_let = 1 - let s:appendToMe = 'xxx' let s:addToMe = 111 let g:existing = 'yes' diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim --- a/src/testdir/test_vim9_cmd.vim +++ b/src/testdir/test_vim9_cmd.vim @@ -4,9 +4,6 @@ source check.vim source vim9.vim source view_util.vim -" TODO: remove later -let v:disallow_let = 1 - def Test_edit_wildcards() var filename = 'Xtest' edit `=filename` diff --git a/src/testdir/test_vim9_disassemble.vim b/src/testdir/test_vim9_disassemble.vim --- a/src/testdir/test_vim9_disassemble.vim +++ b/src/testdir/test_vim9_disassemble.vim @@ -2,9 +2,6 @@ source check.vim -" TODO: remove later -let v:disallow_let = 1 - func NotCompiled() echo "not" endfunc diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim --- a/src/testdir/test_vim9_expr.vim +++ b/src/testdir/test_vim9_expr.vim @@ -3,9 +3,6 @@ source check.vim source vim9.vim -" TODO: remove later -let v:disallow_let = 1 - let g:cond = v:false def FuncOne(arg: number): string return 'yes' diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim --- a/src/testdir/test_vim9_func.vim +++ b/src/testdir/test_vim9_func.vim @@ -88,7 +88,7 @@ def Test_call_ufunc_count() enddef def MyVarargs(arg: string, ...rest: list): 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 - 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) 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): s 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 + var RefVarargs: func(...list): string RefVarargs = FuncVarargs RefVarargs()->assert_equal('') RefVarargs('one')->assert_equal('one') RefVarargs('one', 'two')->assert_equal('one,two') - CheckDefFailure(['let RefWrong: func(...list, string)'], 'E110:') - CheckDefFailure(['let RefWrong: func(...list, ?string)'], 'E110:') + CheckDefFailure(['var RefWrong: func(...list, string)'], 'E110:') + CheckDefFailure(['var RefWrong: func(...list, ?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 = {} + var d: dict = {} DictArg(d) d['key']->assert_equal('value') - let l: list = [] + var l: list = [] 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) g:echo = l enddef - let Funcref: func(...list) = function('EchoList') + var Funcref: func(...list) = 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 = function('OptAndVar') + var Funcref: func(number, ?number, ...list): 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) listvar = arg enddef [1, 2, 3]->ListFunc() listvar->assert_equal([1, 2, 3]) - let dictvar = {} + var dictvar = {} def DictFunc(arg: dict) 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): 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) - 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 + var res: list 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 = getreg('"', 1, 1) + var s1: string = getreg('"') + var s2: string = getreg('"', 1) + var s3: list = getreg('"', 1, 1) enddef def Wrong_dict_key_type(items: list): list @@ -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 - 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('')) + var lnum = str2nr(expand('')) 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 diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim --- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -6,9 +6,6 @@ source view_util.vim source vim9.vim source shared.vim -" TODO: remove later -let v:disallow_let = 1 - def Test_range_only() new setline(1, ['blah', 'Blah']) diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1766, +/**/ 1765, /**/ 1764,