comparison src/testdir/test_vim9_func.vim @ 22816:8a5369f5f2b4 v8.2.1956

patch 8.2.1956: Vim9: cannot specify argument types for lambda Commit: https://github.com/vim/vim/commit/b4d16cb11d92b363503b71673921774548230e94 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Nov 5 18:45:46 2020 +0100 patch 8.2.1956: Vim9: cannot specify argument types for lambda Problem: Vim9: cannot specify argument types for lambda. Solution: Allow adding argument types. Check arguments when calling a function reference.
author Bram Moolenaar <Bram@vim.org>
date Thu, 05 Nov 2020 19:00:05 +0100
parents d235c5fa0bbe
children 54219df706b5
comparison
equal deleted inserted replaced
22815:32b05651143b 22816:8a5369f5f2b4
320 CheckDefFailure(['TakesOneArg()'], 'E119:') 320 CheckDefFailure(['TakesOneArg()'], 'E119:')
321 CheckDefFailure(['TakesOneArg(11, 22)'], 'E118:') 321 CheckDefFailure(['TakesOneArg(11, 22)'], 'E118:')
322 CheckDefFailure(['bufnr(xxx)'], 'E1001:') 322 CheckDefFailure(['bufnr(xxx)'], 'E1001:')
323 CheckScriptFailure(['def Func(Ref: func(s: string))'], 'E475:') 323 CheckScriptFailure(['def Func(Ref: func(s: string))'], 'E475:')
324 324
325 CheckDefFailure(['echo {i -> 0}()'], 'E119: Not enough arguments for function: {i -> 0}()')
326
327 var lines =<< trim END 325 var lines =<< trim END
328 vim9script 326 vim9script
329 def Func(s: string) 327 def Func(s: string)
330 echo s 328 echo s
331 enddef 329 enddef
374 didCatch = true 372 didCatch = true
375 endtry 373 endtry
376 assert_true(didCatch) 374 assert_true(didCatch)
377 375
378 delete('Xscript') 376 delete('Xscript')
377 enddef
378
379 def Test_call_lambda_args()
380 CheckDefFailure(['echo {i -> 0}()'],
381 'E119: Not enough arguments for function: {i -> 0}()')
382
383 var lines =<< trim END
384 var Ref = {x: number, y: number -> x + y}
385 echo Ref(1, 'x')
386 END
387 CheckDefFailure(lines, 'E1013: Argument 2: type mismatch, expected number but got string')
379 enddef 388 enddef
380 389
381 " Default arg and varargs 390 " Default arg and varargs
382 def MyDefVarargs(one: string, two = 'foo', ...rest: list<string>): string 391 def MyDefVarargs(one: string, two = 'foo', ...rest: list<string>): string
383 var res = one .. ',' .. two 392 var res = one .. ',' .. two