summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-06-26 22:00:38 +0200
committerBram Moolenaar <Bram@vim.org>2020-06-26 22:00:38 +0200
commite6536aa766e95b6c64489678eb029e6909ee6a35 (patch)
tree768fbac0e18f9b53f19e522140f3c2f44495e5d4
parentbe7ee488761a5582a5605197c3951a17f20d072e (diff)
downloadvim-git-8.2.1064.tar.gz
patch 8.2.1064: Vim9: no line break allowed before comperatorsv8.2.1064
Problem: Vim9: no line break allowed before comperators. Solution: Check for comperator after line break.
-rw-r--r--src/eval.c6
-rw-r--r--src/testdir/test_vim9_expr.vim37
-rw-r--r--src/version.c2
3 files changed, 44 insertions, 1 deletions
diff --git a/src/eval.c b/src/eval.c
index 9f06fd8d7..1bfe808f5 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -2191,6 +2191,7 @@ eval4(char_u **arg, typval_T *rettv, evalarg_T *evalarg)
{
typval_T var2;
char_u *p;
+ int getnext;
int i;
exptype_T type = EXPR_UNKNOWN;
int len = 2;
@@ -2202,7 +2203,7 @@ eval4(char_u **arg, typval_T *rettv, evalarg_T *evalarg)
if (eval5(arg, rettv, evalarg) == FAIL)
return FAIL;
- p = *arg;
+ p = eval_next_non_blank(*arg, evalarg, &getnext);
switch (p[0])
{
case '=': if (p[1] == '=')
@@ -2247,6 +2248,9 @@ eval4(char_u **arg, typval_T *rettv, evalarg_T *evalarg)
*/
if (type != EXPR_UNKNOWN)
{
+ if (getnext)
+ *arg = eval_next_line(evalarg);
+
// extra question mark appended: ignore case
if (p[len] == '?')
{
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index dcdaeb240..de4d74165 100644
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -529,6 +529,43 @@ def RetVoid()
let x = 1
enddef
+def Test_expr4_vimscript()
+ " only checks line continuation
+ let lines =<< trim END
+ vim9script
+ let var = 0
+ < 1
+ assert_equal(1, var)
+ END
+ CheckScriptSuccess(lines)
+
+ lines =<< trim END
+ vim9script
+ let var = 123
+ != 123
+ assert_equal(0, var)
+ END
+ CheckScriptSuccess(lines)
+
+ lines =<< trim END
+ vim9script
+ let list = [1, 2, 3]
+ let var = list
+ is list
+ assert_equal(1, var)
+ END
+ CheckScriptSuccess(lines)
+
+ lines =<< trim END
+ vim9script
+ let myblob = 0z1234
+ let var = myblob
+ isnot 0z11
+ assert_equal(1, var)
+ END
+ CheckScriptSuccess(lines)
+enddef
+
func Test_expr4_fails()
let msg = "white space required before and after '>'"
call CheckDefFailure(["let x = 1>2"], msg)
diff --git a/src/version.c b/src/version.c
index bdb43fcc5..eb0bf8dcd 100644
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1064,
+/**/
1063,
/**/
1062,