diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-07-15 19:48:20 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-07-15 19:48:20 +0200 |
commit | e30f64b4b551bb00318dc09c2f13ecd3d711119a (patch) | |
tree | fa813a172dc7303e8f421b347b9717895b4ae845 | |
parent | 657a826c07b4ea3f8846b6acb2c50b82c2d81e50 (diff) | |
download | vim-git-e30f64b4b551bb00318dc09c2f13ecd3d711119a.tar.gz |
patch 8.2.1223: Vim9: invalid type error for function default valuev8.2.1223
Problem: Vim9: invalid type error for function default value.
Solution: Use right argument index. (closes #6458)
-rw-r--r-- | src/testdir/test_vim9_func.vim | 8 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/vim9compile.c | 2 |
3 files changed, 11 insertions, 1 deletions
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim index f9c5a2af2..3e90a02b8 100644 --- a/src/testdir/test_vim9_func.vim +++ b/src/testdir/test_vim9_func.vim @@ -104,11 +104,19 @@ def MyDefaultArgs(name = 'string'): string return name enddef +def MyDefaultSecond(name: string, second: bool = true): string + return second ? name : 'none' +enddef + def Test_call_default_args() assert_equal('string', MyDefaultArgs()) assert_equal('one', MyDefaultArgs('one')) assert_fails('call MyDefaultArgs("one", "two")', 'E118:') + assert_equal('test', MyDefaultSecond('test')) + assert_equal('test', MyDefaultSecond('test', true)) + assert_equal('none', MyDefaultSecond('test', false)) + CheckScriptFailure(['def Func(arg: number = asdf)', 'enddef', 'defcompile'], 'E1001:') CheckScriptFailure(['def Func(arg: number = "text")', 'enddef', 'defcompile'], 'E1013: argument 1: type mismatch, expected number but got string') enddef diff --git a/src/version.c b/src/version.c index 558a73e84..92cbe501d 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1223, +/**/ 1222, /**/ 1221, diff --git a/src/vim9compile.c b/src/vim9compile.c index 39190c972..ec940df73 100644 --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -6865,7 +6865,7 @@ compile_def_function(ufunc_T *ufunc, int set_return_type, cctx_T *outer_cctx) val_type = ((type_T **)stack->ga_data)[stack->ga_len - 1]; if (ufunc->uf_arg_types[arg_idx] == &t_unknown) ufunc->uf_arg_types[arg_idx] = val_type; - else if (check_type(ufunc->uf_arg_types[i], val_type, FALSE) + else if (check_type(ufunc->uf_arg_types[arg_idx], val_type, FALSE) == FAIL) { arg_type_mismatch(ufunc->uf_arg_types[arg_idx], val_type, |