To: vim_dev@googlegroups.com Subject: Patch 8.2.1003 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.1003 Problem: Vim9: return type of sort() is too generic. Solution: Get type from the first argument. (closes #6292) Files: src/evalfunc.c, src/testdir/test_vim9_func.vim *** ../vim-8.2.1002/src/evalfunc.c 2020-06-16 20:03:38.747351038 +0200 --- src/evalfunc.c 2020-06-18 18:44:36.934055203 +0200 *************** *** 339,344 **** --- 339,352 ---- return &t_job; } + static type_T * + ret_first_arg(int argcount, type_T **argtypes) + { + if (argcount > 0) + return argtypes[0]; + return &t_void; + } + static type_T *ret_f_function(int argcount, type_T **argtypes); /* *************** *** 849,855 **** {"simplify", 1, 1, FEARG_1, ret_string, f_simplify}, {"sin", 1, 1, FEARG_1, ret_float, FLOAT_FUNC(f_sin)}, {"sinh", 1, 1, FEARG_1, ret_float, FLOAT_FUNC(f_sinh)}, ! {"sort", 1, 3, FEARG_1, ret_list_any, f_sort}, {"sound_clear", 0, 0, 0, ret_void, SOUND_FUNC(f_sound_clear)}, {"sound_playevent", 1, 2, FEARG_1, ret_number, SOUND_FUNC(f_sound_playevent)}, {"sound_playfile", 1, 2, FEARG_1, ret_number, SOUND_FUNC(f_sound_playfile)}, --- 857,863 ---- {"simplify", 1, 1, FEARG_1, ret_string, f_simplify}, {"sin", 1, 1, FEARG_1, ret_float, FLOAT_FUNC(f_sin)}, {"sinh", 1, 1, FEARG_1, ret_float, FLOAT_FUNC(f_sinh)}, ! {"sort", 1, 3, FEARG_1, ret_first_arg, f_sort}, {"sound_clear", 0, 0, 0, ret_void, SOUND_FUNC(f_sound_clear)}, {"sound_playevent", 1, 2, FEARG_1, ret_number, SOUND_FUNC(f_sound_playevent)}, {"sound_playfile", 1, 2, FEARG_1, ret_number, SOUND_FUNC(f_sound_playfile)}, *** ../vim-8.2.1002/src/testdir/test_vim9_func.vim 2020-05-24 23:45:20.529386094 +0200 --- src/testdir/test_vim9_func.vim 2020-06-18 18:44:21.982088566 +0200 *************** *** 807,811 **** --- 807,816 ---- assert_equal('sometext', GetResult(g:Ref)) enddef + def Test_sort_return_type() + let res: list + res = [1, 2, 3]->sort() + enddef + " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker *** ../vim-8.2.1002/src/version.c 2020-06-18 18:33:56.419365443 +0200 --- src/version.c 2020-06-18 18:45:22.373953310 +0200 *************** *** 756,757 **** --- 756,759 ---- { /* Add new patch number below this line */ + /**/ + 1003, /**/ -- There are three kinds of people: Those who can count & those who can't. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///