From 1ff9c44267ce487145d22d75a96370d7f96ae8dd Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 17 May 2022 15:03:33 +0100 Subject: [PATCH] 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 #10433) --- src/testdir/test_vim9_expr.vim | 6 ++++++ src/version.c | 2 ++ src/vim9expr.c | 3 ++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim index e43eba73ab..401ab076b0 100644 --- 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 index 10804ecaa9..873b17bfd9 100644 --- a/src/version.c +++ b/src/version.c @@ -746,6 +746,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 4972, /**/ 4971, /**/ diff --git a/src/vim9expr.c b/src/vim9expr.c index 3375478d03..eaea089f98 100644 --- 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;