forked from aniani/vim
patch 8.2.2257: Vim9: using -> for lambda is ambiguous
Problem: Vim9: using -> for lambda is ambiguous. Solution: Stop supporting ->, must use =>.
This commit is contained in:
@@ -54,7 +54,7 @@ def CallRecursive(n: number): number
|
||||
enddef
|
||||
|
||||
def CallMapRecursive(l: list<number>): number
|
||||
return map(l, {_, v -> CallMapRecursive([v])})[0]
|
||||
return map(l, (_, v) => CallMapRecursive([v]))[0]
|
||||
enddef
|
||||
|
||||
def Test_funcdepth_error()
|
||||
@@ -310,7 +310,7 @@ def Test_nested_global_function()
|
||||
vim9script
|
||||
def Outer()
|
||||
def g:Inner()
|
||||
echo map([1, 2, 3], {_, v -> v + 1})
|
||||
echo map([1, 2, 3], (_, v) => v + 1)
|
||||
enddef
|
||||
g:Inner()
|
||||
enddef
|
||||
@@ -509,11 +509,11 @@ def Test_call_funcref_wrong_args()
|
||||
enddef
|
||||
|
||||
def Test_call_lambda_args()
|
||||
CheckDefFailure(['echo {i -> 0}()'],
|
||||
'E119: Not enough arguments for function: {i -> 0}()')
|
||||
CheckDefFailure(['echo ((i) => 0)()'],
|
||||
'E119: Not enough arguments for function: ((i) => 0)()')
|
||||
|
||||
var lines =<< trim END
|
||||
var Ref = {x: number, y: number -> x + y}
|
||||
var Ref = (x: number, y: number) => x + y
|
||||
echo Ref(1, 'x')
|
||||
END
|
||||
CheckDefFailure(lines, 'E1013: Argument 2: type mismatch, expected number but got string')
|
||||
@@ -522,7 +522,7 @@ enddef
|
||||
def Test_lambda_uses_assigned_var()
|
||||
CheckDefSuccess([
|
||||
'var x: any = "aaa"'
|
||||
'x = filter(["bbb"], {_, v -> v =~ x})'])
|
||||
'x = filter(["bbb"], (_, v) => v =~ x)'])
|
||||
enddef
|
||||
|
||||
" Default arg and varargs
|
||||
@@ -1413,12 +1413,12 @@ enddef
|
||||
|
||||
def Test_closure_simple()
|
||||
var local = 'some '
|
||||
RefFunc({s -> local .. s})->assert_equal('some more')
|
||||
RefFunc((s) => local .. s)->assert_equal('some more')
|
||||
enddef
|
||||
|
||||
def MakeRef()
|
||||
var local = 'some '
|
||||
g:Ref = {s -> local .. s}
|
||||
g:Ref = (s) => local .. s
|
||||
enddef
|
||||
|
||||
def Test_closure_ref_after_return()
|
||||
@@ -1429,8 +1429,8 @@ enddef
|
||||
|
||||
def MakeTwoRefs()
|
||||
var local = ['some']
|
||||
g:Extend = {s -> local->add(s)}
|
||||
g:Read = {-> local}
|
||||
g:Extend = (s) => local->add(s)
|
||||
g:Read = () => local
|
||||
enddef
|
||||
|
||||
def Test_closure_two_refs()
|
||||
@@ -1467,12 +1467,12 @@ enddef
|
||||
|
||||
def MakeArgRefs(theArg: string)
|
||||
var local = 'loc_val'
|
||||
g:UseArg = {s -> theArg .. '/' .. local .. '/' .. s}
|
||||
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)}
|
||||
g:UseVararg = (s) => theArg .. '/' .. local .. '/' .. s .. '/' .. join(rest)
|
||||
enddef
|
||||
|
||||
def Test_closure_using_argument()
|
||||
@@ -1526,7 +1526,7 @@ endfunc
|
||||
|
||||
def Test_call_closure_not_compiled()
|
||||
var text = 'text'
|
||||
g:Ref = {s -> s .. text}
|
||||
g:Ref = (s) => s .. text
|
||||
GetResult(g:Ref)->assert_equal('sometext')
|
||||
enddef
|
||||
|
||||
@@ -1536,7 +1536,7 @@ def Test_double_closure_fails()
|
||||
def Func()
|
||||
var name = 0
|
||||
for i in range(2)
|
||||
timer_start(0, {-> name})
|
||||
timer_start(0, () => name)
|
||||
endfor
|
||||
enddef
|
||||
Func()
|
||||
@@ -1549,8 +1549,8 @@ def Test_nested_closure_used()
|
||||
vim9script
|
||||
def Func()
|
||||
var x = 'hello'
|
||||
var Closure = {-> x}
|
||||
g:Myclosure = {-> Closure()}
|
||||
var Closure = () => x
|
||||
g:Myclosure = () => Closure()
|
||||
enddef
|
||||
Func()
|
||||
assert_equal('hello', g:Myclosure())
|
||||
@@ -1565,7 +1565,7 @@ def Test_nested_closure_fails()
|
||||
FuncB(0)
|
||||
enddef
|
||||
def FuncB(n: number): list<string>
|
||||
return map([0], {_, v -> n})
|
||||
return map([0], (_, v) => n)
|
||||
enddef
|
||||
FuncA()
|
||||
END
|
||||
@@ -1642,8 +1642,8 @@ def Test_nested_lambda()
|
||||
vim9script
|
||||
def Func()
|
||||
var x = 4
|
||||
var Lambda1 = {-> 7}
|
||||
var Lambda2 = {-> [Lambda1(), x]}
|
||||
var Lambda1 = () => 7
|
||||
var Lambda2 = () => [Lambda1(), x]
|
||||
var res = Lambda2()
|
||||
assert_equal([7, 4], res)
|
||||
enddef
|
||||
@@ -1653,8 +1653,8 @@ def Test_nested_lambda()
|
||||
enddef
|
||||
|
||||
def Shadowed(): list<number>
|
||||
var FuncList: list<func: number> = [{ -> 42}]
|
||||
return FuncList->map({_, Shadowed -> Shadowed()})
|
||||
var FuncList: list<func: number> = [() => 42]
|
||||
return FuncList->map((_, Shadowed) => Shadowed())
|
||||
enddef
|
||||
|
||||
def Test_lambda_arg_shadows_func()
|
||||
@@ -1676,15 +1676,15 @@ def Test_script_var_in_lambda()
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
var script = 'test'
|
||||
assert_equal(['test'], map(['one'], {-> script}))
|
||||
assert_equal(['test'], map(['one'], () => script))
|
||||
END
|
||||
CheckScriptSuccess(lines)
|
||||
enddef
|
||||
|
||||
def Line_continuation_in_lambda(): list<string>
|
||||
var x = range(97, 100)
|
||||
->map({_, v -> nr2char(v)
|
||||
->toupper()})
|
||||
->map((_, v) => nr2char(v)
|
||||
->toupper())
|
||||
->reverse()
|
||||
return x
|
||||
enddef
|
||||
@@ -1772,11 +1772,11 @@ def Test_recursive_call()
|
||||
enddef
|
||||
|
||||
def TreeWalk(dir: string): list<any>
|
||||
return readdir(dir)->map({_, val ->
|
||||
return readdir(dir)->map((_, val) =>
|
||||
fnamemodify(dir .. '/' .. val, ':p')->isdirectory()
|
||||
? {[val]: TreeWalk(dir .. '/' .. val)}
|
||||
: val
|
||||
})
|
||||
)
|
||||
enddef
|
||||
|
||||
def Test_closure_in_map()
|
||||
@@ -1890,7 +1890,7 @@ def Test_block_scoped_var()
|
||||
var x = ['a', 'b', 'c']
|
||||
if 1
|
||||
var y = 'x'
|
||||
map(x, {-> y})
|
||||
map(x, () => y)
|
||||
endif
|
||||
var z = x
|
||||
assert_equal(['x', 'x', 'x'], z)
|
||||
@@ -1922,7 +1922,7 @@ def Test_did_emsg_reset()
|
||||
vim9script
|
||||
au BufWinLeave * #
|
||||
def Func()
|
||||
popup_menu('', {callback: {-> popup_create('', {})->popup_close()}})
|
||||
popup_menu('', {callback: () => popup_create('', {})->popup_close()})
|
||||
eval [][0]
|
||||
enddef
|
||||
nno <F3> <cmd>call <sid>Func()<cr>
|
||||
@@ -2014,7 +2014,7 @@ def Test_dict_member_with_silent()
|
||||
var d: dict<any>
|
||||
def Func()
|
||||
try
|
||||
g:result = map([], {_, v -> {}[v]})->join() .. d['']
|
||||
g:result = map([], (_, v) => ({}[v]))->join() .. d['']
|
||||
catch
|
||||
endtry
|
||||
enddef
|
||||
|
||||
Reference in New Issue
Block a user