Patch 8.2.1766
Problem:    Vim9: Some tests are still using :let.
Solution:   Change the last few declarations to use :var.
Files:      src/testdir/runtest.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/testdir/test_maparg.vim,
            src/testdir/test_popupwin.vim, src/testdir/test_textprop.vim


*** ../vim-8.2.1765/src/testdir/runtest.vim     2020-08-31 21:30:28.994020232 
+0200
--- src/testdir/runtest.vim     2020-09-27 22:12:21.378767736 +0200
***************
*** 355,360 ****
--- 355,363 ----
    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('%')
*** ../vim-8.2.1765/src/testdir/test_vim9_assign.vim    2020-09-27 
21:58:42.153049879 +0200
--- src/testdir/test_vim9_assign.vim    2020-09-27 22:42:22.044910450 +0200
***************
*** 3,11 ****
  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'
--- 3,8 ----
*** ../vim-8.2.1765/src/testdir/test_vim9_cmd.vim       2020-09-27 
19:05:28.940098114 +0200
--- src/testdir/test_vim9_cmd.vim       2020-09-27 22:42:25.116901468 +0200
***************
*** 4,12 ****
  source vim9.vim
  source view_util.vim
  
- " TODO: remove later
- let v:disallow_let = 1
- 
  def Test_edit_wildcards()
    var filename = 'Xtest'
    edit `=filename`
--- 4,9 ----
*** ../vim-8.2.1765/src/testdir/test_vim9_disassemble.vim       2020-09-27 
19:05:28.940098114 +0200
--- src/testdir/test_vim9_disassemble.vim       2020-09-27 22:42:28.348892000 
+0200
***************
*** 2,10 ****
  
  source check.vim
  
- " TODO: remove later
- let v:disallow_let = 1
- 
  func NotCompiled()
    echo "not"
  endfunc
--- 2,7 ----
*** ../vim-8.2.1765/src/testdir/test_vim9_expr.vim      2020-09-27 
21:58:42.153049879 +0200
--- src/testdir/test_vim9_expr.vim      2020-09-27 22:42:31.604882471 +0200
***************
*** 3,11 ****
  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'
--- 3,8 ----
*** ../vim-8.2.1765/src/testdir/test_vim9_func.vim      2020-09-26 
19:59:34.097707443 +0200
--- src/testdir/test_vim9_func.vim      2020-09-27 22:42:34.280874641 +0200
***************
*** 88,94 ****
  enddef
  
  def MyVarargs(arg: string, ...rest: list<string>): string
!   let res = arg
    for s in rest
      res ..= ',' .. s
    endfor
--- 88,94 ----
  enddef
  
  def MyVarargs(arg: string, ...rest: list<string>): string
!   var res = arg
    for s in rest
      res ..= ',' .. s
    endfor
***************
*** 160,166 ****
  endfunc
  
  def Test_nested_global_function()
!   let lines =<< trim END
        vim9script
        def Outer()
            def g:Inner(): string
--- 160,166 ----
  endfunc
  
  def Test_nested_global_function()
!   var lines =<< trim END
        vim9script
        def Outer()
            def g:Inner(): string
***************
*** 209,215 ****
  enddef
  
  def Test_global_local_function()
!   let lines =<< trim END
        vim9script
        def g:Func(): string
            return 'global'
--- 209,215 ----
  enddef
  
  def Test_global_local_function()
!   var lines =<< trim END
        vim9script
        def g:Func(): string
            return 'global'
***************
*** 233,245 ****
  enddef
  
  def Test_local_function_shadows_global()
!   let lines =<< trim END
        vim9script
        def g:Gfunc(): string
          return 'global'
        enddef
        def AnotherFunc(): number
!         let Gfunc = function('len')
          return Gfunc('testing')
        enddef
        g:Gfunc()->assert_equal('global')
--- 233,245 ----
  enddef
  
  def Test_local_function_shadows_global()
!   var lines =<< trim END
        vim9script
        def g:Gfunc(): string
          return 'global'
        enddef
        def AnotherFunc(): number
!         var Gfunc = function('len')
          return Gfunc('testing')
        enddef
        g:Gfunc()->assert_equal('global')
***************
*** 272,278 ****
    CheckDefFailure(['bufnr(xxx)'], 'E1001:')
    CheckScriptFailure(['def Func(Ref: func(s: string))'], 'E475:')
  
!   let lines =<< trim END
      vim9script
      def Func(s: string)
        echo s
--- 272,278 ----
    CheckDefFailure(['bufnr(xxx)'], 'E1001:')
    CheckScriptFailure(['def Func(Ref: func(s: string))'], 'E475:')
  
!   var lines =<< trim END
      vim9script
      def Func(s: string)
        echo s
***************
*** 292,298 ****
      defcompile
    END
    writefile(lines, 'Xscript')
!   let didCatch = false
    try
      source Xscript
    catch
--- 292,298 ----
      defcompile
    END
    writefile(lines, 'Xscript')
!   var didCatch = false
    try
      source Xscript
    catch
***************
*** 328,334 ****
  
  " Default arg and varargs
  def MyDefVarargs(one: string, two = 'foo', ...rest: list<string>): string
!   let res = one .. ',' .. two
    for s in rest
      res ..= ',' .. s
    endfor
--- 328,334 ----
  
  " Default arg and varargs
  def MyDefVarargs(one: string, two = 'foo', ...rest: list<string>): string
!   var res = one .. ',' .. two
    for s in rest
      res ..= ',' .. s
    endfor
***************
*** 345,351 ****
    CheckDefFailure(['MyDefVarargs("one", "two", 123)'],
        'E1013: Argument 3: type mismatch, expected string but got number')
  
!   let lines =<< trim END
        vim9script
        def Func(...l: list<string>)
          echo l
