# HG changeset patch # User Bram Moolenaar # Date 1645650903 -3600 # Node ID 1b75d767d9e4396e98cc4f8d3e85b4cc54fd0c4d # Parent 8ae06422a1491d53285f5c312d1401ef1cd8db15 patch 8.2.4459: Vim9: compiling sort() call fails with unknown arguments Commit: https://github.com/vim/vim/commit/fa02616718103be3f9e13e26d57905d4eddf836d Author: Bram Moolenaar Date: Wed Feb 23 21:03:32 2022 +0000 patch 8.2.4459: Vim9: compiling sort() call fails with unknown arguments Problem: Vim9: compiling sort() call fails with a funcref that has unknown arguments. Solution: Do not check the arguments if they are unknown at compile time. (closes #9835) diff --git a/src/evalfunc.c b/src/evalfunc.c --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -624,6 +624,8 @@ arg_sort_how(type_T *type, type_T *decl_ where_T where = WHERE_INIT; args[1] = args[0]; + if (type->tt_argcount == -1) + t_func_exp.tt_argcount = -1; where.wt_index = 2; return check_type(&t_func_exp, type, TRUE, where); } diff --git a/src/testdir/test_vim9_builtin.vim b/src/testdir/test_vim9_builtin.vim --- a/src/testdir/test_vim9_builtin.vim +++ b/src/testdir/test_vim9_builtin.vim @@ -3812,6 +3812,17 @@ def Test_sort_argument() sort([1, 2, 3], (a: any, b: any) => 1) END v9.CheckDefAndScriptSuccess(lines) + + lines =<< trim END + vim9script + def SortedList(): list + var Lambda: func: number = (a, b): number => a - b + var l = [3, 2, 1] + return l->sort(Lambda) + enddef + SortedList()->assert_equal([1, 2, 3]) + END + v9.CheckScriptSuccess(lines) enddef def Test_sort_compare_func_fails() diff --git a/src/version.c b/src/version.c --- 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 */ /**/ + 4459, +/**/ 4458, /**/ 4457,