@@ -1784,6 +1784,8 @@ next_for_item(void *fi_void, char_u *arg)
17841784 | ASSIGN_NO_MEMBER_TYPE )
17851785 : 0 );
17861786 listitem_T * item ;
1787+ int skip_assign = in_vim9script () && arg [0 ] == '_'
1788+ && !eval_isnamec (arg [1 ]);
17871789
17881790 if (fi -> fi_blob != NULL )
17891791 {
@@ -1795,6 +1797,8 @@ next_for_item(void *fi_void, char_u *arg)
17951797 tv .v_lock = VAR_FIXED ;
17961798 tv .vval .v_number = blob_get (fi -> fi_blob , fi -> fi_bi );
17971799 ++ fi -> fi_bi ;
1800+ if (skip_assign )
1801+ return TRUE;
17981802 return ex_let_vars (arg , & tv , TRUE, fi -> fi_semicolon ,
17991803 fi -> fi_varcount , flag , NULL ) == OK ;
18001804 }
@@ -1812,7 +1816,10 @@ next_for_item(void *fi_void, char_u *arg)
18121816 tv .vval .v_string = vim_strnsave (fi -> fi_string + fi -> fi_byte_idx , len );
18131817 fi -> fi_byte_idx += len ;
18141818 ++ fi -> fi_bi ;
1815- result = ex_let_vars (arg , & tv , TRUE, fi -> fi_semicolon ,
1819+ if (skip_assign )
1820+ result = TRUE;
1821+ else
1822+ result = ex_let_vars (arg , & tv , TRUE, fi -> fi_semicolon ,
18161823 fi -> fi_varcount , flag , NULL ) == OK ;
18171824 vim_free (tv .vval .v_string );
18181825 return result ;
@@ -1825,7 +1832,10 @@ next_for_item(void *fi_void, char_u *arg)
18251832 {
18261833 fi -> fi_lw .lw_item = item -> li_next ;
18271834 ++ fi -> fi_bi ;
1828- result = (ex_let_vars (arg , & item -> li_tv , TRUE, fi -> fi_semicolon ,
1835+ if (skip_assign )
1836+ result = TRUE;
1837+ else
1838+ result = (ex_let_vars (arg , & item -> li_tv , TRUE, fi -> fi_semicolon ,
18291839 fi -> fi_varcount , flag , NULL ) == OK );
18301840 }
18311841 return result ;
0 commit comments