To: vim_dev@googlegroups.com Subject: Patch 8.2.3868 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.3868 (after 8.2.3866) Problem: Vim9: function test fails. Solution: Add missing changes. Add test for earlier patch. Files: src/vim9type.c, src/testdir/test_vim9_disassemble.vim *** ../vim-8.2.3867/src/vim9type.c 2021-12-18 12:31:30.615693410 +0000 --- src/vim9type.c 2021-12-21 11:37:37.056992930 +0000 *************** *** 567,573 **** --- 567,575 ---- { // tt_type should match, except that a "partial" can be assigned to a // variable with type "func". + // And "unknown" (using global variable) needs a runtime type check. if (!(expected->tt_type == actual->tt_type + || actual->tt_type == VAR_UNKNOWN || (expected->tt_type == VAR_FUNC && actual->tt_type == VAR_PARTIAL))) { *************** *** 582,588 **** if (expected->tt_type == VAR_DICT || expected->tt_type == VAR_LIST) { // "unknown" is used for an empty list or dict ! if (actual->tt_member != &t_unknown) ret = check_type(expected->tt_member, actual->tt_member, FALSE, where); } --- 584,590 ---- if (expected->tt_type == VAR_DICT || expected->tt_type == VAR_LIST) { // "unknown" is used for an empty list or dict ! if (actual->tt_member != NULL && actual->tt_member != &t_unknown) ret = check_type(expected->tt_member, actual->tt_member, FALSE, where); } *************** *** 592,598 **** // nothing, thus there is no point in checking. if (expected->tt_member != &t_unknown) { ! if (actual->tt_member != &t_unknown) ret = check_type(expected->tt_member, actual->tt_member, FALSE, where); else --- 594,601 ---- // nothing, thus there is no point in checking. if (expected->tt_member != &t_unknown) { ! if (actual->tt_member != NULL ! && actual->tt_member != &t_unknown) ret = check_type(expected->tt_member, actual->tt_member, FALSE, where); else *** ../vim-8.2.3867/src/testdir/test_vim9_disassemble.vim 2021-12-16 15:49:39.157345806 +0000 --- src/testdir/test_vim9_disassemble.vim 2021-12-20 12:01:45.626213368 +0000 *************** *** 2328,2354 **** elseif false echo "false" endif enddef def Test_debug_elseif_constant() ! var res = execute('disass s:ElseifConstant') assert_match('\d*_ElseifConstant\_s*' .. 'if g:value\_s*' .. ! '0 LOADG g:value\_s*' .. ! '1 COND2BOOL\_s*' .. ! '2 JUMP_IF_FALSE -> 6\_s*' .. 'echo "one"\_s*' .. ! '3 PUSHS "one"\_s*' .. ! '4 ECHO 1\_s*' .. 'elseif true\_s*' .. ! '5 JUMP -> 8\_s*' .. 'echo "true"\_s*' .. ! '6 PUSHS "true"\_s*' .. ! '7 ECHO 1\_s*' .. 'elseif false\_s*' .. 'echo "false"\_s*' .. 'endif\_s*' .. ! '\d RETURN void*', res) enddef --- 2328,2370 ---- elseif false echo "false" endif + if 0 + echo "yes" + elseif 0 + echo "no" + endif enddef def Test_debug_elseif_constant() ! var res = execute('disass debug s:ElseifConstant') assert_match('\d*_ElseifConstant\_s*' .. 'if g:value\_s*' .. ! '0 DEBUG line 1-1 varcount 0\_s*' .. ! '1 LOADG g:value\_s*' .. ! '2 COND2BOOL\_s*' .. ! '3 JUMP_IF_FALSE -> 8\_s*' .. 'echo "one"\_s*' .. ! '4 DEBUG line 2-2 varcount 0\_s*' .. ! '5 PUSHS "one"\_s*' .. ! '6 ECHO 1\_s*' .. 'elseif true\_s*' .. ! '7 JUMP -> 12\_s*' .. ! '8 DEBUG line 3-3 varcount 0\_s*' .. 'echo "true"\_s*' .. ! '9 DEBUG line 4-4 varcount 0\_s*' .. ! '10 PUSHS "true"\_s*' .. ! '11 ECHO 1\_s*' .. 'elseif false\_s*' .. 'echo "false"\_s*' .. 'endif\_s*' .. ! 'if 0\_s*' .. ! '12 DEBUG line 8-8 varcount 0\_s*' .. ! 'echo "yes"\_s*' .. ! 'elseif 0\_s*' .. ! '13 DEBUG line 11-10 varcount 0\_s*' .. ! 'echo "no"\_s*' .. ! 'endif\_s*' .. ! '14 RETURN void*', res) enddef *** ../vim-8.2.3867/src/version.c 2021-12-21 13:19:38.745205784 +0000 --- src/version.c 2021-12-21 13:30:23.128867688 +0000 *************** *** 751,752 **** --- 751,754 ---- { /* Add new patch number below this line */ + /**/ + 3868, /**/ -- In order for something to become clean, something else must become dirty; but you can get everything dirty without getting anything clean. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// \\\ \\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///