diff options
author | Bram Moolenaar <Bram@vim.org> | 2023-05-15 16:22:38 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2023-05-15 16:22:38 +0100 |
commit | 2ba51236fb7c27fe16dad4c44242f00e17c19726 (patch) | |
tree | c394d7f9f7ca93244bbb169a4c42c6e1870f385e /src/testdir/test_vim9_func.vim | |
parent | a2c0028fdf8dcf0408e27be730ac0e691ef9559b (diff) |
patch 9.0.1559: function argument types not always checkedv9.0.1559
Problem: Function argument types not always checked and using v:none may
cause an error.
Solution: Check argument types once the function type is known. Do not give
an error for using v:none as an argument. (closes #12200)
Diffstat (limited to 'src/testdir/test_vim9_func.vim')
-rw-r--r-- | src/testdir/test_vim9_func.vim | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim index ffb8de48dd..ecdbd5eaca 100644 --- a/src/testdir/test_vim9_func.vim +++ b/src/testdir/test_vim9_func.vim @@ -778,6 +778,38 @@ def Test_using_vnone_default() END v9.CheckScriptSuccess(lines) + lines =<< trim END + vim9script + + export def Floats(x: float, y = 2.0, z = 5.0) + g:result = printf("%.2f %.2f %.2f", x, y, z) + enddef + END + writefile(lines, 'Xlib.vim', 'D') + + # test using a function reference in script-local variable + lines =<< trim END + vim9script + + import './Xlib.vim' + const Floatfunc = Xlib.Floats + Floatfunc(1.0, v:none, 3.0) + END + v9.CheckScriptSuccess(lines) + assert_equal('1.00 2.00 3.00', g:result) + unlet g:result + + # test calling the imported function + lines =<< trim END + vim9script + + import './Xlib.vim' + Xlib.Floats(1.0, v:none, 3.0) + END + v9.CheckScriptSuccess(lines) + assert_equal('1.00 2.00 3.00', g:result) + unlet g:result + # TODO: this should give an error for using a missing argument # lines =<< trim END # vim9script |