summaryrefslogtreecommitdiffstats
path: root/src/testdir/test_vim9_func.vim
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-05-26 22:24:43 +0100
committerBram Moolenaar <Bram@vim.org>2022-05-26 22:24:43 +0100
commit31d9948e3a2529c2f619d56bdb48291dc261233d (patch)
tree9d190d121b8851b0d861455ba61b09fd03da8776 /src/testdir/test_vim9_func.vim
parent5cb53b7afe6bde8f2bf6fc6b65b86071b67a8554 (diff)
patch 8.2.5026: Vim9: a few lines not covered by testsv8.2.5026
Problem: Vim9: a few lines not covered by tests. Solution: Delete dead code. Add a few test cases. make "12->func()" work.
Diffstat (limited to 'src/testdir/test_vim9_func.vim')
-rw-r--r--src/testdir/test_vim9_func.vim57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index fcf37d5f51..33a66151e7 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -4051,6 +4051,63 @@ def Test_too_many_arguments()
echo [0, 1, 2]->map((_) => 123)
END
v9.CheckDefAndScriptFailure(lines, ['E176', 'E1106: One argument too many'], 1)
+
+ lines =<< trim END
+ vim9script
+ def OneArgument(arg: string)
+ echo arg
+ enddef
+ var Ref = OneArgument
+ Ref('a', 'b')
+ END
+ v9.CheckScriptFailure(lines, 'E118:')
+enddef
+
+def Test_funcref_with_base()
+ var lines =<< trim END
+ vim9script
+ def TwoArguments(str: string, nr: number)
+ echo str nr
+ enddef
+ var Ref = TwoArguments
+ Ref('a', 12)
+ 'b'->Ref(34)
+ END
+ v9.CheckScriptSuccess(lines)
+
+ lines =<< trim END
+ vim9script
+ def TwoArguments(str: string, nr: number)
+ echo str nr
+ enddef
+ var Ref = TwoArguments
+ 'a'->Ref('b')
+ END
+ v9.CheckScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected number but got string', 6)
+
+ lines =<< trim END
+ vim9script
+ def TwoArguments(str: string, nr: number)
+ echo str nr
+ enddef
+ var Ref = TwoArguments
+ 123->Ref(456)
+ END
+ v9.CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch, expected string but got number')
+
+ lines =<< trim END
+ vim9script
+ def TwoArguments(nr: number, str: string)
+ echo str nr
+ enddef
+ var Ref = TwoArguments
+ 123->Ref('b')
+ def AndNowCompiled()
+ 456->Ref('x')
+ enddef
+ AndNowCompiled()
+ END
+ v9.CheckScriptSuccess(lines)
enddef
def Test_closing_brace_at_start_of_line()