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;