Patch 8.2.1623
Problem:    Vim9: using :call where it is not needed.
Solution:   Remove :call. (closes #6892)
Files:      src/testdir/test_maparg.vim, src/testdir/test_textprop.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


*** ../vim-8.2.1622/src/testdir/test_maparg.vim 2020-08-08 17:55:46.246417672 
+0200
--- src/testdir/test_maparg.vim 2020-09-06 15:54:57.015669161 +0200
***************
*** 90,96 ****
    let three: string = maparg('{', 'n', 0)
    assert_equal('w', three)
    let four: dict<any> = maparg('{', 'n', 0, 1)
!   call assert_equal(['{', 'w', 'n'], [four.lhs, four.rhs, four.mode])
    nunmap {
  enddef
  
--- 90,96 ----
    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
  
*** ../vim-8.2.1622/src/testdir/test_textprop.vim       2020-09-05 
20:59:55.108468975 +0200
--- src/testdir/test_textprop.vim       2020-09-06 15:54:57.015669161 +0200
***************
*** 334,343 ****
  
  def Test_prop_remove_vim9()
    new
!   call AddPropTypes()
!   call SetupPropsInFirstLine()
!   call assert_equal(1, prop_remove({'type': 'three', 'id': 13, 'both': true, 
'all': true}))
!   call DeletePropTypes()
    bwipe!
  enddef
  
--- 334,343 ----
  
  def Test_prop_remove_vim9()
    new
!   AddPropTypes()
!   SetupPropsInFirstLine()
!   assert_equal(1, prop_remove({'type': 'three', 'id': 13, 'both': true, 
'all': true}))
!   DeletePropTypes()
    bwipe!
  enddef
  
*** ../vim-8.2.1622/src/testdir/test_vim9_disassemble.vim       2020-08-16 
17:33:29.517887810 +0200
--- src/testdir/test_vim9_disassemble.vim       2020-09-06 15:54:57.015669161 
+0200
***************
*** 558,564 ****
  enddef
  
  def Test_disassemble_const_expr()
!   assert_equal("\nyes", execute('call HasEval()'))
    let instr = execute('disassemble HasEval')
    assert_match('HasEval\_s*' ..
          'if has("eval")\_s*' ..
--- 558,564 ----
  enddef
  
  def Test_disassemble_const_expr()
!   assert_equal("\nyes", execute('HasEval()'))
    let instr = execute('disassemble HasEval')
    assert_match('HasEval\_s*' ..
          'if has("eval")\_s*' ..
***************
*** 571,577 ****
          instr)
    assert_notmatch('JUMP', instr)
  
!   assert_equal("\nno", execute('call HasNothing()'))
    instr = execute('disassemble HasNothing')
    assert_match('HasNothing\_s*' ..
          'if has("nothing")\_s*' ..
--- 571,577 ----
          instr)
    assert_notmatch('JUMP', instr)
  
!   assert_equal("\nno", execute('HasNothing()'))
    instr = execute('disassemble HasNothing')
    assert_match('HasNothing\_s*' ..
          'if has("nothing")\_s*' ..
***************
*** 585,591 ****
    assert_notmatch('PUSHS "yes"', instr)
    assert_notmatch('JUMP', instr)
  
!   assert_equal("\neval", execute('call HasSomething()'))
    instr = execute('disassemble HasSomething')
    assert_match('HasSomething.*' ..
          'if has("nothing")\_s*' ..
--- 585,591 ----
    assert_notmatch('PUSHS "yes"', instr)
    assert_notmatch('JUMP', instr)
  
!   assert_equal("\neval", execute('HasSomething()'))
    instr = execute('disassemble HasSomething')
    assert_match('HasSomething.*' ..
          'if has("nothing")\_s*' ..
***************
*** 1088,1094 ****
          '\d\+ MEMBER\_s*' ..
          '\d\+ STORE $1\_s*',
          instr)
!   call assert_equal(1, DictMember())
  enddef
  
  let somelist = [1, 2, 3, 4, 5]
--- 1088,1094 ----
          '\d\+ MEMBER\_s*' ..
          '\d\+ STORE $1\_s*',
          instr)
!   assert_equal(1, DictMember())
  enddef
  
  let somelist = [1, 2, 3, 4, 5]
***************
*** 1156,1162 ****
          '\d NEGATENR\_s*' ..
          '\d STORE $2\_s*',
          instr)
!   call assert_equal(-9, NegateNumber())
  enddef
  
  def InvertBool(): bool
--- 1156,1162 ----
          '\d NEGATENR\_s*' ..
          '\d STORE $2\_s*',
          instr)
!   assert_equal(-9, NegateNumber())
  enddef
  
  def InvertBool(): bool
***************
*** 1181,1187 ****
          '\d 2BOOL (!!val)\_s*' ..
          '\d STORE $2\_s*',
          instr)
!   call assert_equal(true, InvertBool())
  enddef
  
  def Test_disassemble_compare()
--- 1181,1187 ----
          '\d 2BOOL (!!val)\_s*' ..
          '\d STORE $2\_s*',
          instr)
!   assert_equal(true, InvertBool())
  enddef
  
  def Test_disassemble_compare()
*** ../vim-8.2.1622/src/testdir/test_vim9_expr.vim      2020-09-05 
20:06:29.751863835 +0200
--- src/testdir/test_vim9_expr.vim      2020-09-06 15:56:00.283520613 +0200
***************
*** 122,128 ****
    lines =<< trim END
        vim9script
        try
!         call eval('0 ? 1: 2')
        catch
        endtry
        assert_equal(v:true, eval(string(v:true)))
--- 122,128 ----
    lines =<< trim END
        vim9script
        try
!         eval('0 ? 1: 2')
        catch
        endtry
        assert_equal(v:true, eval(string(v:true)))
***************
*** 132,138 ****
    lines =<< trim END
        vim9script
        try
!         call eval('0 ? 1 :2')
        catch
        endtry
        assert_equal(v:true, eval(string(v:true)))
--- 132,138 ----
    lines =<< trim END
        vim9script
        try
!         eval('0 ? 1 :2')
        catch
        endtry
        assert_equal(v:true, eval(string(v:true)))
***************
*** 480,486 ****
    assert_equal(false, 'abc' ==# 'ABC')
    set noignorecase
  
!   call CheckDefFailure(["let x = 'a' == xxx"], 'E1001:', 1)
  
    let bb = 0z3f
    assert_equal(true, 0z3f == bb)
--- 480,486 ----
    assert_equal(false, 'abc' ==# 'ABC')
    set noignorecase
  
!   CheckDefFailure(["let x = 'a' == xxx"], 'E1001:', 1)
  
    let bb = 0z3f
    assert_equal(true, 0z3f == bb)
***************
*** 1225,1231 ****
                        * yf[0])
    endif
  
!   call CheckDefFailure(["let x = 6 * xxx"], 'E1001', 1)
  enddef
  
  def Test_expr6_vim9script()
--- 1225,1231 ----
                        * yf[0])
    endif
  
!   CheckDefFailure(["let x = 6 * xxx"], 'E1001', 1)
  enddef
  
  def Test_expr6_vim9script()
***************
*** 1382,1390 ****
    let nr = <number>234
    assert_equal(234, nr)
  
!   call CheckDefFailure(["let x = <nr>123"], 'E1010:', 1)
!   call CheckDefFailure(["let x = <number >123"], 'E1068:', 1)
!   call CheckDefFailure(["let x = <number 123"], 'E1104:', 1)
  enddef
  
  " test low level expression
--- 1382,1390 ----
    let nr = <number>234
    assert_equal(234, nr)
  
!   CheckDefFailure(["let x = <nr>123"], 'E1010:', 1)
!   CheckDefFailure(["let x = <number >123"], 'E1068:', 1)
!   CheckDefFailure(["let x = <number 123"], 'E1104:', 1)
  enddef
  
  " test low level expression
