# HG changeset patch # User Bram Moolenaar # Date 1652796902 -7200 # Node ID 2644e49d51471e8f264e02d3af2a423396243cba # Parent 61a6cd224f071b81b59fca8ea9f2c242f620a74c patch 8.2.4972: Vim9: compilation fails when using dict member when skipping Commit: https://github.com/vim/vim/commit/1ff9c44267ce487145d22d75a96370d7f96ae8dd Author: Bram Moolenaar 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) diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim --- 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 diff --git a/src/version.c b/src/version.c --- 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, diff --git a/src/vim9expr.c b/src/vim9expr.c --- 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;