diff src/eval.c @ 21024:02b03915855d v8.2.1063

patch 8.2.1063: Vim9: no line break allowed before || or && Commit: https://github.com/vim/vim/commit/be7ee488761a5582a5605197c3951a17f20d072e Author: Bram Moolenaar <Bram@vim.org> Date: Fri Jun 26 21:38:51 2020 +0200 patch 8.2.1063: Vim9: no line break allowed before || or && Problem: Vim9: no line break allowed before || or &&. Solution: Check for operator after line break.
author Bram Moolenaar <Bram@vim.org>
date Fri, 26 Jun 2020 21:45:16 +0200
parents 9d8634e91d1b
children fe2ed85db946
line wrap: on
line diff
--- a/src/eval.c
+++ b/src/eval.c
@@ -1991,6 +1991,8 @@ eval1(char_u **arg, typval_T *rettv, eva
     static int
 eval2(char_u **arg, typval_T *rettv, evalarg_T *evalarg)
 {
+    char_u	*p;
+    int		getnext;
     typval_T	var2;
     long	result;
     int		first;
@@ -2007,12 +2009,16 @@ eval2(char_u **arg, typval_T *rettv, eva
      */
     first = TRUE;
     result = FALSE;
-    while ((*arg)[0] == '|' && (*arg)[1] == '|')
+    p = eval_next_non_blank(*arg, evalarg, &getnext);
+    while (p[0] == '|' && p[1] == '|')
     {
 	evalarg_T   nested_evalarg;
 	int	    evaluate;
 	int	    orig_flags;
 
+	if (getnext)
+	    *arg = eval_next_line(evalarg);
+
 	if (evalarg == NULL)
 	{
 	    CLEAR_FIELD(nested_evalarg);
@@ -2061,6 +2067,8 @@ eval2(char_u **arg, typval_T *rettv, eva
 	    rettv->v_type = VAR_NUMBER;
 	    rettv->vval.v_number = result;
 	}
+
+	p = eval_next_non_blank(*arg, evalarg, &getnext);
     }
 
     return OK;
@@ -2078,6 +2086,8 @@ eval2(char_u **arg, typval_T *rettv, eva
     static int
 eval3(char_u **arg, typval_T *rettv, evalarg_T *evalarg)
 {
+    char_u	*p;
+    int		getnext;
     typval_T	var2;
     long	result;
     int		first;
@@ -2094,12 +2104,16 @@ eval3(char_u **arg, typval_T *rettv, eva
      */
     first = TRUE;
     result = TRUE;
-    while ((*arg)[0] == '&' && (*arg)[1] == '&')
+    p = eval_next_non_blank(*arg, evalarg, &getnext);
+    while (p[0] == '&' && p[1] == '&')
     {
 	evalarg_T   nested_evalarg;
 	int	    orig_flags;
 	int	    evaluate;
 
+	if (getnext)
+	    *arg = eval_next_line(evalarg);
+
 	if (evalarg == NULL)
 	{
 	    CLEAR_FIELD(nested_evalarg);
@@ -2147,6 +2161,8 @@ eval3(char_u **arg, typval_T *rettv, eva
 	    rettv->v_type = VAR_NUMBER;
 	    rettv->vval.v_number = result;
 	}
+
+	p = eval_next_non_blank(*arg, evalarg, &getnext);
     }
 
     return OK;