# HG changeset patch # User Christian Brabandt # Date 1697560202 -7200 # Node ID 1fcb7c9dc5465f30ec1e96af517c012407f7d448 # Parent d005b860bdc55c3d8103a70c6f90635f1da93c44 patch 9.0.2043: Vim9: issue with funcref assignmentand varargs Commit: https://github.com/vim/vim/commit/96952b2e98cb5f05bc3b3adfb0029056f39cffef Author: Ernie Rael Date: Tue Oct 17 18:15:01 2023 +0200 patch 9.0.2043: Vim9: issue with funcref assignmentand varargs Problem: Vim9: issue with funcref assignmentand varargs Solution: Fix funcref type checking closes: #13351 Signed-off-by: Christian Brabandt Co-authored-by: Ernie Rael diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim --- a/src/testdir/test_vim9_assign.vim +++ b/src/testdir/test_vim9_assign.vim @@ -1863,6 +1863,62 @@ def Test_assign_lambda() v9.CheckDefAndScriptFailure(lines, 'E1051:') enddef +def Test_assign_funcref_args() + # unspecified arguments match everything, including varargs + var lines =<< trim END + vim9script + + var FuncUnknown: func: number + + FuncUnknown = (v): number => v + assert_equal(5, FuncUnknown(5)) + + FuncUnknown = (v1, v2): number => v1 + v2 + assert_equal(7, FuncUnknown(3, 4)) + + FuncUnknown = (...v1): number => v1[0] + v1[1] + len(v1) * 1000 + assert_equal(4007, FuncUnknown(3, 4, 5, 6)) + + FuncUnknown = (v: list): number => v[0] + v[1] + len(v) * 1000 + assert_equal(5009, FuncUnknown([4, 5, 6, 7, 8])) + END + v9.CheckScriptSuccess(lines) + + # varargs must match + lines =<< trim END + vim9script + var FuncAnyVA: func(...any): number + FuncAnyVA = (v): number => v + END + v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected func(...any): number but got func(any): number') + + # varargs must match + lines =<< trim END + vim9script + var FuncAnyVA: func(...any): number + FuncAnyVA = (v1, v2): number => v1 + v2 + END + v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected func(...any): number but got func(any, any): number') + + # varargs must match + lines =<< trim END + vim9script + var FuncAnyVA: func(...any): number + FuncAnyVA = (v1: list): number => 3 + END + v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected func(...any): number but got func(list): number') +enddef + +def Test_assign_funcref_arg_any() + var lines =<< trim END + vim9script + var FuncAnyVA: func(any): number + FuncAnyVA = (v): number => v + END + # TODO: Verify this should succeed. + v9.CheckScriptSuccess(lines) +enddef + def Test_heredoc() # simple heredoc var lines =<< trim END diff --git a/src/testdir/test_vim9_class.vim b/src/testdir/test_vim9_class.vim --- a/src/testdir/test_vim9_class.vim +++ b/src/testdir/test_vim9_class.vim @@ -6953,6 +6953,21 @@ def Test_extended_obj_method_type_check( endclass END v9.CheckSourceFailure(lines, 'E1383: Method "Doit": type mismatch, expected func(object): object but got func(object): object', 20) + + # check varargs type mismatch + lines =<< trim END + vim9script + + class B + def F(...xxx: list) + enddef + endclass + class C extends B + def F(xxx: list) + enddef + endclass + END + v9.CheckSourceFailure(lines, 'E1383: Method "F": type mismatch, expected func(...list) but got func(list)', 10) enddef " Test type checking for class variable in assignments @@ -7431,6 +7446,54 @@ def Test_funcref_argtype_returntype_chec v9.CheckSourceFailure(lines, 'E1012: Type mismatch; expected func(object): object but got func(object): object', 1) enddef +def Test_funcref_argtype_invariance_check() + var lines =<< trim END + vim9script + + class A + endclass + class B extends A + endclass + class C extends B + endclass + + var Func: func(B): number + Func = (o: B): number => 3 + assert_equal(3, Func(B.new())) + END + v9.CheckSourceSuccess(lines) + + lines =<< trim END + vim9script + + class A + endclass + class B extends A + endclass + class C extends B + endclass + + var Func: func(B): number + Func = (o: A): number => 3 + END + v9.CheckSourceFailure(lines, 'E1012: Type mismatch; expected func(object): number but got func(object): number', 11) + + lines =<< trim END + vim9script + + class A + endclass + class B extends A + endclass + class C extends B + endclass + + var Func: func(B): number + Func = (o: C): number => 3 + END + v9.CheckSourceFailure(lines, 'E1012: Type mismatch; expected func(object): number but got func(object): number', 11) +enddef + " Test for using an operator (e.g. +) with an assignment def Test_op_and_assignment() # Using += with a class variable diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim index 597a10c581882c180a1f96a5ae1000680c2edeb0..701a2f085dd3a13a8d58e75f6c3ee8700d00c112 GIT binary patch literal 106698 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 diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -705,6 +705,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2043, +/**/ 2042, /**/ 2041, diff --git a/src/vim9type.c b/src/vim9type.c --- a/src/vim9type.c +++ b/src/vim9type.c @@ -884,6 +884,11 @@ check_type_maybe( else ret = MAYBE; } + if (ret != FAIL + && ((expected->tt_flags & TTFLAG_VARARGS) + != (actual->tt_flags & TTFLAG_VARARGS)) + && expected->tt_argcount != -1) + ret = FAIL; if (ret != FAIL && expected->tt_argcount != -1 && actual->tt_min_argcount != -1 && (actual->tt_argcount == -1