Mercurial > vim
diff src/testdir/test_vim9_func.vim @ 23428:5807e3958e38 v8.2.2257
patch 8.2.2257: Vim9: using -> for lambda is ambiguous
Commit: https://github.com/vim/vim/commit/2949cfdbe4335b9abcfeda1be4dfc52090ee1df6
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Dec 31 21:28:47 2020 +0100
patch 8.2.2257: Vim9: using -> for lambda is ambiguous
Problem: Vim9: using -> for lambda is ambiguous.
Solution: Stop supporting ->, must use =>.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 31 Dec 2020 21:30:03 +0100 |
parents | c3c690c8fcbf |
children | f00d6ff51046 |
line wrap: on
line diff
--- a/src/testdir/test_vim9_func.vim +++ b/src/testdir/test_vim9_func.vim @@ -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