From 44a8977de467241a2f9959253d06eff53a8baad9 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 18 Dec 2021 12:31:33 +0000 Subject: patch 8.2.3844: Vim9: no type error if assigning func(number) to func(string) Problem: Vim9: no type error if assigning a value with type func(number) to a variable of type func(string). Solution: Use check_type_maybe(): return MAYBE if a runtime type check is useful. (issue #8492) --- src/testdir/test_vim9_assign.vim | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/testdir') diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim index e1fe09578..f7af299e4 100644 --- a/src/testdir/test_vim9_assign.vim +++ b/src/testdir/test_vim9_assign.vim @@ -2146,6 +2146,23 @@ def Test_script_funcref_case() CheckScriptFailure(lines, 'E704:') enddef +def Test_script_funcref_runtime_type_check() + var lines =<< trim END + vim9script + def FuncWithNumberArg(n: number) + enddef + def Test() + var Ref: func(string) = function(FuncWithNumberArg) + enddef + defcompile + END + # OK at compile time + CheckScriptSuccess(lines) + + # Type check fails at runtime + CheckScriptFailure(lines + ['Test()'], 'E1012: Type mismatch; expected func(string) but got func(number)') +enddef + def Test_inc_dec() var lines =<< trim END var nr = 7 -- cgit v1.2.1