Mercurial > vim
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 |