Mercurial > vim
changeset 28899:2644e49d5147 v8.2.4972
patch 8.2.4972: Vim9: compilation fails when using dict member when skipping
Commit: https://github.com/vim/vim/commit/1ff9c44267ce487145d22d75a96370d7f96ae8dd
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue May 17 15:03:33 2022 +0100
patch 8.2.4972: Vim9: compilation fails when using dict member when skipping
Problem: Vim9: compilation fails when using dict member when skipping.
Solution: Do not generate ISN_USEDICT when skipping. (closes https://github.com/vim/vim/issues/10433)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Tue, 17 May 2022 16:15:02 +0200 |
parents | 61a6cd224f07 |
children | 7630685d3e43 |
files | src/testdir/test_vim9_expr.vim src/version.c src/vim9expr.c |
diffstat | 3 files changed, 10 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/testdir/test_vim9_expr.vim +++ b/src/testdir/test_vim9_expr.vim @@ -452,6 +452,12 @@ def Test_expr3() g:vals = [] assert_equal(false, g:Record(1) && g:Record(true) && g:Record(0)) assert_equal([1, true, 0], g:vals) + + var failed = false + if false && g:a == g:b.c + failed = true + endif + assert_false(failed) END v9.CheckDefAndScriptSuccess(lines) enddef
--- a/src/version.c +++ b/src/version.c @@ -747,6 +747,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 4972, +/**/ 4971, /**/ 4970,
--- a/src/vim9expr.c +++ b/src/vim9expr.c @@ -2102,7 +2102,8 @@ compile_subscript( // Turn "dict.Func" into a partial for "Func" bound to "dict". // This needs to be done at runtime to be able to check the type. - if (keeping_dict && generate_instr(cctx, ISN_USEDICT) == NULL) + if (keeping_dict && cctx->ctx_skip != SKIP_YES + && generate_instr(cctx, ISN_USEDICT) == NULL) return FAIL; return OK;