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()