summaryrefslogtreecommitdiff
path: root/src/testdir/test_vim9_func.vim
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-05-07 21:14:05 +0100
committerBram Moolenaar <Bram@vim.org>2022-05-07 21:14:05 +0100
commita7583c42cd6b64fd276a5d7bb0db5ce7bfafa730 (patch)
treeee867b59f724d625198f985cb90cd84af7571b18 /src/testdir/test_vim9_func.vim
parent249591057b4840785c50e41dd850efb8a8faf435 (diff)
downloadvim-git-8.2.4912.tar.gz
patch 8.2.4912: using execute() to define a lambda doesn't workv8.2.4912
Problem: Using execute() to define a lambda doesn't work. (Ernie Rael) Solution: Put the getline function in evalarg. (closes #10375)
Diffstat (limited to 'src/testdir/test_vim9_func.vim')
-rw-r--r--src/testdir/test_vim9_func.vim20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index 5f42c1cfe..14d0bce6f 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -1615,6 +1615,26 @@ def Test_lambda_type_allocated()
v9.CheckScriptSuccess(lines)
enddef
+def Test_define_lambda_in_execute()
+ var lines =<< trim [CODE]
+ vim9script
+
+ def BuildFuncMultiLine(): func
+ var x =<< trim END
+ g:SomeRandomFunc = (d: dict<any>) => {
+ return d.k1 + d.k2
+ }
+ END
+ execute(x)
+ return g:SomeRandomFunc
+ enddef
+ var ResultPlus = BuildFuncMultiLine()
+ assert_equal(7, ResultPlus({k1: 3, k2: 4}))
+ [CODE]
+ v9.CheckScriptSuccess(lines)
+ unlet g:SomeRandomFunc
+enddef
+
" Default arg and varargs
def MyDefVarargs(one: string, two = 'foo', ...rest: list<string>): string
var res = one .. ',' .. two