]> granicus.if.org Git - vim/commitdiff
patch 8.2.2750: Vim9: error for using underscore in nested function v8.2.2750
authorBram Moolenaar <Bram@vim.org>
Sat, 10 Apr 2021 19:01:38 +0000 (21:01 +0200)
committerBram Moolenaar <Bram@vim.org>
Sat, 10 Apr 2021 19:01:38 +0000 (21:01 +0200)
Problem:    Vim9: error for using underscore in nested function.
Solution:   Do not consider "_" already defined. (closes #8096)

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

index 6b353dd6993190e3d4207bc5626a01cecdebd196..a97146d45b85a494407ed0b571b5e4bd492d2b6e 100644 (file)
@@ -2637,6 +2637,8 @@ def Test_ignored_argument()
         return _
       endfunc
       assert_equal('too', Oktoo())
+
+      assert_equal([[1], [2], [3]], range(3)->mapnew((_, v) => [v]->map((_, w) => w + 1)))
   END
   CheckScriptSuccess(lines)
 
index 7785ac37cdcac4597fdef537df3f4efab106534a..ed2237532daacd788f0ecb0d47fe7f690f429caf 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2750,
 /**/
     2749,
 /**/
index b005ff23657c3093e20e398adddca23b087e4516..02c75c4d6a6994a4cb41fb4b2bf019124e49d398 100644 (file)
@@ -422,6 +422,10 @@ check_defined(char_u *p, size_t len, cctx_T *cctx, int is_arg)
     int                c = p[len];
     ufunc_T    *ufunc = NULL;
 
+    // underscore argument is OK
+    if (len == 1 && *p == '_')
+       return OK;
+
     if (script_var_exists(p, len, cctx) == OK)
     {
        if (is_arg)