Patch 8.2.1766

7 views
Skip to first unread message

Bram Moolenaar

unread,
Sep 27, 2020, 4:48:15 PM9/27/20
to vim...@googlegroups.com

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 -- Br...@Moolenaar.net -- 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 ///
Reply all
Reply to author
Forward
0 new messages