changeset 22435:166a0f17b05e v8.2.1766

patch 8.2.1766: Vim9: Some tests are still using :let Commit: https://github.com/vim/vim/commit/7a9cbca00a8ec53306f8a5852e332feb79091793 Author: Bram Moolenaar <Bram@vim.org> 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.
author Bram Moolenaar <Bram@vim.org>
date Sun, 27 Sep 2020 23:00:04 +0200
parents 70f3df42437e
children d47843ead318
files src/testdir/runtest.vim src/testdir/test_maparg.vim src/testdir/test_popupwin.vim src/testdir/test_textprop.vim src/testdir/test_vim9_assign.vim src/testdir/test_vim9_cmd.vim src/testdir/test_vim9_disassemble.vim src/testdir/test_vim9_expr.vim src/testdir/test_vim9_func.vim src/testdir/test_vim9_script.vim src/version.c
diffstat 11 files changed, 177 insertions(+), 187 deletions(-) [+]
line wrap: on
line diff
--- 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('%')
--- 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<any> = maparg('{', 'n', 0, 1)
+  var four: dict<any> = maparg('{', 'n', 0, 1)
   assert_equal(['{', 'w', 'n'], [four.lhs, four.rhs, four.mode])
   nunmap {
 enddef
--- 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)
--- 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')
--- 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'
--- 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`
--- 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
--- 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'
--- 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>): 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>): 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>): 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): 
 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
--- 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'])
--- 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,