Patch 8.2.1434

3 views
Skip to first unread message

Bram Moolenaar

unread,
Aug 12, 2020, 1:42:35 PM8/12/20
to vim...@googlegroups.com

Patch 8.2.1434
Problem: Vim9: crash when lambda uses outer function argument.
Solution: Set the flag that the outer context is used.
Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim


*** ../vim-8.2.1433/src/vim9compile.c 2020-08-12 19:15:30.380192349 +0200
--- src/vim9compile.c 2020-08-12 19:38:45.133721436 +0200
***************
*** 2135,2141 ****
--- 2135,2144 ----
if (gen_load)
res = generate_LOAD(cctx, ISN_LOAD, idx, NULL, type);
if (gen_load_outer)
+ {
res = generate_LOAD(cctx, ISN_LOADOUTER, idx, NULL, type);
+ cctx->ctx_outer_used = TRUE;
+ }
}

*arg = end;
*** ../vim-8.2.1433/src/testdir/test_vim9_expr.vim 2020-08-12 19:15:30.380192349 +0200
--- src/testdir/test_vim9_expr.vim 2020-08-12 19:41:03.889045718 +0200
***************
*** 1443,1448 ****
--- 1443,1458 ----
}
enddef

+ def LambdaUsingArg(x: number): func
+ return {->
+ # some comment
+ x == 1
+ # some comment
+ ||
+ x == 2
+ }
+ enddef
+
def Test_expr7_lambda()
let La = { -> 'result'}
assert_equal('result', La())
***************
*** 1481,1486 ****
--- 1491,1499 ----
assert_equal(true, LambdaWithComments()(2))
assert_equal(false, LambdaWithComments()(3))

+ assert_equal(false, LambdaUsingArg(0)())
+ assert_equal(true, LambdaUsingArg(1)())
+
call CheckDefFailure(["filter([1, 2], {k,v -> 1})"], 'E1069:')
enddef

*** ../vim-8.2.1433/src/version.c 2020-08-12 19:15:30.380192349 +0200
--- src/version.c 2020-08-12 19:41:32.316906830 +0200
***************
*** 756,757 ****
--- 756,759 ----
{ /* Add new patch number below this line */
+ /**/
+ 1434,
/**/

--
hundred-and-one symptoms of being an internet addict:
184. You no longer ask prospective dates what their sign is, instead
your line is "Hi, what's your URL?"

/// Bram Moolenaar -- Br...@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
Reply all
Reply to author
Forward
0 new messages