1
0
forked from aniani/vim

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)
This commit is contained in:
Bram Moolenaar
2022-02-23 21:03:32 +00:00
parent 6e1a38745f
commit fa02616718
3 changed files with 15 additions and 0 deletions

View File

@@ -624,6 +624,8 @@ arg_sort_how(type_T *type, type_T *decl_type UNUSED, argcontext_T *context)
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);
}

View File

@@ -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<number>
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()

View File

@@ -754,6 +754,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
4459,
/**/
4458,
/**/