Mercurial > vim
diff src/testdir/test_vim9_expr.vim @ 27173:04af0c68dba8 v8.2.4115
patch 8.2.4115: cannot use a method with a complex expression
Commit: https://github.com/vim/vim/commit/c665dabdf4c49a0fbf1dc566253c75c2abe2effa
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Jan 16 19:38:07 2022 +0000
patch 8.2.4115: cannot use a method with a complex expression
Problem: Cannot use a method with a complex expression.
Solution: Evaluate the expression after "->" and use the result.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 16 Jan 2022 20:45:02 +0100 |
parents | 374c7d5a096a |
children | 6af18c69c59d |
line wrap: on
line diff
--- a/src/testdir/test_vim9_expr.vim +++ b/src/testdir/test_vim9_expr.vim @@ -3136,16 +3136,37 @@ def Test_expr7_method_call() var sorted = [3, 1, 2] -> sort() assert_equal([1, 2, 3], sorted) - + END + CheckDefAndScriptSuccess(lines) + + lines =<< trim END + vim9script def SetNumber(n: number) g:number = n enddef const Setit = SetNumber len('text')->Setit() assert_equal(4, g:number) + + const SetFuncref = funcref(SetNumber) + len('longer')->SetFuncref() + assert_equal(6, g:number) + + const SetList = [SetNumber, SetFuncref] + len('xx')->SetList[0]() + assert_equal(2, g:number) + len('xxx')->SetList[1]() + assert_equal(3, g:number) + + const SetDict = {key: SetNumber} + len('xxxx')->SetDict['key']() + assert_equal(4, g:number) + len('xxxxx')->SetDict.key() + assert_equal(5, g:number) + unlet g:number END - CheckDefAndScriptSuccess(lines) + CheckScriptSuccess(lines) # TODO: CheckDefAndScriptSuccess() lines =<< trim END def RetVoid()