diff options
Diffstat (limited to 'src/vim9compile.c')
-rw-r--r-- | src/vim9compile.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/vim9compile.c b/src/vim9compile.c index d1e2c87fd..d8596e99e 100644 --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -1165,11 +1165,14 @@ generate_loadvar( generate_LOADV(cctx, name + 2); break; case dest_local: - if (lvar->lv_from_outer > 0) - generate_LOADOUTER(cctx, lvar->lv_idx, lvar->lv_from_outer, + if (cctx->ctx_skip != SKIP_YES) + { + if (lvar->lv_from_outer > 0) + generate_LOADOUTER(cctx, lvar->lv_idx, lvar->lv_from_outer, type); - else - generate_LOAD(cctx, ISN_LOAD, lvar->lv_idx, NULL, type); + else + generate_LOAD(cctx, ISN_LOAD, lvar->lv_idx, NULL, type); + } break; case dest_expr: // list or dict value should already be on the stack. @@ -1952,6 +1955,9 @@ compile_assign_unlet( } } + if (cctx->ctx_skip == SKIP_YES) + return OK; + // Load the dict or list. On the stack we then have: // - value (for assignment, not for :unlet) // - index |