--- 345,351 ----
    CheckDefFailure(['MyDefVarargs("one", "two", 123)'],
        'E1013: Argument 3: type mismatch, expected string but got number')
  
!   var lines =<< trim END
        vim9script
        def Func(...l: list<string>)
          echo l
***************
*** 410,416 ****
  enddef
  
  def Test_call_call()
!   let l = [3, 2, 1]
    call('reverse', [l])
    l->assert_equal([1, 2, 3])
  enddef
--- 410,416 ----
  enddef
  
  def Test_call_call()
!   var l = [3, 2, 1]
    call('reverse', [l])
    l->assert_equal([1, 2, 3])
  enddef
***************
*** 430,459 ****
  enddef
  
  def Test_func_type_varargs()
!   let RefDefArg: func(?string)
    RefDefArg = FuncOneDefArg
    RefDefArg()
    s:value->assert_equal('text')
    RefDefArg('some')
    s:value->assert_equal('some')
  
!   let 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:')
  
!   let 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:')
  enddef
  
  " Only varargs
--- 430,459 ----
  enddef
  
  def Test_func_type_varargs()
!   var RefDefArg: func(?string)
    RefDefArg = FuncOneDefArg
    RefDefArg()
    s:value->assert_equal('text')
    RefDefArg('some')
    s:value->assert_equal('some')
  
!   var RefDef2Arg: func(?number, ?string): string
    RefDef2Arg = FuncTwoDefArg
    RefDef2Arg()->assert_equal('123text')
    RefDef2Arg(99)->assert_equal('99text')
    RefDef2Arg(77, 'some')->assert_equal('77some')
  
!   CheckDefFailure(['var RefWrong: func(string?)'], 'E1010:')
!   CheckDefFailure(['var RefWrong: func(?string, string)'], 'E1007:')
  
!   var RefVarargs: func(...list<string>): string
    RefVarargs = FuncVarargs
    RefVarargs()->assert_equal('')
    RefVarargs('one')->assert_equal('one')
    RefVarargs('one', 'two')->assert_equal('one,two')
  
!   CheckDefFailure(['var RefWrong: func(...list<string>, string)'], 'E110:')
!   CheckDefFailure(['var RefWrong: func(...list<string>, ?string)'], 'E110:')
  enddef
  
  " Only varargs
***************
*** 470,476 ****
  enddef
  
  def Test_using_var_as_arg()
!   writefile(['def Func(x: number)',  'let x = 234', 'enddef', 'defcompile'], 
'Xdef')
    assert_fails('so Xdef', 'E1006:', '', 1, 'Func')
    delete('Xdef')
  enddef
--- 470,476 ----
  enddef
  
  def Test_using_var_as_arg()
!   writefile(['def Func(x: number)',  'var x = 234', 'enddef', 'defcompile'], 
'Xdef')
    assert_fails('so Xdef', 'E1006:', '', 1, 'Func')
    delete('Xdef')
  enddef
***************
*** 485,494 ****
  
  def Test_assign_to_argument()
    # works for dict and list
!   let d: dict<string> = {}
    DictArg(d)
    d['key']->assert_equal('value')
!   let l: list<string> = []
    ListArg(l)
    l[0]->assert_equal('value')
  
--- 485,494 ----
  
  def Test_assign_to_argument()
    # works for dict and list
!   var d: dict<string> = {}
    DictArg(d)
    d['key']->assert_equal('value')
!   var l: list<string> = []
    ListArg(l)
    l[0]->assert_equal('value')
  
***************
*** 518,529 ****
    assert_fails('NotAFunc()', 'E117:', '', 2, 'Test_call_funcref') # comment 
after call
    assert_fails('g:NotAFunc()', 'E117:', '', 3, 'Test_call_funcref')
  
!   let lines =<< trim END
      vim9script
      def RetNumber(): number
        return 123
      enddef
!     let Funcref: func: number = function('RetNumber')
      Funcref()->assert_equal(123)
    END
    CheckScriptSuccess(lines)
--- 518,529 ----
    assert_fails('NotAFunc()', 'E117:', '', 2, 'Test_call_funcref') # comment 
after call
    assert_fails('g:NotAFunc()', 'E117:', '', 3, 'Test_call_funcref')
  
!   var lines =<< trim END
      vim9script
      def RetNumber(): number
        return 123
      enddef
!     var Funcref: func: number = function('RetNumber')
      Funcref()->assert_equal(123)
    END
    CheckScriptSuccess(lines)
***************
*** 536,542 ****
      def Bar(F: func: number): number
        return F()
      enddef
!     let Funcref = function('RetNumber')
      Bar(Funcref)->assert_equal(123)
    END
    CheckScriptSuccess(lines)
--- 536,542 ----
      def Bar(F: func: number): number
        return F()
      enddef
!     var Funcref = function('RetNumber')
      Bar(Funcref)->assert_equal(123)
    END
    CheckScriptSuccess(lines)
***************
*** 546,552 ****
      def UseNumber(nr: number)
        echo nr
      enddef
!     let Funcref: func(number) = function('UseNumber')
      Funcref(123)
    END
    CheckScriptSuccess(lines)
--- 546,552 ----
      def UseNumber(nr: number)
        echo nr
      enddef
!     var Funcref: func(number) = function('UseNumber')
      Funcref(123)
    END
    CheckScriptSuccess(lines)
***************
*** 556,562 ****
      def UseNumber(nr: number)
        echo nr
      enddef
