Patch 8.2.3111
Problem:    Vim9: confusing error with extra whitespace before colon.
Solution:   Check for colon after white space. (closes #8513)
Files:      src/eval.c, src/vim9compile.c, src/testdir/test_vim9_script.vim


*** ../vim-8.2.3110/src/eval.c  2021-06-27 22:03:28.637707737 +0200
--- src/eval.c  2021-07-05 21:35:14.639368162 +0200
***************
*** 1660,1665 ****
--- 1660,1666 ----
      evalarg_T *evalarg)
  {
      forinfo_T *fi;
+     char_u    *var_list_end;
      char_u    *expr;
      typval_T  tv;
      list_T    *l;
***************
*** 1671,1685 ****
      if (fi == NULL)
        return NULL;
  
!     expr = skip_var_list(arg, TRUE, &fi->fi_varcount, &fi->fi_semicolon, 
FALSE);
!     if (expr == NULL)
        return fi;
  
!     expr = skipwhite_and_linebreak(expr, evalarg);
      if (expr[0] != 'i' || expr[1] != 'n'
                                  || !(expr[2] == NUL || VIM_ISWHITE(expr[2])))
      {
!       emsg(_(e_missing_in));
        return fi;
      }
  
--- 1672,1690 ----
      if (fi == NULL)
        return NULL;
  
!     var_list_end = skip_var_list(arg, TRUE, &fi->fi_varcount,
!                                                    &fi->fi_semicolon, FALSE);
!     if (var_list_end == NULL)
        return fi;
  
!     expr = skipwhite_and_linebreak(var_list_end, evalarg);
      if (expr[0] != 'i' || expr[1] != 'n'
                                  || !(expr[2] == NUL || VIM_ISWHITE(expr[2])))
      {
!       if (in_vim9script() && *expr == ':' && expr != var_list_end)
!           semsg(_(e_no_white_space_allowed_before_colon_str), expr);
!       else
!           emsg(_(e_missing_in));
        return fi;
      }
  
*** ../vim-8.2.3110/src/vim9compile.c   2021-07-04 22:48:08.261371720 +0200
--- src/vim9compile.c   2021-07-05 21:39:09.858919317 +0200
***************
*** 7775,7781 ****
        return NULL;
      if (STRNCMP(p, "in", 2) != 0 || !IS_WHITE_OR_NUL(p[2]))
      {
!       emsg(_(e_missing_in));
        return NULL;
      }
      wp = p + 2;
--- 7775,7784 ----
        return NULL;
      if (STRNCMP(p, "in", 2) != 0 || !IS_WHITE_OR_NUL(p[2]))
      {
!       if (*p == ':' && wp != p)
!           semsg(_(e_no_white_space_allowed_before_colon_str), p);
!       else
!           emsg(_(e_missing_in));
        return NULL;
      }
      wp = p + 2;
*** ../vim-8.2.3110/src/testdir/test_vim9_script.vim    2021-07-04 
14:47:27.455118487 +0200
--- src/testdir/test_vim9_script.vim    2021-07-05 21:37:34.855104149 +0200
***************
*** 2566,2571 ****
--- 2566,2578 ----
        endfor
    END
    CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected number but 
got string', 1)
+ 
+   lines =<< trim END
+       for n : number in [1, 2]
+         echo n
+       endfor
+   END
+   CheckDefAndScriptFailure(lines, 'E1059:', 1)
  enddef
  
  def Test_for_loop_script_var()
*** ../vim-8.2.3110/src/version.c       2021-07-05 20:14:54.400221570 +0200
--- src/version.c       2021-07-05 21:34:26.935457918 +0200
***************
*** 757,758 ****
--- 757,760 ----
  {   /* Add new patch number below this line */
+ /**/
+     3111,
  /**/

-- 
>From "know your smileys":
 8-O    "Omigod!!" (done "rm -rf *" ?)

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///                                                                      \\\
\\\        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/202107051942.165JgHOR2887959%40masaka.moolenaar.net.

Raspunde prin e-mail lui