Mercurial > vim
diff src/testdir/test_vim9_func.vim @ 19993:efe864a7ce4f v8.2.0552
patch 8.2.0552: Vim9: some errors not covered by tests
Commit: https://github.com/vim/vim/commit/99aaf0ce7cc23b0e759eab2369e266cdc8d46af8
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Apr 12 14:39:53 2020 +0200
patch 8.2.0552: Vim9: some errors not covered by tests
Problem: Vim9: some errors not covered by tests.
Solution: Add more tests. Check Funcref argument types.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 12 Apr 2020 14:45:04 +0200 |
parents | f863aa96cae5 |
children | c001ee73519a |
line wrap: on
line diff
--- a/src/testdir/test_vim9_func.vim +++ b/src/testdir/test_vim9_func.vim @@ -96,6 +96,7 @@ def Test_call_default_args() assert_fails('call MyDefaultArgs("one", "two")', 'E118:') call CheckScriptFailure(['def Func(arg: number = asdf)', 'enddef'], 'E1001:') + call CheckScriptFailure(['def Func(arg: number = "text")', 'enddef'], 'E1013: argument 1: type mismatch, expected number but got string') enddef func Test_call_default_args_from_func() @@ -196,6 +197,26 @@ def Test_call_func_defined_later() call assert_fails('call NotDefined("one")', 'E117:') enddef +def CombineFuncrefTypes() + " same arguments, different return type + let Ref1: func(bool): string + let Ref2: func(bool): number + let Ref3: func(bool): any + Ref3 = g:cond ? Ref1 : Ref2 + + " different number of arguments + let Refa1: func(bool): number + let Refa2: func(bool, number): number + let Refa3: func: number + Refa3 = g:cond ? Refa1 : Refa2 + + " different argument types + let Refb1: func(bool, string): number + let Refb2: func(string, number): number + let Refb3: func(any, any): number + Refb3 = g:cond ? Refb1 : Refb2 +enddef + func DefinedLater(arg) return a:arg endfunc