***************
*** 1416,1422 ****
    assert_equal(g:blob_one, 0z01)
    assert_equal(g:blob_long, 0z0102.0304)
  
!   call CheckDefFailure(["let x = 0z123"], 'E973:', 1)
  enddef
  
  def Test_expr7_string()
--- 1416,1422 ----
    assert_equal(g:blob_one, 0z01)
    assert_equal(g:blob_long, 0z0102.0304)
  
!   CheckDefFailure(["let x = 0z123"], 'E973:', 1)
  enddef
  
  def Test_expr7_string()
***************
*** 1429,1444 ****
    assert_equal(g:string_long, "abcdefghijklm")
    assert_equal(g:string_special, "ab\ncd\ref\ekk")
  
!   call CheckDefFailure(['let x = "abc'], 'E114:', 1)
!   call CheckDefFailure(["let x = 'abc"], 'E115:', 1)
  enddef
  
  def Test_expr7_vimvar()
    let old: list<string> = v:oldfiles
    let compl: dict<any> = v:completed_item
  
!   call CheckDefFailure(["let old: list<number> = v:oldfiles"], 'E1012: type 
mismatch, expected list<number> but got list<string>', 1)
!   call CheckDefFailure(["let old: dict<number> = v:completed_item"], 'E1012: 
type mismatch, expected dict<number> but got dict<any>', 1)
  enddef
  
  def Test_expr7_special()
--- 1429,1444 ----
    assert_equal(g:string_long, "abcdefghijklm")
    assert_equal(g:string_special, "ab\ncd\ref\ekk")
  
!   CheckDefFailure(['let x = "abc'], 'E114:', 1)
!   CheckDefFailure(["let x = 'abc"], 'E115:', 1)
  enddef
  
  def Test_expr7_vimvar()
    let old: list<string> = v:oldfiles
    let compl: dict<any> = v:completed_item
  
!   CheckDefFailure(["let old: list<number> = v:oldfiles"], 'E1012: type 
mismatch, expected list<number> but got list<string>', 1)
!   CheckDefFailure(["let old: dict<number> = v:completed_item"], 'E1012: type 
mismatch, expected dict<number> but got dict<any>', 1)
  enddef
  
  def Test_expr7_special()
***************
*** 1460,1470 ****
    assert_equal(g:special_null, v:null)
    assert_equal(g:special_none, v:none)
  
!   call CheckDefFailure(['v:true = true'], 'E46:', 1)
!   call CheckDefFailure(['v:true = false'], 'E46:', 1)
!   call CheckDefFailure(['v:false = true'], 'E46:', 1)
!   call CheckDefFailure(['v:null = 11'], 'E46:', 1)
!   call CheckDefFailure(['v:none = 22'], 'E46:', 1)
  enddef
  
  def Test_expr7_special_vim9script()
--- 1460,1470 ----
    assert_equal(g:special_null, v:null)
    assert_equal(g:special_none, v:none)
  
!   CheckDefFailure(['v:true = true'], 'E46:', 1)
!   CheckDefFailure(['v:true = false'], 'E46:', 1)
!   CheckDefFailure(['v:false = true'], 'E46:', 1)
!   CheckDefFailure(['v:null = 11'], 'E46:', 1)
!   CheckDefFailure(['v:none = 22'], 'E46:', 1)
  enddef
  
  def Test_expr7_special_vim9script()
***************
*** 1509,1532 ****
        2] [3,
                4]
  
!   call CheckDefFailure(["let x = 1234[3]"], 'E1107:', 1)
!   call CheckDefExecFailure(["let x = g:anint[3]"], 'E1062:', 1)
  
!   call CheckDefFailure(["let x = g:list_mixed[xxx]"], 'E1001:', 1)
  
!   call CheckDefFailure(["let x = [1,2,3]"], 'E1069:', 1)
!   call CheckDefFailure(["let x = [1 ,2, 3]"], 'E1068:', 1)
  
!   call CheckDefExecFailure(["echo 1", "let x = [][0]", "echo 3"], 'E684:', 2)
! 
!   call CheckDefExecFailure(["let x = g:list_mixed['xx']"], 'E1029:', 1)
!   call CheckDefFailure(["let x = g:list_mixed["], 'E1097:', 2)
!   call CheckDefFailure(["let x = g:list_mixed[0"], 'E1097:', 2)
!   call CheckDefExecFailure(["let x = g:list_empty[3]"], 'E684:', 1)
!   call CheckDefFailure(["let l: list<number> = [234, 'x']"], 'E1012:', 1)
!   call CheckDefFailure(["let l: list<number> = ['x', 234]"], 'E1012:', 1)
!   call CheckDefFailure(["let l: list<string> = [234, 'x']"], 'E1012:', 1)
!   call CheckDefFailure(["let l: list<string> = ['x', 123]"], 'E1012:', 1)
  enddef
  
  def Test_expr7_list_vim9script()
--- 1509,1532 ----
        2] [3,
                4]
  
!   CheckDefFailure(["let x = 1234[3]"], 'E1107:', 1)
!   CheckDefExecFailure(["let x = g:anint[3]"], 'E1062:', 1)
  
!   CheckDefFailure(["let x = g:list_mixed[xxx]"], 'E1001:', 1)
  
!   CheckDefFailure(["let x = [1,2,3]"], 'E1069:', 1)
!   CheckDefFailure(["let x = [1 ,2, 3]"], 'E1068:', 1)
  
!   CheckDefExecFailure(["echo 1", "let x = [][0]", "echo 3"], 'E684:', 2)
! 
!   CheckDefExecFailure(["let x = g:list_mixed['xx']"], 'E1029:', 1)
!   CheckDefFailure(["let x = g:list_mixed["], 'E1097:', 2)
!   CheckDefFailure(["let x = g:list_mixed[0"], 'E1097:', 2)
!   CheckDefExecFailure(["let x = g:list_empty[3]"], 'E684:', 1)
!   CheckDefFailure(["let l: list<number> = [234, 'x']"], 'E1012:', 1)
!   CheckDefFailure(["let l: list<number> = ['x', 234]"], 'E1012:', 1)
!   CheckDefFailure(["let l: list<string> = [234, 'x']"], 'E1012:', 1)
!   CheckDefFailure(["let l: list<string> = ['x', 123]"], 'E1012:', 1)
  enddef
  
  def Test_expr7_list_vim9script()
***************
*** 1647,1655 ****
    assert_equal(false, LambdaUsingArg(0)())
    assert_equal(true, LambdaUsingArg(1)())
  
!   call CheckDefFailure(["filter([1, 2], {k,v -> 1})"], 'E1069:', 1)
    # error is in first line of the lambda
!   call CheckDefFailure(["let L = {a -> a + b}"], 'E1001:', 0)
  
    assert_equal('xxxyyy', 'xxx'->{a, b -> a .. b}('yyy'))
  
--- 1647,1655 ----
    assert_equal(false, LambdaUsingArg(0)())
    assert_equal(true, LambdaUsingArg(1)())
  
!   CheckDefFailure(["filter([1, 2], {k,v -> 1})"], 'E1069:', 1)
    # error is in first line of the lambda
!   CheckDefFailure(["let L = {a -> a + b}"], 'E1001:', 0)
  
    assert_equal('xxxyyy', 'xxx'->{a, b -> a .. b}('yyy'))
  
***************
*** 1714,1739 ****
    mixed = #{a: 234}
    mixed = #{}
  
!   call CheckDefFailure(["let x = #{a:8}"], 'E1069:', 1)
!   call CheckDefFailure(["let x = #{a : 8}"], 'E1068:', 1)
!   call CheckDefFailure(["let x = #{a :8}"], 'E1068:', 1)
!   call CheckDefFailure(["let x = #{a: 8 , b: 9}"], 'E1068:', 1)
! 
!   call CheckDefFailure(["let x = #{8: 8}"], 'E1014:', 1)
!   call CheckDefFailure(["let x = #{xxx}"], 'E720:', 1)
!   call CheckDefFailure(["let x = #{xxx: 1", "let y = 2"], 'E722:', 2)
!   call CheckDefFailure(["let x = #{xxx: 1,"], 'E723:', 2)
!   call CheckDefFailure(["let x = {'a': xxx}"], 'E1001:', 1)
!   call CheckDefFailure(["let x = {xxx: 8}"], 'E1001:', 1)
!   call CheckDefFailure(["let x = #{a: 1, a: 2}"], 'E721:', 1)
!   call CheckDefFailure(["let x = #"], 'E1015:', 1)
!   call CheckDefExecFailure(["let x = g:anint.member"], 'E715:', 1)
!   call CheckDefExecFailure(["let x = g:dict_empty.member"], 'E716:', 1)
! 
!   call CheckDefFailure(['let x: dict<number> = #{a: 234, b: "1"}'], 'E1012:', 
1)
!   call CheckDefFailure(['let x: dict<number> = #{a: "x", b: 134}'], 'E1012:', 
1)
!   call CheckDefFailure(['let x: dict<string> = #{a: 234, b: "1"}'], 'E1012:', 
1)
!   call CheckDefFailure(['let x: dict<string> = #{a: "x", b: 134}'], 'E1012:', 
1)
  enddef
  
  def Test_expr7_dict_vim9script()
--- 1714,1739 ----
    mixed = #{a: 234}
    mixed = #{}
  
!   CheckDefFailure(["let x = #{a:8}"], 'E1069:', 1)
!   CheckDefFailure(["let x = #{a : 8}"], 'E1068:', 1)
!   CheckDefFailure(["let x = #{a :8}"], 'E1068:', 1)
!   CheckDefFailure(["let x = #{a: 8 , b: 9}"], 'E1068:', 1)
! 
!   CheckDefFailure(["let x = #{8: 8}"], 'E1014:', 1)
!   CheckDefFailure(["let x = #{xxx}"], 'E720:', 1)
!   CheckDefFailure(["let x = #{xxx: 1", "let y = 2"], 'E722:', 2)
!   CheckDefFailure(["let x = #{xxx: 1,"], 'E723:', 2)
!   CheckDefFailure(["let x = {'a': xxx}"], 'E1001:', 1)
!   CheckDefFailure(["let x = {xxx: 8}"], 'E1001:', 1)
!   CheckDefFailure(["let x = #{a: 1, a: 2}"], 'E721:', 1)
!   CheckDefFailure(["let x = #"], 'E1015:', 1)
!   CheckDefExecFailure(["let x = g:anint.member"], 'E715:', 1)
!   CheckDefExecFailure(["let x = g:dict_empty.member"], 'E716:', 1)
! 
!   CheckDefFailure(['let x: dict<number> = #{a: 234, b: "1"}'], 'E1012:', 1)
!   CheckDefFailure(['let x: dict<number> = #{a: "x", b: 134}'], 'E1012:', 1)
!   CheckDefFailure(['let x: dict<string> = #{a: 234, b: "1"}'], 'E1012:', 1)
!   CheckDefFailure(['let x: dict<string> = #{a: "x", b: 134}'], 'E1012:', 1)
  enddef
  
  def Test_expr7_dict_vim9script()
***************
*** 1837,1845 ****
    assert_equal('one', #{one: 'one'}.one)
    assert_equal('one', #{one: 'one'}[g:oneString])
  
!   call CheckDefFailure(["let x = g:dict_one.#$!"], 'E1002:', 1)
!   call CheckDefExecFailure(["let d: dict<any>", "echo d['a']"], 'E716:', 2)
!   call CheckDefExecFailure(["let d: dict<number>", "d = g:list_empty"], 
'E1029: Expected dict but got list', 2)
  enddef
  
  def Test_expr7_any_index_slice()
--- 1837,1845 ----
    assert_equal('one', #{one: 'one'}.one)
    assert_equal('one', #{one: 'one'}[g:oneString])
  
!   CheckDefFailure(["let x = g:dict_one.#$!"], 'E1002:', 1)
!   CheckDefExecFailure(["let d: dict<any>", "echo d['a']"], 'E716:', 2)
!   CheckDefExecFailure(["let d: dict<number>", "d = g:list_empty"], 'E1029: 
Expected dict but got list', 2)
  enddef
  
  def Test_expr7_any_index_slice()
***************
*** 1991,1997 ****
    assert_equal('testvar', $TESTVAR)
    assert_equal('', $ASDF_ASD_XXX)
  
!   call CheckDefFailure(["let x = $$$"], 'E1002:', 1)
  enddef
  
  def Test_expr7_register()
--- 1991,1997 ----
    assert_equal('testvar', $TESTVAR)
    assert_equal('', $ASDF_ASD_XXX)
  
!   CheckDefFailure(["let x = $$$"], 'E1002:', 1)
  enddef
  
  def Test_expr7_register()
***************
*** 2006,2012 ****
  
    normal axyz
    assert_equal("xyz", @.)
!   call CheckDefFailure(["@. = 'yes'"], 'E354:', 1)
  
    @/ = 'slash'
    assert_equal('slash', @/)
--- 2006,2012 ----
  
    normal axyz
    assert_equal("xyz", @.)
!   CheckDefFailure(["@. = 'yes'"], 'E354:', 1)
  
    @/ = 'slash'
    assert_equal('slash', @/)
***************
*** 2091,2101 ****
    assert_equal(true, !range(5)->empty())
    assert_equal([0, 1, 2], --3->range())
  
!   call CheckDefFailure(["let x = 'yes'->Echo"], 'E107:', 1)
!   call CheckScriptFailure([
!       "vim9script",
!       "let x = substitute ('x', 'x', 'x', 'x')"
!       ], 'E121:', 2)
  
    let auto_lines =<< trim END
        def g:some#func(): string
--- 2091,2101 ----
    assert_equal(true, !range(5)->empty())
    assert_equal([0, 1, 2], --3->range())
  
!   CheckDefFailure(["let x = 'yes'->Echo"], 'E107:', 1)
!   CheckScriptFailure([
!    "vim9script",
!    "let x = substitute ('x', 'x', 'x', 'x')"
!    ], 'E121:', 2)
  
    let auto_lines =<< trim END
        def g:some#func(): string
*** ../vim-8.2.1622/src/testdir/test_vim9_func.vim      2020-09-05 
22:45:31.568748909 +0200
--- src/testdir/test_vim9_func.vim      2020-09-06 15:54:57.019669149 +0200
***************
*** 29,35 ****
  def Test_return_something()
    assert_equal('string', ReturnString())
    assert_equal(123, ReturnNumber())
!   assert_fails('call ReturnGlobal()', 'E1029: Expected number but got string')
  enddef
  
  def Test_missing_return()
--- 29,35 ----
  def Test_return_something()
    assert_equal('string', ReturnString())
    assert_equal(123, ReturnNumber())
!   assert_fails('ReturnGlobal()', 'E1029: Expected number but got string')
  enddef
  
  def Test_missing_return()
***************
*** 111,117 ****
  def Test_call_default_args()
    assert_equal('string', MyDefaultArgs())
    assert_equal('one', MyDefaultArgs('one'))
!   assert_fails('call MyDefaultArgs("one", "two")', 'E118:')
  
    assert_equal('test', MyDefaultSecond('test'))
    assert_equal('test', MyDefaultSecond('test', true))
--- 111,117 ----
  def Test_call_default_args()
    assert_equal('string', MyDefaultArgs())
    assert_equal('one', MyDefaultArgs('one'))
!   assert_fails('MyDefaultArgs("one", "two")', 'E118:')
  
    assert_equal('test', MyDefaultSecond('test'))
    assert_equal('test', MyDefaultSecond('test', true))
***************
*** 219,228 ****
  endfunc
  
  def Test_call_wrong_args()
!   call CheckDefFailure(['TakesOneArg()'], 'E119:')
!   call CheckDefFailure(['TakesOneArg(11, 22)'], 'E118:')
!   call CheckDefFailure(['bufnr(xxx)'], 'E1001:')
!   call CheckScriptFailure(['def Func(Ref: func(s: string))'], 'E475:')
  
    let lines =<< trim END
      vim9script
--- 219,228 ----
  endfunc
  
  def Test_call_wrong_args()
!   CheckDefFailure(['TakesOneArg()'], 'E119:')
!   CheckDefFailure(['TakesOneArg(11, 22)'], 'E118:')
!   CheckDefFailure(['bufnr(xxx)'], 'E1001:')
!   CheckScriptFailure(['def Func(Ref: func(s: string))'], 'E475:')
  
    let lines =<< trim END
      vim9script
***************
*** 244,250 ****
  enddef
  
  def Test_call_def_varargs()
!   call assert_fails('call MyDefVarargs()', 'E119:')
    assert_equal('one,foo', MyDefVarargs('one'))
    assert_equal('one,two', MyDefVarargs('one', 'two'))
    assert_equal('one,two,three', MyDefVarargs('one', 'two', 'three'))
--- 244,250 ----
  enddef
  
  def Test_call_def_varargs()
!   assert_fails('MyDefVarargs()', 'E119:')
    assert_equal('one,foo', MyDefVarargs('one'))
    assert_equal('one,two', MyDefVarargs('one', 'two'))
    assert_equal('one,two,three', MyDefVarargs('one', 'two', 'three'))
***************
*** 333,340 ****
    assert_equal('99text', RefDef2Arg(99))
    assert_equal('77some', RefDef2Arg(77, 'some'))
  
!   call CheckDefFailure(['let RefWrong: func(string?)'], 'E1010:')
!   call CheckDefFailure(['let RefWrong: func(?string, string)'], 'E1007:')
  
    let RefVarargs: func(...list<string>): string
    RefVarargs = FuncVarargs
--- 333,340 ----
    assert_equal('99text', RefDef2Arg(99))
    assert_equal('77some', RefDef2Arg(77, 'some'))
  
!   CheckDefFailure(['let RefWrong: func(string?)'], 'E1010:')
!   CheckDefFailure(['let RefWrong: func(?string, string)'], 'E1007:')
  
    let RefVarargs: func(...list<string>): string
    RefVarargs = FuncVarargs
***************
*** 342,349 ****
    assert_equal('one', RefVarargs('one'))
    assert_equal('one,two', RefVarargs('one', 'two'))
  
!   call CheckDefFailure(['let RefWrong: func(...list<string>, string)'], 
'E110:')
!   call CheckDefFailure(['let RefWrong: func(...list<string>, ?string)'], 
'E110:')
  enddef
  
  " Only varargs
--- 342,349 ----
    assert_equal('one', RefVarargs('one'))
    assert_equal('one,two', RefVarargs('one', 'two'))
  
!   CheckDefFailure(['let RefWrong: func(...list<string>, string)'], 'E110:')
!   CheckDefFailure(['let RefWrong: func(...list<string>, ?string)'], 'E110:')
  enddef
  
  " Only varargs
***************
*** 355,368 ****
    assert_equal('', MyVarargsOnly())
    assert_equal('one', MyVarargsOnly('one'))
    assert_equal('one,two', MyVarargsOnly('one', 'two'))
!   call CheckDefFailure(['MyVarargsOnly(1)'], 'E1013: argument 1: type 
mismatch, expected string but got number')
!   call CheckDefFailure(['MyVarargsOnly("one", 2)'], 'E1013: argument 2: type 
mismatch, expected string but got number')
  enddef
  
  def Test_using_var_as_arg()
!   call writefile(['def Func(x: number)',  'let x = 234', 'enddef', 
'defcompile'], 'Xdef')
!   call assert_fails('so Xdef', 'E1006:')
!   call delete('Xdef')
  enddef
  
  def DictArg(arg: dict<string>)
--- 355,368 ----
    assert_equal('', MyVarargsOnly())
    assert_equal('one', MyVarargsOnly('one'))
    assert_equal('one,two', MyVarargsOnly('one', 'two'))
!   CheckDefFailure(['MyVarargsOnly(1)'], 'E1013: argument 1: type mismatch, 
expected string but got number')
!   CheckDefFailure(['MyVarargsOnly("one", 2)'], 'E1013: argument 2: type 
mismatch, expected string but got number')
  enddef
  
  def Test_using_var_as_arg()
!   writefile(['def Func(x: number)',  'let x = 234', 'enddef', 'defcompile'], 
'Xdef')
!   assert_fails('so Xdef', 'E1006:')
!   delete('Xdef')
  enddef
  
  def DictArg(arg: dict<string>)
***************
*** 382,393 ****
    ListArg(l)
    assert_equal('value', l[0])
  
!   call CheckScriptFailure(['def Func(arg: number)', 'arg = 3', 'enddef', 
'defcompile'], 'E1090:')
  enddef
  
  def Test_call_func_defined_later()
!   call assert_equal('one', g:DefinedLater('one'))
!   call assert_fails('call NotDefined("one")', 'E117:')
  enddef
  
  func DefinedLater(arg)
--- 382,393 ----
    ListArg(l)
    assert_equal('value', l[0])
  
!   CheckScriptFailure(['def Func(arg: number)', 'arg = 3', 'enddef', 
'defcompile'], 'E1090:')
  enddef
  
  def Test_call_func_defined_later()
!   assert_equal('one', g:DefinedLater('one'))
!   assert_fails('NotDefined("one")', 'E117:')
  enddef
  
  func DefinedLater(arg)
***************
*** 523,529 ****
  
  def Test_error_in_nested_function()
    # Error in called function requires unwinding the call stack.
!   assert_fails('call FuncWithForwardCall()', 'E1096:')
  enddef
  
  def Test_return_type_wrong()
--- 523,529 ----
  
  def Test_error_in_nested_function()
    # Error in called function requires unwinding the call stack.
!   assert_fails('FuncWithForwardCall()', 'E1096:')
  enddef
  
  def Test_return_type_wrong()
***************
*** 742,760 ****
  enddef
  
  def Test_redef_failure()
!   call writefile(['def Func0(): string',  'return "Func0"', 'enddef'], 'Xdef')
    so Xdef
!   call writefile(['def Func1(): string',  'return "Func1"', 'enddef'], 'Xdef')
    so Xdef
!   call writefile(['def! Func0(): string', 'enddef', 'defcompile'], 'Xdef')
!   call assert_fails('so Xdef', 'E1027:')
!   call writefile(['def Func2(): string',  'return "Func2"', 'enddef'], 'Xdef')
    so Xdef
!   call delete('Xdef')
  
!   call assert_equal(0, g:Func0())
!   call assert_equal('Func1', g:Func1())
!   call assert_equal('Func2', g:Func2())
  
    delfunc! Func0
    delfunc! Func1
--- 742,760 ----
  enddef
  
  def Test_redef_failure()
!   writefile(['def Func0(): string',  'return "Func0"', 'enddef'], 'Xdef')
    so Xdef
!   writefile(['def Func1(): string',  'return "Func1"', 'enddef'], 'Xdef')
    so Xdef
!   writefile(['def! Func0(): string', 'enddef', 'defcompile'], 'Xdef')
!   assert_fails('so Xdef', 'E1027:')
!   writefile(['def Func2(): string',  'return "Func2"', 'enddef'], 'Xdef')
    so Xdef
!   delete('Xdef')
  
!   assert_equal(0, g:Func0())
!   assert_equal('Func1', g:Func1())
!   assert_equal('Func2', g:Func2())
  
    delfunc! Func0
    delfunc! Func1
***************
*** 960,969 ****
    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)')
  
!   call CheckDefFailure(['let RefWrong: func(string ,number)'], 'E1068:')
!   call CheckDefFailure(['let RefWrong: func(string,number)'], 'E1069:')
!   call 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:')
!   call CheckDefFailure(['let RefWrong: func(bool):string'], 'E1069:')
  enddef
  
  def Test_func_return_type()
--- 960,969 ----
    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()
***************
*** 1702,1708 ****
  
  def Test_cmd_modifier()
    tab echo '0'
!   call CheckDefFailure(['5tab echo 3'], 'E16:')
  enddef
  
  def Test_restore_modifiers()
--- 1702,1708 ----
  
  def Test_cmd_modifier()
    tab echo '0'
!   CheckDefFailure(['5tab echo 3'], 'E16:')
  enddef
  
  def Test_restore_modifiers()
*** ../vim-8.2.1622/src/testdir/test_vim9_script.vim    2020-09-04 
21:18:40.492161906 +0200
--- src/testdir/test_vim9_script.vim    2020-09-06 15:54:57.019669149 +0200
***************
*** 45,57 ****
    let bool2: bool = false
    assert_equal(v:false, bool2)
  
!   call CheckDefFailure(['let x:string'], 'E1069:')
!   call CheckDefFailure(['let x:string = "x"'], 'E1069:')
!   call CheckDefFailure(['let a:string = "x"'], 'E1069:')
!   call CheckDefFailure(['let lambda = {-> "lambda"}'], 'E704:')
  
    let nr: number = 1234
!   call CheckDefFailure(['let nr: number = "asdf"'], 'E1012:')
  
    let a: number = 6 #comment
    assert_equal(6, a)
--- 45,57 ----
    let bool2: bool = false
    assert_equal(v:false, bool2)
  
!   CheckDefFailure(['let x:string'], 'E1069:')
!   CheckDefFailure(['let x:string = "x"'], 'E1069:')
!   CheckDefFailure(['let a:string = "x"'], 'E1069:')
!   CheckDefFailure(['let lambda = {-> "lambda"}'], 'E704:')
  
    let nr: number = 1234
!   CheckDefFailure(['let nr: number = "asdf"'], 'E1012:')
  
    let a: number = 6 #comment
    assert_equal(6, a)
***************
*** 88,94 ****
      assert_equal('barfoo', $ENVVAR)
      $ENVVAR = ''
    END
!   call CheckScriptSuccess(lines)
  
    s:appendToMe ..= 'yyy'
    assert_equal('xxxyyy', s:appendToMe)
--- 88,94 ----
      assert_equal('barfoo', $ENVVAR)
      $ENVVAR = ''
    END
!   CheckScriptSuccess(lines)
  
    s:appendToMe ..= 'yyy'
    assert_equal('xxxyyy', s:appendToMe)
***************
*** 175,189 ****
      enddef
      defcompile
    END
!   call CheckScriptFailure(lines, 'E1089:')
  
    g:inc_counter += 1
    assert_equal(2, g:inc_counter)
  
    $SOME_ENV_VAR ..= 'more'
    assert_equal('somemore', $SOME_ENV_VAR)
!   call CheckDefFailure(['$SOME_ENV_VAR += "more"'], 'E1051:')
!   call CheckDefFailure(['$SOME_ENV_VAR += 123'], 'E1012:')
  
    lines =<< trim END
      @c = 'areg'
--- 175,189 ----
      enddef
      defcompile
    END
!   CheckScriptFailure(lines, 'E1089:')
  
    g:inc_counter += 1
    assert_equal(2, g:inc_counter)
  
    $SOME_ENV_VAR ..= 'more'
    assert_equal('somemore', $SOME_ENV_VAR)
!   CheckDefFailure(['$SOME_ENV_VAR += "more"'], 'E1051:')
!   CheckDefFailure(['$SOME_ENV_VAR += 123'], 'E1012:')
  
    lines =<< trim END
      @c = 'areg'
***************
*** 192,205 ****
    END
    CheckDefAndScriptSuccess(lines)
  
!   call CheckDefFailure(['@a += "more"'], 'E1051:')
!   call CheckDefFailure(['@a += 123'], 'E1012:')
  
    v:errmsg = 'none'
    v:errmsg ..= 'again'
    assert_equal('noneagain', v:errmsg)
!   call CheckDefFailure(['v:errmsg += "more"'], 'E1051:')
!   call CheckDefFailure(['v:errmsg += 123'], 'E1012:')
  
    # single letter variables
    a = 123
--- 192,205 ----
    END
    CheckDefAndScriptSuccess(lines)
  
!   CheckDefFailure(['@a += "more"'], 'E1051:')
!   CheckDefFailure(['@a += 123'], 'E1012:')
  
    v:errmsg = 'none'
    v:errmsg ..= 'again'
    assert_equal('noneagain', v:errmsg)
!   CheckDefFailure(['v:errmsg += "more"'], 'E1051:')
!   CheckDefFailure(['v:errmsg += 123'], 'E1012:')
  
    # single letter variables
    a = 123
***************
*** 283,290 ****
    assert_equal(['sdf', 'asdf', 'end'], list3)
  
  
!   call CheckDefExecFailure(['let ll = [1, 2, 3]', 'll[-4] = 6'], 'E684:')
!   call CheckDefExecFailure(['let [v1, v2] = [1, 2]'], 'E1092:')
  
    # type becomes list<any>
    let somelist = rand() > 0 ? [1, 2, 3] : ['a', 'b', 'c']
--- 283,290 ----
    assert_equal(['sdf', 'asdf', 'end'], list3)
  
  
!   CheckDefExecFailure(['let ll = [1, 2, 3]', 'll[-4] = 6'], 'E684:')
!   CheckDefExecFailure(['let [v1, v2] = [1, 2]'], 'E1092:')
  
    # type becomes list<any>
    let somelist = rand() > 0 ? [1, 2, 3] : ['a', 'b', 'c']
***************
*** 299,305 ****
      [v1, v2, v3] = [1, 2, 3]
      assert_equal([1, 2, 3], [v1, v2, v3])
    END
!   call CheckScriptSuccess(lines)
  enddef
  
  def Test_assignment_dict()
--- 299,305 ----
      [v1, v2, v3] = [1, 2, 3]
      assert_equal([1, 2, 3], [v1, v2, v3])
    END
!   CheckScriptSuccess(lines)
  enddef
  
  def Test_assignment_dict()
***************
*** 534,622 ****
  enddef
  
  def Test_assignment_failure()
!   call CheckDefFailure(['let var=234'], 'E1004:')
!   call CheckDefFailure(['let var =234'], 'E1004:')
!   call CheckDefFailure(['let var= 234'], 'E1004:')
! 
!   call CheckScriptFailure(['vim9script', 'let var=234'], 'E1004:')
!   call CheckScriptFailure(['vim9script', 'let var=234'], "before and after 
'='")
!   call CheckScriptFailure(['vim9script', 'let var =234'], 'E1004:')
!   call CheckScriptFailure(['vim9script', 'let var= 234'], 'E1004:')
!   call CheckScriptFailure(['vim9script', 'let var = 234', 'var+=234'], 
'E1004:')
!   call CheckScriptFailure(['vim9script', 'let var = 234', 'var+=234'], 
"before and after '+='")
!   call CheckScriptFailure(['vim9script', 'let var = "x"', 'var..="y"'], 
'E1004:')
!   call CheckScriptFailure(['vim9script', 'let var = "x"', 'var..="y"'], 
"before and after '..='")
! 
!   call CheckDefFailure(['let true = 1'], 'E1034:')
!   call CheckDefFailure(['let false = 1'], 'E1034:')
! 
!   call CheckDefFailure(['[a; b; c] = g:list'], 'E452:')
!   call CheckDefExecFailure(['let a: number',
!                             '[a] = test_null_list()'], 'E1093:')
!   call CheckDefExecFailure(['let a: number',
!                             '[a] = []'], 'E1093:')
!   call CheckDefExecFailure(['let x: number',
!                             'let y: number',
!                             '[x, y] = [1]'], 'E1093:')
!   call CheckDefExecFailure(['let x: number',
!                             'let y: number',
!                             'let z: list<number>',
!                             '[x, y; z] = [1]'], 'E1093:')
! 
!   call CheckDefFailure(['let somevar'], "E1022:")
!   call CheckDefFailure(['let &tabstop = 4'], 'E1052:')
!   call CheckDefFailure(['&g:option = 5'], 'E113:')
!   call CheckScriptFailure(['vim9script', 'let &tabstop = 4'], 'E1052:')
  
!   call CheckDefFailure(['let $VAR = 5'], 'E1016: Cannot declare an 
environment variable:')
!   call CheckScriptFailure(['vim9script', 'let $ENV = "xxx"'], 'E1016:')
  
    if has('dnd')
!     call CheckDefFailure(['let @~ = 5'], 'E1066:')
    else
!     call CheckDefFailure(['let @~ = 5'], 'E354:')
!     call CheckDefFailure(['@~ = 5'], 'E354:')
    endif
!   call CheckDefFailure(['let @a = 5'], 'E1066:')
!   call CheckDefFailure(['let @/ = "x"'], 'E1066:')
!   call CheckScriptFailure(['vim9script', 'let @a = "abc"'], 'E1066:')
! 
!   call CheckDefFailure(['let g:var = 5'], 'E1016: Cannot declare a global 
variable:')
!   call CheckDefFailure(['let w:var = 5'], 'E1016: Cannot declare a window 
variable:')
!   call CheckDefFailure(['let b:var = 5'], 'E1016: Cannot declare a buffer 
variable:')
!   call CheckDefFailure(['let t:var = 5'], 'E1016: Cannot declare a tab 
variable:')
! 
!   call CheckDefFailure(['let anr = 4', 'anr ..= "text"'], 'E1019:')
!   call CheckDefFailure(['let xnr += 4'], 'E1020:', 1)
!   call CheckScriptFailure(['vim9script', 'let xnr += 4'], 'E1020:')
!   call CheckDefFailure(["let xnr = xnr + 1"], 'E1001:', 1)
!   call CheckScriptFailure(['vim9script', 'let xnr = xnr + 4'], 'E121:')
! 
!   call CheckScriptFailure(['vim9script', 'def Func()', 'let dummy = 
s:notfound', 'enddef', 'defcompile'], 'E1108:')
! 
!   call CheckDefFailure(['let var: list<string> = [123]'], 'expected 
list<string> but got list<number>')
!   call CheckDefFailure(['let var: list<number> = ["xx"]'], 'expected 
list<number> but got list<string>')
! 
!   call CheckDefFailure(['let var: dict<string> = #{key: 123}'], 'expected 
dict<string> but got dict<number>')
!   call CheckDefFailure(['let var: dict<number> = #{key: "xx"}'], 'expected 
dict<number> but got dict<string>')
! 
!   call CheckDefFailure(['let var = feedkeys("0")'], 'E1031:')
!   call CheckDefFailure(['let var: number = feedkeys("0")'], 'expected number 
but got void')
! 
!   call CheckDefFailure(['let var: dict <number>'], 'E1068:')
!   call CheckDefFailure(['let var: dict<number'], 'E1009:')
! 
!   call assert_fails('s/^/\=Mess()/n', 'E794:')
!   call CheckDefFailure(['let var: dict<number'], 'E1009:')
! 
!   call CheckDefFailure(['w:foo: number = 10'],
!                        'E488: Trailing characters: : number = 1')
!   call CheckDefFailure(['t:foo: bool = true'],
!                        'E488: Trailing characters: : bool = true')
!   call CheckDefFailure(['b:foo: string = "x"'],
!                        'E488: Trailing characters: : string = "x"')
!   call CheckDefFailure(['g:foo: number = 123'],
!                        'E488: Trailing characters: : number = 123')
  enddef
  
  def Test_unlet()
--- 534,622 ----
  enddef
  
  def Test_assignment_failure()
!   CheckDefFailure(['let var=234'], 'E1004:')
!   CheckDefFailure(['let var =234'], 'E1004:')
!   CheckDefFailure(['let var= 234'], 'E1004:')
! 
!   CheckScriptFailure(['vim9script', 'let var=234'], 'E1004:')
!   CheckScriptFailure(['vim9script', 'let var=234'], "before and after '='")
!   CheckScriptFailure(['vim9script', 'let var =234'], 'E1004:')
!   CheckScriptFailure(['vim9script', 'let var= 234'], 'E1004:')
!   CheckScriptFailure(['vim9script', 'let var = 234', 'var+=234'], 'E1004:')
!   CheckScriptFailure(['vim9script', 'let var = 234', 'var+=234'], "before and 
after '+='")
!   CheckScriptFailure(['vim9script', 'let var = "x"', 'var..="y"'], 'E1004:')
!   CheckScriptFailure(['vim9script', 'let var = "x"', 'var..="y"'], "before 
and after '..='")
! 
!   CheckDefFailure(['let true = 1'], 'E1034:')
!   CheckDefFailure(['let false = 1'], 'E1034:')
! 
!   CheckDefFailure(['[a; b; c] = g:list'], 'E452:')
!   CheckDefExecFailure(['let a: number',
!                        '[a] = test_null_list()'], 'E1093:')
!   CheckDefExecFailure(['let a: number',
!                        '[a] = []'], 'E1093:')
!   CheckDefExecFailure(['let x: number',
!                        'let y: number',
!                        '[x, y] = [1]'], 'E1093:')
!   CheckDefExecFailure(['let x: number',
!                        'let y: number',
!                        'let z: list<number>',
!                        '[x, y; z] = [1]'], 'E1093:')
! 
!   CheckDefFailure(['let somevar'], "E1022:")
!   CheckDefFailure(['let &tabstop = 4'], 'E1052:')
!   CheckDefFailure(['&g:option = 5'], 'E113:')
!   CheckScriptFailure(['vim9script', 'let &tabstop = 4'], 'E1052:')
  
!   CheckDefFailure(['let $VAR = 5'], 'E1016: Cannot declare an environment 
variable:')
!   CheckScriptFailure(['vim9script', 'let $ENV = "xxx"'], 'E1016:')
  
    if has('dnd')
!     CheckDefFailure(['let @~ = 5'], 'E1066:')
    else
!     CheckDefFailure(['let @~ = 5'], 'E354:')
!     CheckDefFailure(['@~ = 5'], 'E354:')
    endif
!   CheckDefFailure(['let @a = 5'], 'E1066:')
!   CheckDefFailure(['let @/ = "x"'], 'E1066:')
!   CheckScriptFailure(['vim9script', 'let @a = "abc"'], 'E1066:')
! 
!   CheckDefFailure(['let g:var = 5'], 'E1016: Cannot declare a global 
variable:')
!   CheckDefFailure(['let w:var = 5'], 'E1016: Cannot declare a window 
variable:')
!   CheckDefFailure(['let b:var = 5'], 'E1016: Cannot declare a buffer 
variable:')
!   CheckDefFailure(['let t:var = 5'], 'E1016: Cannot declare a tab variable:')
! 
!   CheckDefFailure(['let anr = 4', 'anr ..= "text"'], 'E1019:')
!   CheckDefFailure(['let xnr += 4'], 'E1020:', 1)
!   CheckScriptFailure(['vim9script', 'let xnr += 4'], 'E1020:')
!   CheckDefFailure(["let xnr = xnr + 1"], 'E1001:', 1)
!   CheckScriptFailure(['vim9script', 'let xnr = xnr + 4'], 'E121:')
! 
!   CheckScriptFailure(['vim9script', 'def Func()', 'let dummy = s:notfound', 
'enddef', 'defcompile'], 'E1108:')
! 
!   CheckDefFailure(['let var: list<string> = [123]'], 'expected list<string> 
but got list<number>')
!   CheckDefFailure(['let var: list<number> = ["xx"]'], 'expected list<number> 
but got list<string>')
! 
!   CheckDefFailure(['let var: dict<string> = #{key: 123}'], 'expected 
dict<string> but got dict<number>')
!   CheckDefFailure(['let var: dict<number> = #{key: "xx"}'], 'expected 
dict<number> but got dict<string>')
! 
!   CheckDefFailure(['let var = feedkeys("0")'], 'E1031:')
!   CheckDefFailure(['let var: number = feedkeys("0")'], 'expected number but 
got void')
! 
!   CheckDefFailure(['let var: dict <number>'], 'E1068:')
!   CheckDefFailure(['let var: dict<number'], 'E1009:')
! 
!   assert_fails('s/^/\=Mess()/n', 'E794:')
!   CheckDefFailure(['let var: dict<number'], 'E1009:')
! 
!   CheckDefFailure(['w:foo: number = 10'],
!                   'E488: Trailing characters: : number = 1')
!   CheckDefFailure(['t:foo: bool = true'],
!                   'E488: Trailing characters: : bool = true')
!   CheckDefFailure(['b:foo: string = "x"'],
!                   'E488: Trailing characters: : string = "x"')
!   CheckDefFailure(['g:foo: number = 123'],
!                   'E488: Trailing characters: : number = 123')
  enddef
  
  def Test_unlet()
***************
*** 633,664 ****
    assert_false(exists('s:somevar'))
    unlet! s:somevar
  
!   call CheckScriptFailure([
!         'vim9script',
!         'let svar = 123',
!         'unlet svar',
!         ], 'E1081:')
!   call CheckScriptFailure([
!         'vim9script',
!         'let svar = 123',
!         'unlet s:svar',
!         ], 'E1081:')
!   call CheckScriptFailure([
!         'vim9script',
!         'let svar = 123',
!         'def Func()',
!         '  unlet svar',
!         'enddef',
!         'defcompile',
!         ], 'E1081:')
!   call CheckScriptFailure([
!         'vim9script',
!         'let svar = 123',
!         'def Func()',
!         '  unlet s:svar',
!         'enddef',
!         'defcompile',
!         ], 'E1081:')
  
    $ENVVAR = 'foobar'
    assert_equal('foobar', $ENVVAR)
--- 633,664 ----
    assert_false(exists('s:somevar'))
    unlet! s:somevar
  
!   CheckScriptFailure([
!    'vim9script',
!    'let svar = 123',
!    'unlet svar',
!    ], 'E1081:')
!   CheckScriptFailure([
!    'vim9script',
!    'let svar = 123',
!    'unlet s:svar',
!    ], 'E1081:')
!   CheckScriptFailure([
!    'vim9script',
!    'let svar = 123',
!    'def Func()',
!    '  unlet svar',
!    'enddef',
!    'defcompile',
!    ], 'E1081:')
!   CheckScriptFailure([
!    'vim9script',
!    'let svar = 123',
!    'def Func()',
!    '  unlet s:svar',
!    'enddef',
!    'defcompile',
!    ], 'E1081:')
  
    $ENVVAR = 'foobar'
    assert_equal('foobar', $ENVVAR)
***************
*** 790,799 ****
  endfunc
  
  def Test_range_no_colon()
!   call CheckDefFailure(['%s/a/b/'], 'E1050:')
!   call CheckDefFailure(['+ s/a/b/'], 'E1050:')
!   call CheckDefFailure(['- s/a/b/'], 'E1050:')
!   call CheckDefFailure(['. s/a/b/'], 'E1050:')
  enddef
  
  
--- 790,799 ----
  endfunc
  
  def Test_range_no_colon()
!   CheckDefFailure(['%s/a/b/'], 'E1050:')
!   CheckDefFailure(['+ s/a/b/'], 'E1050:')
!   CheckDefFailure(['- s/a/b/'], 'E1050:')
!   CheckDefFailure(['. s/a/b/'], 'E1050:')
  enddef
  
  
***************
*** 1087,1105 ****
  enddef
  
  def Test_try_catch_fails()
!   call CheckDefFailure(['catch'], 'E603:')
!   call CheckDefFailure(['try', 'echo 0', 'catch', 'catch'], 'E1033:')
!   call CheckDefFailure(['try', 'echo 0', 'catch /pat'], 'E1067:')
!   call CheckDefFailure(['finally'], 'E606:')
!   call CheckDefFailure(['try', 'echo 0', 'finally', 'echo 1', 'finally'], 
'E607:')
!   call CheckDefFailure(['endtry'], 'E602:')
!   call CheckDefFailure(['while 1', 'endtry'], 'E170:')
!   call CheckDefFailure(['for i in range(5)', 'endtry'], 'E170:')
!   call CheckDefFailure(['if 2', 'endtry'], 'E171:')
!   call CheckDefFailure(['try', 'echo 1', 'endtry'], 'E1032:')
  
!   call CheckDefFailure(['throw'], 'E1015:')
!   call CheckDefFailure(['throw xxx'], 'E1001:')
  enddef
  
  def Test_throw_vimscript()
--- 1087,1105 ----
  enddef
  
  def Test_try_catch_fails()
!   CheckDefFailure(['catch'], 'E603:')
!   CheckDefFailure(['try', 'echo 0', 'catch', 'catch'], 'E1033:')
!   CheckDefFailure(['try', 'echo 0', 'catch /pat'], 'E1067:')
!   CheckDefFailure(['finally'], 'E606:')
!   CheckDefFailure(['try', 'echo 0', 'finally', 'echo 1', 'finally'], 'E607:')
!   CheckDefFailure(['endtry'], 'E602:')
!   CheckDefFailure(['while 1', 'endtry'], 'E170:')
!   CheckDefFailure(['for i in range(5)', 'endtry'], 'E170:')
!   CheckDefFailure(['if 2', 'endtry'], 'E171:')
!   CheckDefFailure(['try', 'echo 1', 'endtry'], 'E1032:')
  
!   CheckDefFailure(['throw'], 'E1015:')
!   CheckDefFailure(['throw xxx'], 'E1001:')
  enddef
  
  def Test_throw_vimscript()
***************
*** 1745,1751 ****
    let nono_lines =<< trim END
      def g:DoCheck(no_exists: bool)
        assert_equal('yes', FuncYes())
!       assert_fails('call FuncNo()', 'E117:')
      enddef
    END
  
--- 1745,1751 ----
    let nono_lines =<< trim END
      def g:DoCheck(no_exists: bool)
        assert_equal('yes', FuncYes())
!       assert_fails('FuncNo()', 'E117:')
      enddef
    END
  
***************
*** 1972,1982 ****
  enddef
  
  def Test_no_insert_xit()
!   call CheckDefExecFailure(['a = 1'], 'E1100:')
!   call CheckDefExecFailure(['c = 1'], 'E1100:')
!   call CheckDefExecFailure(['i = 1'], 'E1100:')
!   call CheckDefExecFailure(['t = 1'], 'E1100:')
!   call CheckDefExecFailure(['x = 1'], 'E1100:')
  
    CheckScriptFailure(['vim9script', 'a = 1'], 'E488:')
    CheckScriptFailure(['vim9script', 'a'], 'E1100:')
--- 1972,1982 ----
  enddef
  
  def Test_no_insert_xit()
!   CheckDefExecFailure(['a = 1'], 'E1100:')
!   CheckDefExecFailure(['c = 1'], 'E1100:')
!   CheckDefExecFailure(['i = 1'], 'E1100:')
!   CheckDefExecFailure(['t = 1'], 'E1100:')
!   CheckDefExecFailure(['x = 1'], 'E1100:')
  
    CheckScriptFailure(['vim9script', 'a = 1'], 'E488:')
    CheckScriptFailure(['vim9script', 'a'], 'E1100:')
***************
*** 2008,2018 ****
  enddef
  
  def Test_if_elseif_else_fails()
!   call CheckDefFailure(['elseif true'], 'E582:')
!   call CheckDefFailure(['else'], 'E581:')
!   call CheckDefFailure(['endif'], 'E580:')
!   call CheckDefFailure(['if true', 'elseif xxx'], 'E1001:')
!   call CheckDefFailure(['if true', 'echo 1'], 'E171:')
  enddef
  
  let g:bool_true = v:true
--- 2008,2018 ----
  enddef
  
  def Test_if_elseif_else_fails()
!   CheckDefFailure(['elseif true'], 'E582:')
!   CheckDefFailure(['else'], 'E581:')
!   CheckDefFailure(['endif'], 'E580:')
!   CheckDefFailure(['if true', 'elseif xxx'], 'E1001:')
!   CheckDefFailure(['if true', 'echo 1'], 'E171:')
  enddef
  
  let g:bool_true = v:true
***************
*** 2141,2150 ****
  enddef
  
  def Test_if_const_expr_fails()
!   call CheckDefFailure(['if "aaa" == "bbb'], 'E114:')
!   call CheckDefFailure(["if 'aaa' == 'bbb"], 'E115:')
!   call CheckDefFailure(["if has('aaa'"], 'E110:')
!   call CheckDefFailure(["if has('aaa') ? true false"], 'E109:')
  enddef
  
  def RunNested(i: number): number
--- 2141,2150 ----
  enddef
  
  def Test_if_const_expr_fails()
!   CheckDefFailure(['if "aaa" == "bbb'], 'E114:')
!   CheckDefFailure(["if 'aaa' == 'bbb"], 'E115:')
!   CheckDefFailure(["if has('aaa'"], 'E110:')
!   CheckDefFailure(["if has('aaa') ? true false"], 'E109:')
  enddef
  
  def RunNested(i: number): number
***************
*** 2170,2187 ****
  def Test_execute_cmd()
    new
    setline(1, 'default')
!   execute 'call setline(1, "execute-string")'
    assert_equal('execute-string', getline(1))
  
!   execute "call setline(1, 'execute-string')"
    assert_equal('execute-string', getline(1))
  
!   let cmd1 = 'call setline(1,'
    let cmd2 = '"execute-var")'
    execute cmd1 cmd2 # comment
    assert_equal('execute-var', getline(1))
  
!   execute cmd1 cmd2 '|call setline(1, "execute-var-string")'
    assert_equal('execute-var-string', getline(1))
  
    let cmd_first = 'call '
--- 2170,2187 ----
  def Test_execute_cmd()
    new
    setline(1, 'default')
!   execute 'setline(1, "execute-string")'
    assert_equal('execute-string', getline(1))
  
!   execute "setline(1, 'execute-string')"
    assert_equal('execute-string', getline(1))
  
!   let cmd1 = 'setline(1,'
    let cmd2 = '"execute-var")'
    execute cmd1 cmd2 # comment
    assert_equal('execute-var', getline(1))
  
!   execute cmd1 cmd2 '|setline(1, "execute-var-string")'
    assert_equal('execute-var-string', getline(1))
  
    let cmd_first = 'call '
***************
*** 2197,2205 ****
    echomsg [1, 2, 3] #{a: 1, b: 2}
    assert_match('^\[1, 2, 3\] {''a'': 1, ''b'': 2}$', Screenline(&lines))
  
!   call CheckDefFailure(['execute xxx'], 'E1001:', 1)
!   call CheckDefExecFailure(['execute "tabnext " .. 8'], 'E475:', 1)
!   call CheckDefFailure(['execute "cmd"# comment'], 'E488:', 1)
  enddef
  
  def Test_execute_cmd_vimscript()
--- 2197,2205 ----
    echomsg [1, 2, 3] #{a: 1, b: 2}
    assert_match('^\[1, 2, 3\] {''a'': 1, ''b'': 2}$', Screenline(&lines))
  
!   CheckDefFailure(['execute xxx'], 'E1001:', 1)
!   CheckDefExecFailure(['execute "tabnext " .. 8'], 'E475:', 1)
!   CheckDefFailure(['execute "cmd"# comment'], 'E488:', 1)
  enddef
  
  def Test_execute_cmd_vimscript()
***************
*** 2229,2235 ****
    echo str1 str2
    assert_match('^some more$', Screenline(&lines))
  
!   call CheckDefFailure(['echo "xxx"# comment'], 'E488:')
  enddef
  
  def Test_echomsg_cmd()
--- 2229,2235 ----
    echo str1 str2
    assert_match('^some more$', Screenline(&lines))
  
!   CheckDefFailure(['echo "xxx"# comment'], 'E488:')
  enddef
  
  def Test_echomsg_cmd()
***************
*** 2239,2245 ****
    :1messages
    assert_match('^some more$', Screenline(&lines))
  
!   call CheckDefFailure(['echomsg "xxx"# comment'], 'E488:')
  enddef
  
  def Test_echomsg_cmd_vimscript()
--- 2239,2245 ----
    :1messages
    assert_match('^some more$', Screenline(&lines))
  
!   CheckDefFailure(['echomsg "xxx"# comment'], 'E488:')
  enddef
  
  def Test_echomsg_cmd_vimscript()
***************
*** 2922,2928 ****
    CheckScriptSuccess([
        'vim9script',
        'new'
!       'call setline(1, ["# define pat", "last"])',
        ':$',
        'dsearch /pat/ #comment',
        'bwipe!',
--- 2922,2928 ----
    CheckScriptSuccess([
        'vim9script',
        'new'
!       'setline(1, ["# define pat", "last"])',
        ':$',
        'dsearch /pat/ #comment',
        'bwipe!',
***************
*** 2931,2937 ****
    CheckScriptFailure([
        'vim9script',
        'new'
!       'call setline(1, ["# define pat", "last"])',
        ':$',
        'dsearch /pat/#comment',
        'bwipe!',
--- 2931,2937 ----
    CheckScriptFailure([
        'vim9script',
        'new'
!       'setline(1, ["# define pat", "last"])',
        ':$',
        'dsearch /pat/#comment',
        'bwipe!',
***************
*** 3266,3272 ****
    assert_fails('func <SNR>1234_func', 'E123:')
  
    if RunVim([], ['wq Xdidit'], '+"func <SNR>1_func"')
!     call assert_equal([], readfile('Xdidit'))
    endif
    delete('Xdidit')
  enddef
--- 3266,3272 ----
    assert_fails('func <SNR>1234_func', 'E123:')
  
    if RunVim([], ['wq Xdidit'], '+"func <SNR>1_func"')
!     assert_equal([], readfile('Xdidit'))
    endif
    delete('Xdidit')
  enddef
*** ../vim-8.2.1622/src/version.c       2020-09-06 15:53:56.627809181 +0200
--- src/version.c       2020-09-06 15:56:40.175426127 +0200
***************
*** 756,757 ****
--- 756,759 ----
  {   /* Add new patch number below this line */
+ /**/
+     1623,
  /**/

-- 
Be nice to your kids...  they'll be the ones choosing your nursing home.

 /// 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/202009061359.086DxVXd907716%40masaka.moolenaar.net.

Raspunde prin e-mail lui