!     let Funcref: func(string) = function('UseNumber')
    END
    CheckScriptFailure(lines, 'E1012: Type mismatch; expected func(string) but 
got func(number)')
  
--- 556,562 ----
      def UseNumber(nr: number)
        echo nr
      enddef
!     var Funcref: func(string) = function('UseNumber')
    END
    CheckScriptFailure(lines, 'E1012: Type mismatch; expected func(string) but 
got func(number)')
  
***************
*** 565,571 ****
      def EchoNr(nr = 34)
        g:echo = nr
      enddef
!     let Funcref: func(?number) = function('EchoNr')
      Funcref()
      g:echo->assert_equal(34)
      Funcref(123)
--- 565,571 ----
      def EchoNr(nr = 34)
        g:echo = nr
      enddef
!     var Funcref: func(?number) = function('EchoNr')
      Funcref()
      g:echo->assert_equal(34)
      Funcref(123)
***************
*** 578,584 ****
      def EchoList(...l: list<number>)
        g:echo = l
      enddef
!     let Funcref: func(...list<number>) = function('EchoList')
      Funcref()
      g:echo->assert_equal([])
      Funcref(1, 2, 3)
--- 578,584 ----
      def EchoList(...l: list<number>)
        g:echo = l
      enddef
!     var Funcref: func(...list<number>) = function('EchoList')
      Funcref()
      g:echo->assert_equal([])
      Funcref(1, 2, 3)
***************
*** 593,599 ****
        g:listarg = l
        return nr
      enddef
!     let Funcref: func(number, ?number, ...list<number>): number = 
function('OptAndVar')
      Funcref(10)->assert_equal(10)
      g:optarg->assert_equal(12)
      g:listarg->assert_equal([])
--- 593,599 ----
        g:listarg = l
        return nr
      enddef
!     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,634 ****
  
  def CombineFuncrefTypes()
    # same arguments, different return type
!   let Ref1: func(bool): string
!   let Ref2: func(bool): number
!   let 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
    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
    Refb3 = g:cond ? Refb1 : Refb2
  enddef
  
--- 614,634 ----
  
  def CombineFuncrefTypes()
    # same arguments, different return type
!   var Ref1: func(bool): string
!   var Ref2: func(bool): number
!   var Ref3: func(bool): any
    Ref3 = g:cond ? Ref1 : Ref2
  
    # different number of arguments
!   var Refa1: func(bool): number
!   var Refa2: func(bool, number): number
!   var Refa3: func: number
    Refa3 = g:cond ? Refa1 : Refa2
  
    # different argument types
!   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,728 ****
  enddef
  
  def Test_vim9script_call()
!   let lines =<< trim END
      vim9script
!     let var = ''
      def MyFunc(arg: string)
!        var = arg
      enddef
      MyFunc('foobar')
!     var->assert_equal('foobar')
  
!     let str = 'barfoo'
      str->MyFunc()
!     var->assert_equal('barfoo')
  
      g:value = 'value'
      g:value->MyFunc()
!     var->assert_equal('value')
  
!     let listvar = []
      def ListFunc(arg: list<number>)
         listvar = arg
      enddef
      [1, 2, 3]->ListFunc()
      listvar->assert_equal([1, 2, 3])
  
!     let dictvar = {}
      def DictFunc(arg: dict<number>)
         dictvar = arg
      enddef
--- 698,728 ----
  enddef
  
  def Test_vim9script_call()
!   var lines =<< trim END
      vim9script
!     var name = ''
      def MyFunc(arg: string)
!        name = arg
      enddef
      MyFunc('foobar')
!     name->assert_equal('foobar')
  
!     var str = 'barfoo'
      str->MyFunc()
!     name->assert_equal('barfoo')
  
      g:value = 'value'
      g:value->MyFunc()
!     name->assert_equal('value')
  
!     var listvar = []
      def ListFunc(arg: list<number>)
         listvar = arg
      enddef
      [1, 2, 3]->ListFunc()
      listvar->assert_equal([1, 2, 3])
  
!     var dictvar = {}
      def DictFunc(arg: dict<number>)
         dictvar = arg
      enddef
***************
*** 738,765 ****
      dictvar->assert_equal(#{a: 3, b: 4})
  
      ('text')->MyFunc()
!     var->assert_equal('text')
      ("some")->MyFunc()
!     var->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')
      "xyz"->MyFunc()
!     var->assert_equal('xyz')
  
      def UseString()
        'xyork'->MyFunc()
      enddef
      UseString()
!     var->assert_equal('xyork')
  
      def UseString2()
        "knife"->MyFunc()
      enddef
      UseString2()
!     var->assert_equal('knife')
  
      # prepending a colon makes it a mark
      new
--- 738,765 ----
      dictvar->assert_equal(#{a: 3, b: 4})
  
      ('text')->MyFunc()
!     name->assert_equal('text')
      ("some")->MyFunc()
!     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()
!     name->assert_equal('asdfasdf')
      "xyz"->MyFunc()
!     name->assert_equal('xyz')
  
      def UseString()
        'xyork'->MyFunc()
      enddef
      UseString()
!     name->assert_equal('xyork')
  
      def UseString2()
        "knife"->MyFunc()
      enddef
      UseString2()
!     name->assert_equal('knife')
  
      # prepending a colon makes it a mark
      new
***************
*** 773,779 ****
          'continued'
          )
      assert_equal('continued',
!             var
              )
  
      call MyFunc(
--- 773,779 ----
          'continued'
          )
      assert_equal('continued',
!             name
              )
  
      call MyFunc(
***************
*** 783,789 ****
          )
      assert_equal(
          'morelines',
!         var)
    END
    writefile(lines, 'Xcall.vim')
    source Xcall.vim
--- 783,789 ----
          )
      assert_equal(
          'morelines',
!         name)
    END
    writefile(lines, 'Xcall.vim')
    source Xcall.vim
***************
*** 791,801 ****
  enddef
  
  def Test_vim9script_call_fail_decl()
!   let lines =<< trim END
      vim9script
!     let var = ''
      def MyFunc(arg: string)
!        let var = 123
      enddef
      defcompile
    END
--- 791,801 ----
  enddef
  
  def Test_vim9script_call_fail_decl()
!   var lines =<< trim END
      vim9script
!     var name = ''
      def MyFunc(arg: string)
!        var name = 123
      enddef
      defcompile
    END
***************
*** 803,809 ****
  enddef
  
  def Test_vim9script_call_fail_type()
!   let lines =<< trim END
      vim9script
      def MyFunc(arg: string)
        echo arg
--- 803,809 ----
  enddef
  
  def Test_vim9script_call_fail_type()
!   var lines =<< trim END
      vim9script
      def MyFunc(arg: string)
        echo arg
***************
*** 814,820 ****
  enddef
  
  def Test_vim9script_call_fail_const()
!   let lines =<< trim END
      vim9script
      const var = ''
      def MyFunc(arg: string)
--- 814,820 ----
  enddef
  
  def Test_vim9script_call_fail_const()
!   var lines =<< trim END
      vim9script
      const var = ''
      def MyFunc(arg: string)
***************
*** 831,837 ****
  " recognized.
  func Test_function_python()
    CheckFeature python3
!   let py = 'python3'
    execute py "<< EOF"
  def do_something():
    return 1
--- 831,837 ----
  " recognized.
  func Test_function_python()
    CheckFeature python3
!   var py = 'python3'
    execute py "<< EOF"
  def do_something():
    return 1
***************
*** 839,845 ****
  endfunc
  
  def Test_delfunc()
!   let lines =<< trim END
      vim9script
      def g:GoneSoon()
        echo 'hello'
--- 839,845 ----
  endfunc
  
  def Test_delfunc()
!   var lines =<< trim END
      vim9script
      def g:GoneSoon()
        echo 'hello'
***************
*** 881,887 ****
  enddef
  
  def Test_vim9script_func()
!   let lines =<< trim END
      vim9script
      func Func(arg)
        echo a:arg
--- 881,887 ----
  enddef
  
  def Test_vim9script_func()
!   var lines =<< trim END
      vim9script
      func Func(arg)
        echo a:arg
***************
*** 992,1004 ****
  enddef
  
  def Test_func_type()
!   let Ref1: func()
    s:funcResult = 0
    Ref1 = FuncNoArgNoRet
    Ref1()
    s:funcResult->assert_equal(11)
  
!   let Ref2: func
    s:funcResult = 0
    Ref2 = FuncNoArgNoRet
    Ref2()
--- 992,1004 ----
  enddef
  
  def Test_func_type()
!   var Ref1: func()
    s:funcResult = 0
    Ref1 = FuncNoArgNoRet
    Ref1()
    s:funcResult->assert_equal(11)
  
!   var Ref2: func
    s:funcResult = 0
    Ref2 = FuncNoArgNoRet
    Ref2()
***************
*** 1021,1027 ****
  enddef
  
  def Test_repeat_return_type()
!   let res = 0
    for n in repeat([1], 3)
      res += n
    endfor
--- 1021,1027 ----
  enddef
  
  def Test_repeat_return_type()
!   var res = 0
    for n in repeat([1], 3)
      res += n
    endfor
***************
*** 1036,1042 ****
  
  def Test_argv_return_type()
    next fileone filetwo
!   let res = ''
    for name in argv()
      res ..= name
    endfor
--- 1036,1042 ----
  
  def Test_argv_return_type()
    next fileone filetwo
!   var res = ''
    for name in argv()
      res ..= name
    endfor
***************
*** 1044,1103 ****
  enddef
  
  def Test_func_type_part()
!   let 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')
  
!   let 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)')
  
!   let 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')
  
!   let 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')
  enddef
  
  def Test_func_type_fails()
!   CheckDefFailure(['let 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(['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:')
  enddef
  
  def Test_func_return_type()
!   let nr: number
    nr = FuncNoArgRetNumber()
    nr->assert_equal(1234)
  
    nr = FuncOneArgRetAny(122)
    nr->assert_equal(122)
  
!   let str: string
    str = FuncOneArgRetAny('yes')
    str->assert_equal('yes')
  
!   CheckDefFailure(['let str: string', 'str = FuncNoArgRetNumber()'], 'E1012: 
Type mismatch; expected string but got number')
  enddef
  
  def MultiLine(
--- 1044,1103 ----
  enddef
  
  def Test_func_type_part()
!   var RefVoid: func: void
    RefVoid = FuncNoArgNoRet
    RefVoid = FuncOneArgNoRet
!   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')
  
!   var RefAny: func(): any
    RefAny = FuncNoArgRetNumber
    RefAny = FuncNoArgRetString
!   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)')
  
!   var RefNr: func: number
    RefNr = FuncNoArgRetNumber
    RefNr = FuncOneArgRetNumber
!   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')
  
!   var RefStr: func: string
    RefStr = FuncNoArgRetString
    RefStr = FuncOneArgRetString
!   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(['var ref1: func()'], 'E704:')
  
!   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(['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()
!   var nr: number
    nr = FuncNoArgRetNumber()
    nr->assert_equal(1234)
  
    nr = FuncOneArgRetAny(122)
    nr->assert_equal(122)
  
!   var str: string
    str = FuncOneArgRetAny('yes')
    str->assert_equal('yes')
  
!   CheckDefFailure(['var str: string', 'str = FuncNoArgRetNumber()'], 'E1012: 
Type mismatch; expected string but got number')
  enddef
  
  def MultiLine(
***************
*** 1161,1167 ****
  
  def Test_error_reporting()
    # comment lines at the start of the function
!   let lines =<< trim END
      " comment
      def Func()
        # comment
--- 1161,1167 ----
  
  def Test_error_reporting()
    # comment lines at the start of the function
!   var lines =<< trim END
      " comment
      def Func()
        # comment
***************
*** 1183,1189 ****
    lines =<< trim END
      " comment
      def Func()
!       let x = 1234
        # comment
        # comment
        invalid
--- 1183,1189 ----
    lines =<< trim END
      " comment
      def Func()
!       var x = 1234
        # comment
        # comment
        invalid
***************
*** 1202,1210 ****
    lines =<< trim END
      vim9script
      def Func()
!       let db = #{foo: 1, bar: 2}
        # comment
!       let x = db.asdf
      enddef
      defcompile
      Func()
--- 1202,1210 ----
    lines =<< trim END
      vim9script
      def Func()
!       var db = #{foo: 1, bar: 2}
        # comment
!       var x = db.asdf
      enddef
      defcompile
      Func()
***************
*** 1222,1235 ****
  
  def Test_deleted_function()
    CheckDefExecFailure([
!       'let RefMe: func = function("g:DelMe")',
        'delfunc g:DelMe',
        'echo RefMe()'], 'E117:')
  enddef
  
  def Test_unknown_function()
    CheckDefExecFailure([
!       'let Ref: func = function("NotExist")',
        'delfunc g:NotExist'], 'E700:')
  enddef
  
--- 1222,1235 ----
  
  def Test_deleted_function()
    CheckDefExecFailure([
!       'var RefMe: func = function("g:DelMe")',
        'delfunc g:DelMe',
        'echo RefMe()'], 'E117:')
  enddef
  
  def Test_unknown_function()
    CheckDefExecFailure([
!       'var Ref: func = function("NotExist")',
        'delfunc g:NotExist'], 'E700:')
  enddef
  
***************
*** 1238,1249 ****
  enddef
  
  def Test_closure_simple()
!   let local = 'some '
    RefFunc({s -> local .. s})->assert_equal('some more')
  enddef
  
  def MakeRef()
!   let local = 'some '
    g:Ref = {s -> local .. s}
  enddef
  
--- 1238,1249 ----
  enddef
  
  def Test_closure_simple()
!   var local = 'some '
    RefFunc({s -> local .. s})->assert_equal('some more')
  enddef
  
  def MakeRef()
!   var local = 'some '
    g:Ref = {s -> local .. s}
  enddef
  
***************
*** 1254,1260 ****
  enddef
  
  def MakeTwoRefs()
!   let local = ['some']
    g:Extend = {s -> local->add(s)}
    g:Read = {-> local}
  enddef
--- 1254,1260 ----
  enddef
  
  def MakeTwoRefs()
!   var local = ['some']
    g:Extend = {s -> local->add(s)}
    g:Read = {-> local}
  enddef
***************
*** 1292,1303 ****
  enddef
  
  def MakeArgRefs(theArg: string)
!   let local = 'loc_val'
    g:UseArg = {s -> theArg .. '/' .. local .. '/' .. s}
  enddef
  
  def MakeArgRefsVarargs(theArg: string, ...rest: list<string>)
!   let local = 'the_loc'
    g:UseVararg = {s -> theArg .. '/' .. local .. '/' .. s .. '/' .. join(rest)}
  enddef
  
--- 1292,1303 ----
  enddef
  
  def MakeArgRefs(theArg: string)
!   var local = 'loc_val'
    g:UseArg = {s -> theArg .. '/' .. local .. '/' .. s}
  enddef
  
  def MakeArgRefsVarargs(theArg: string, ...rest: list<string>)
!   var local = 'the_loc'
    g:UseVararg = {s -> theArg .. '/' .. local .. '/' .. s .. '/' .. join(rest)}
  enddef
  
***************
*** 1313,1319 ****
  enddef
  
  def MakeGetAndAppendRefs()
!   let local = 'a'
  
    def Append(arg: string)
      local ..= arg
--- 1313,1319 ----
  enddef
  
  def MakeGetAndAppendRefs()
!   var local = 'a'
  
    def Append(arg: string)
      local ..= arg
***************
*** 1339,1345 ****
  enddef
  
  def Test_nested_closure()
!   let local = 'text'
    def Closure(arg: string): string
      return local .. arg
    enddef
--- 1339,1345 ----
  enddef
  
  def Test_nested_closure()
!   var local = 'text'
    def Closure(arg: string): string
      return local .. arg
    enddef
***************
*** 1351,1369 ****
  endfunc
  
  def Test_call_closure_not_compiled()
!   let text = 'text'
    g:Ref = {s ->  s .. text}
    GetResult(g:Ref)->assert_equal('sometext')
  enddef
  
  def Test_double_closure_fails()
!   let lines =<< trim END
      vim9script
      def Func()
!     let var = 0
!     for i in range(2)
!       timer_start(0, {-> var})
!     endfor
      enddef
      Func()
    END
--- 1351,1369 ----
  endfunc
  
  def Test_call_closure_not_compiled()
!   var text = 'text'
    g:Ref = {s ->  s .. text}
    GetResult(g:Ref)->assert_equal('sometext')
  enddef
  
  def Test_double_closure_fails()
!   var lines =<< trim END
      vim9script
      def Func()
!       var name = 0
!       for i in range(2)
!           timer_start(0, {-> name})
!       endfor
      enddef
      Func()
    END
***************
*** 1371,1377 ****
  enddef
  
  def Test_nested_closure_fails()
!   let lines =<< trim END
      vim9script
      def FuncA()
        FuncB(0)
--- 1371,1377 ----
  enddef
  
  def Test_nested_closure_fails()
!   var lines =<< trim END
      vim9script
      def FuncA()
        FuncB(0)
***************
*** 1385,1424 ****
  enddef
  
  def Test_sort_return_type()
!   let res: list<number>
    res = [1, 2, 3]->sort()
  enddef
  
  def Test_sort_argument()
!   let res = ['b', 'a', 'c']->sort('i')
    res->assert_equal(['a', 'b', 'c'])
  enddef
  
  def Test_getqflist_return_type()
!   let l = getqflist()
    l->assert_equal([])
  
!   let d = getqflist(#{items: 0})
    d->assert_equal(#{items: []})
  enddef
  
  def Test_getloclist_return_type()
!   let l = getloclist(1)
    l->assert_equal([])
  
!   let d = getloclist(1, #{items: 0})
    d->assert_equal(#{items: []})
  enddef
  
  def Test_copy_return_type()
!   let l = copy([1, 2, 3])
!   let res = 0
    for n in l
      res += n
    endfor
    res->assert_equal(6)
  
!   let dl = deepcopy([1, 2, 3])
    res = 0
    for n in dl
      res += n
--- 1385,1424 ----
  enddef
  
  def Test_sort_return_type()
!   var res: list<number>
    res = [1, 2, 3]->sort()
  enddef
  
  def Test_sort_argument()
!   var res = ['b', 'a', 'c']->sort('i')
    res->assert_equal(['a', 'b', 'c'])
  enddef
  
  def Test_getqflist_return_type()
!   var l = getqflist()
    l->assert_equal([])
  
!   var d = getqflist(#{items: 0})
    d->assert_equal(#{items: []})
  enddef
  
  def Test_getloclist_return_type()
!   var l = getloclist(1)
    l->assert_equal([])
  
!   var d = getloclist(1, #{items: 0})
    d->assert_equal(#{items: []})
  enddef
  
  def Test_copy_return_type()
!   var l = copy([1, 2, 3])
!   var res = 0
    for n in l
      res += n
    endfor
    res->assert_equal(6)
  
!   var dl = deepcopy([1, 2, 3])
    res = 0
    for n in dl
      res += n
***************
*** 1429,1436 ****
  enddef
  
  def Test_extend_return_type()
!   let l = extend([1, 2], [3])
!   let res = 0
    for n in l
      res += n
    endfor
--- 1429,1436 ----
  enddef
  
  def Test_extend_return_type()
!   var l = extend([1, 2], [3])
!   var res = 0
    for n in l
      res += n
    endfor
***************
*** 1442,1449 ****
  enddef
  
  def Test_insert_return_type()
!   let l = insert([2, 1], 3)
!   let res = 0
    for n in l
      res += n
    endfor
--- 1442,1449 ----
  enddef
  
  def Test_insert_return_type()
!   var l = insert([2, 1], 3)
!   var res = 0
    for n in l
      res += n
    endfor
***************
*** 1456,1463 ****
  enddef
  
  def Test_reverse_return_type()
!   let l = reverse([1, 2, 3])
!   let res = 0
    for n in l
      res += n
    endfor
--- 1456,1463 ----
  enddef
  
  def Test_reverse_return_type()
!   var l = reverse([1, 2, 3])
!   var res = 0
    for n in l
      res += n
    endfor
***************
*** 1465,1472 ****
  enddef
  
  def Test_remove_return_type()
!   let l = remove(#{one: [1, 2], two: [3, 4]}, 'one')
!   let res = 0
    for n in l
      res += n
    endfor
--- 1465,1472 ----
  enddef
  
  def Test_remove_return_type()
!   var l = remove(#{one: [1, 2], two: [3, 4]}, 'one')
!   var res = 0
    for n in l
      res += n
    endfor
***************
*** 1474,1481 ****
  enddef
  
  def Test_filter_return_type()
!   let l = filter([1, 2, 3], {-> 1})
!   let res = 0
    for n in l
      res += n
    endfor
--- 1474,1481 ----
  enddef
  
  def Test_filter_return_type()
!   var l = filter([1, 2, 3], {-> 1})
!   var res = 0
    for n in l
      res += n
    endfor
***************
*** 1483,1489 ****
  enddef
  
  def Test_bufnr()
!   let buf = bufnr()
    bufnr('%')->assert_equal(buf)
  
    buf = bufnr('Xdummy', true)
--- 1483,1489 ----
  enddef
  
  def Test_bufnr()
!   var buf = bufnr()
    bufnr('%')->assert_equal(buf)
  
    buf = bufnr('Xdummy', true)
***************
*** 1502,1510 ****
  enddef
  
  def Test_getreg_return_type()
!   let s1: string = getreg('"')
!   let s2: string = getreg('"', 1)
!   let s3: list<string> = getreg('"', 1, 1)
  enddef
  
  def Wrong_dict_key_type(items: list<number>): list<number>
--- 1502,1510 ----
  enddef
  
  def Test_getreg_return_type()
!   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,1525 ****
  enddef
  
  def Line_continuation_in_def(dir: string = ''): string
!     let path: string = empty(dir)
!             \ ? 'empty'
!             \ : 'full'
!     return path
  enddef
  
  def Test_line_continuation_in_def()
--- 1516,1525 ----
  enddef
  
  def Line_continuation_in_def(dir: string = ''): string
!   var path: string = empty(dir)
!           \ ? 'empty'
!           \ : 'full'
!   return path
  enddef
  
  def Test_line_continuation_in_def()
***************
*** 1527,1533 ****
  enddef
  
  def Line_continuation_in_lambda(): list<string>
!   let x = range(97, 100)
        ->map({_, v -> nr2char(v)
            ->toupper()})
        ->reverse()
--- 1527,1533 ----
  enddef
  
  def Line_continuation_in_lambda(): list<string>
!   var x = range(97, 100)
        ->map({_, v -> nr2char(v)
            ->toupper()})
        ->reverse()
***************
*** 1571,1579 ****
  enddef
  
  def Test_bufwinid()
!   let origwin = win_getid()
    below split SomeFile
!   let SomeFileID = win_getid()
    below split OtherFile
    below split SomeFile
    bufwinid('SomeFile')->assert_equal(SomeFileID)
--- 1571,1579 ----
  enddef
  
  def Test_bufwinid()
!   var origwin = win_getid()
    below split SomeFile
!   var SomeFileID = win_getid()
    below split OtherFile
    below split SomeFile
    bufwinid('SomeFile')->assert_equal(SomeFileID)
***************
*** 1596,1602 ****
  enddef
  
  def Test_getbufinfo()
!   let bufinfo = getbufinfo(bufnr())
    getbufinfo('%')->assert_equal(bufinfo)
  
    edit Xtestfile1
--- 1596,1602 ----
  enddef
  
  def Test_getbufinfo()
!   var bufinfo = getbufinfo(bufnr())
    getbufinfo('%')->assert_equal(bufinfo)
  
    edit Xtestfile1
***************
*** 1609,1617 ****
  
  def Test_getbufline()
    e SomeFile
!   let buf = bufnr()
    e #
!   let lines = ['aaa', 'bbb', 'ccc']
    setbufline(buf, 1, lines)
    getbufline('#', 1, '$')->assert_equal(lines)
  
--- 1609,1617 ----
  
  def Test_getbufline()
    e SomeFile
!   var buf = bufnr()
    e #
!   var lines = ['aaa', 'bbb', 'ccc']
    setbufline(buf, 1, lines)
    getbufline('#', 1, '$')->assert_equal(lines)
  
***************
*** 1621,1627 ****
  def Test_getchangelist()
    new
    setline(1, 'some text')
!   let changelist = bufnr()->getchangelist()
    getchangelist('%')->assert_equal(changelist)
    bwipe!
  enddef
--- 1621,1627 ----
  def Test_getchangelist()
    new
    setline(1, 'some text')
!   var changelist = bufnr()->getchangelist()
    getchangelist('%')->assert_equal(changelist)
    bwipe!
  enddef
***************
*** 1634,1646 ****
  
  def Test_getcompletion()
    set wildignore=*.vim,*~
!   let l = getcompletion('run', 'file', true)
    l->assert_equal([])
    set wildignore&
  enddef
  
  def Test_getreg()
!   let lines = ['aaa', 'bbb', 'ccc']
    setreg('a', lines)
    getreg('a', true, true)->assert_equal(lines)
  enddef
--- 1634,1646 ----
  
  def Test_getcompletion()
    set wildignore=*.vim,*~
!   var l = getcompletion('run', 'file', true)
    l->assert_equal([])
    set wildignore&
  enddef
  
  def Test_getreg()
!   var lines = ['aaa', 'bbb', 'ccc']
    setreg('a', lines)
    getreg('a', true, true)->assert_equal(lines)
  enddef
***************
*** 1669,1676 ****
  enddef
  
  def Test_list2str_str2list_utf8()
!   let s = "\u3042\u3044"
!   let l = [0x3042, 0x3044]
    str2list(s, true)->assert_equal(l)
    list2str(l, true)->assert_equal(s)
  enddef
--- 1669,1676 ----
  enddef
  
  def Test_list2str_str2list_utf8()
!   var s = "\u3042\u3044"
!   var l = [0x3042, 0x3044]
    str2list(s, true)->assert_equal(l)
    list2str(l, true)->assert_equal(s)
  enddef
***************
*** 1682,1688 ****
  enddef
  
  def Test_maparg()
!   let lnum = str2nr(expand('<sflnum>'))
    map foo bar
    maparg('foo', '', false, true)->assert_equal(#{
          lnum: lnum + 1,
--- 1682,1688 ----
  enddef
  
  def Test_maparg()
!   var lnum = str2nr(expand('<sflnum>'))
    map foo bar
    maparg('foo', '', false, true)->assert_equal(#{
          lnum: lnum + 1,
***************
*** 1718,1724 ****
  def Test_search()
    new
    setline(1, ['foo', 'bar'])
!   let val = 0
    # skip expr returns boolean
    search('bar', 'W', 0, 0, {-> val == 1})->assert_equal(2)
    :1
--- 1718,1724 ----
  def Test_search()
    new
    setline(1, ['foo', 'bar'])
!   var val = 0
    # skip expr returns boolean
    search('bar', 'W', 0, 0, {-> val == 1})->assert_equal(2)
    :1
***************
*** 1766,1780 ****
  enddef
  
  def Test_setloclist()
!   let items = [#{filename: '/tmp/file', lnum: 1, valid: true}]
!   let what = #{items: items}
    setqflist([], ' ', what)
    setloclist(0, [], ' ', what)
  enddef
  
  def Test_setreg()
    setreg('a', ['aaa', 'bbb', 'ccc'])
!   let reginfo = getreginfo('a')
    setreg('a', reginfo)
    getreginfo('a')->assert_equal(reginfo)
  enddef 
--- 1766,1780 ----
  enddef
  
  def Test_setloclist()
!   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'])
!   var reginfo = getreginfo('a')
    setreg('a', reginfo)
    getreginfo('a')->assert_equal(reginfo)
  enddef 
***************
*** 1800,1809 ****
  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']]"
    actual->assert_equal(expected)
  enddef
  
--- 1800,1809 ----
  enddef
  
  def Test_submatch()
!   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,1824 ****
    if !has('terminal')
      MissingFeature 'terminal'
    else
!     let buf = Run_shell_in_terminal({})
      term_gettty(buf, true)->assert_notequal('')
      StopShellInTerminal(buf)
    endif
--- 1818,1824 ----
    if !has('terminal')
      MissingFeature 'terminal'
    else
!     var buf = Run_shell_in_terminal({})
      term_gettty(buf, true)->assert_notequal('')
      StopShellInTerminal(buf)
    endif
***************
*** 1829,1835 ****
      MissingFeature 'terminal'
    else
      botright new
!     let winnr = winnr()
      term_start(&shell, #{curwin: true})
      winnr()->assert_equal(winnr)
      bwipe!
--- 1829,1835 ----
      MissingFeature 'terminal'
    else
      botright new
!     var winnr = winnr()
      term_start(&shell, #{curwin: true})
      winnr()->assert_equal(winnr)
      bwipe!
***************
*** 1837,1845 ****
  enddef
  
  def Test_timer_paused()
!   let id = timer_start(50, {-> 0})
    timer_pause(id, true)
!   let info = timer_info(id)
    info[0]['paused']->assert_equal(1)
    timer_stop(id)
  enddef
--- 1837,1845 ----
  enddef
  
  def Test_timer_paused()
!   var id = timer_start(50, {-> 0})
    timer_pause(id, true)
!   var info = timer_info(id)
    info[0]['paused']->assert_equal(1)
    timer_stop(id)
  enddef
***************
*** 1884,1890 ****
  enddef
  
  def Test_partial_call()
!   let Xsetlist = function('setloclist', [0])
    Xsetlist([], ' ', {'title': 'test'})
    getloclist(0, {'title': 1})->assert_equal({'title': 'test'})
  
--- 1884,1890 ----
  enddef
  
  def Test_partial_call()
!   var Xsetlist = function('setloclist', [0])
    Xsetlist([], ' ', {'title': 'test'})
    getloclist(0, {'title': 1})->assert_equal({'title': 'test'})
  
***************
*** 1909,1915 ****
  def Test_restore_modifiers()
    # check that when compiling a :def function command modifiers are not messed
    # up.
!   let lines =<< trim END
        vim9script
        set eventignore=
        autocmd QuickFixCmdPost * copen
--- 1909,1915 ----
  def Test_restore_modifiers()
    # check that when compiling a :def function command modifiers are not messed
    # up.
!   var lines =<< trim END
        vim9script
        set eventignore=
        autocmd QuickFixCmdPost * copen
*** ../vim-8.2.1765/src/testdir/test_vim9_script.vim    2020-09-27 
15:19:23.642118924 +0200
--- src/testdir/test_vim9_script.vim    2020-09-27 22:42:37.036866582 +0200
***************
*** 6,14 ****
  source vim9.vim
  source shared.vim
  
- " TODO: remove later
- let v:disallow_let = 1
- 
  def Test_range_only()
    new
    setline(1, ['blah', 'Blah'])
--- 6,11 ----
*** ../vim-8.2.1765/src/testdir/test_maparg.vim 2020-09-06 15:58:33.383154915 
+0200
--- src/testdir/test_maparg.vim 2020-09-27 22:12:04.418817877 +0200
***************
*** 83,95 ****
  
  def Test_vim9_maparg()
    nmap { w
!   let one: string = maparg('{')
    assert_equal('w', one)
!   let two: string = maparg('{', 'n')
    assert_equal('w', two)
!   let three: string = maparg('{', 'n', 0)
    assert_equal('w', three)
!   let four: dict<any> = maparg('{', 'n', 0, 1)
    assert_equal(['{', 'w', 'n'], [four.lhs, four.rhs, four.mode])
    nunmap {
  enddef
--- 83,95 ----
  
  def Test_vim9_maparg()
    nmap { w
!   var one: string = maparg('{')
    assert_equal('w', one)
!   var two: string = maparg('{', 'n')
    assert_equal('w', two)
!   var three: string = maparg('{', 'n', 0)
    assert_equal('w', three)
!   var four: dict<any> = maparg('{', 'n', 0, 1)
    assert_equal(['{', 'w', 'n'], [four.lhs, four.rhs, four.mode])
    nunmap {
  enddef
*** ../vim-8.2.1765/src/testdir/test_popupwin.vim       2020-09-27 
21:16:41.760046900 +0200
--- src/testdir/test_popupwin.vim       2020-09-27 22:15:44.041961383 +0200
***************
*** 2690,2696 ****
    split
    wincmd b
    assert_equal(2, winnr())
!   let buf = term_start(&shell, #{hidden: 1})
    popup_create(buf, {})
    TermWait(buf, 100)
    popup_clear(true)
--- 2690,2696 ----
    split
    wincmd b
    assert_equal(2, winnr())
!   var buf = term_start(&shell, #{hidden: 1})
    popup_create(buf, {})
    TermWait(buf, 100)
    popup_clear(true)
*** ../vim-8.2.1765/src/testdir/test_textprop.vim       2020-09-20 
21:04:31.811898396 +0200
--- src/testdir/test_textprop.vim       2020-09-27 22:39:56.245338132 +0200
***************
*** 226,233 ****
      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')
    assert_equal(expected, result)
  
    prop_type_delete('misspell')
--- 226,233 ----
      endfor
    endfor
    cursor(1, 8)
!   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')
*** ../vim-8.2.1765/src/version.c       2020-09-27 21:58:42.153049879 +0200
--- src/version.c       2020-09-27 22:02:57.700330434 +0200
***************
*** 752,753 ****
--- 752,755 ----
  {   /* Add new patch number below this line */
+ /**/
+     1766,
  /**/

-- 
The goal of science is to build better mousetraps.
The goal of nature is to build better mice.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/202009272048.08RKm6ap254990%40masaka.moolenaar.net.

Raspunde prin e-mail lui