]> granicus.if.org Git - vim/commitdiff
patch 8.2.3633: Vim9: line number of lambda is off by one v8.2.3633
authorBram Moolenaar <Bram@vim.org>
Sat, 20 Nov 2021 21:35:41 +0000 (21:35 +0000)
committerBram Moolenaar <Bram@vim.org>
Sat, 20 Nov 2021 21:35:41 +0000 (21:35 +0000)
Problem:    Vim9: line number of lambda is off by one.
Solution:   Add one to the line number. (closes #9083)

src/testdir/test_vim9_func.vim
src/userfunc.c
src/version.c

index 3d1ae26803386ac5905122b01338651397b241c2..c8b821e75102824d154f3c53bce94a4edc284ea8 100644 (file)
@@ -1052,6 +1052,20 @@ def Test_call_lambda_args()
   CheckScriptFailure(['vim9script'] + lines, 'E118: Too many arguments for function: <lambda>', 2)
 enddef
 
+def Test_lambda_line_nr()
+  var lines =<< trim END
+      vim9script
+      # comment
+      # comment
+      var id = timer_start(1'000, (_) => 0)
+      var out = execute('verbose ' .. timer_info(id)[0].callback
+          ->string()
+          ->substitute("('\\|')", ' ', 'g'))
+      assert_match('Last set from .* line 4', out)
+  END
+  CheckScriptSuccess(lines)
+enddef
+
 def FilterWithCond(x: string, Cond: func(string): bool): bool
   return Cond(x)
 enddef
index 2f0637e7db838e674b37051cb34f6eac58fc3726..95d9c4a94bd3d82ed9b50c15e0c1a9bf53d46f85 100644 (file)
@@ -1491,7 +1491,7 @@ get_lambda_tv(
        fp->uf_flags = flags;
        fp->uf_calls = 0;
        fp->uf_script_ctx = current_sctx;
-       fp->uf_script_ctx.sc_lnum += SOURCING_LNUM - newlines.ga_len;
+       fp->uf_script_ctx.sc_lnum += SOURCING_LNUM - newlines.ga_len + 1;
 
        function_using_block_scopes(fp, evalarg->eval_cstack);
 
index 8eca0877d5f140f4fa38831cb6e697f71b235f49..b53524ff1d7800ce642c293b8f15390a24aa0e2c 100644 (file)
@@ -757,6 +757,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    3633,
 /**/
     3632,
 /**/