Mercurial > vim
diff src/testdir/test_vim9_func.vim @ 25800:fe8d153cb268 v8.2.3435
patch 8.2.3435: Vim9: dict is not passed to dict function
Commit: https://github.com/vim/vim/commit/b1b6f4de2b0edc3b6622912132ddb8994ec52709
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Sep 13 18:25:54 2021 +0200
patch 8.2.3435: Vim9: dict is not passed to dict function
Problem: Vim9: dict is not passed to dict function.
Solution: Keep the dict used until a function call.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 13 Sep 2021 18:30:04 +0200 |
parents | 9edad9a8cca6 |
children | e861c5aaedd8 |
line wrap: on
line diff
--- a/src/testdir/test_vim9_func.vim +++ b/src/testdir/test_vim9_func.vim @@ -2557,6 +2557,37 @@ def Test_legacy_errors() endfor enddef +def Test_call_legacy_with_dict() + var lines =<< trim END + vim9script + func Legacy() dict + let g:result = self.value + endfunc + def TestDirect() + var d = {value: 'yes', func: Legacy} + d.func() + enddef + TestDirect() + assert_equal('yes', g:result) + unlet g:result + + def TestIndirect() + var d = {value: 'foo', func: Legacy} + var Fi = d.func + Fi() + enddef + TestIndirect() + assert_equal('foo', g:result) + unlet g:result + + var d = {value: 'bar', func: Legacy} + d.func() + assert_equal('bar', g:result) + unlet g:result + END + CheckScriptSuccess(lines) +enddef + def DoFilterThis(a: string): list<string> # closure nested inside another closure using argument var Filter = (l) => filter(l, (_, v) => stridx(v, a) == 0)