diff --git a/src/eval.c b/src/eval.c
index 571e96f..02cfd7d 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -3188,6 +3188,28 @@
     return OK;
 }
 
+    int
+eval_leader(char_u **arg, int vim9)
+{
+    char_u	*s = *arg;
+    char_u	*p = *arg;
+
+    while (*p == '!' || *p == '-' || *p == '+')
+    {
+	char_u *n = skipwhite(p + 1);
+
+	// ++, --, -+ and +- are not accepted in Vim9 script
+	if (vim9 && (*p == '-' || *p == '+') && (*n == '-' || *n == '+'))
+	{
+	    semsg(_(e_invexpr2), s);
+	    return FAIL;
+	}
+	p = n;
+    }
+    *arg = p;
+    return OK;
+}
+
 /*
  * Handle sixth level expression:
  *  number		number constant
@@ -3243,8 +3265,8 @@
      * Skip '!', '-' and '+' characters.  They are handled later.
      */
     start_leader = *arg;
-    while (**arg == '!' || **arg == '-' || **arg == '+')
-	*arg = skipwhite(*arg + 1);
+    if (eval_leader(arg, in_vim9script()) == FAIL)
+	return FAIL;
     end_leader = *arg;
 
     if (**arg == '.' && (!isdigit(*(*arg + 1))
diff --git a/src/proto/eval.pro b/src/proto/eval.pro
index 8fa908c..ec45364 100644
--- a/src/proto/eval.pro
+++ b/src/proto/eval.pro
@@ -39,6 +39,7 @@
 int eval1(char_u **arg, typval_T *rettv, evalarg_T *evalarg);
 void eval_addblob(typval_T *tv1, typval_T *tv2);
 int eval_addlist(typval_T *tv1, typval_T *tv2);
+int eval_leader(char_u **arg, int vim9);
 int check_can_index(typval_T *rettv, int evaluate, int verbose);
 int eval_index_inner(typval_T *rettv, int is_range, typval_T *var1, typval_T *var2, char_u *key, int keylen, int verbose);
 char_u *partial_name(partial_T *pt);
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index d835f04..ae5ca28 100644
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -2516,11 +2516,8 @@
 
   assert_equal(6, +6)
   assert_equal(-6, -6)
-  assert_equal(6, --6)
-  assert_equal(6, -+-6)
-  assert_equal(-6, ---6)
   assert_equal(false, !-3)
-  assert_equal(true, !+-+0)
+  assert_equal(true, !+0)
 enddef
 
 def Test_expr7_parens_vim9script()
@@ -2539,26 +2536,56 @@
 def Test_expr7_negate_add()
   assert_equal(-99, -99)
   assert_equal(-99, - 99)
-  assert_equal(99, --99)
-  assert_equal(99, -- 99)
-  assert_equal(99, - - 99)
   assert_equal(99, +99)
-  assert_equal(-99, -+99)
-  assert_equal(-99, -+ 99)
-  assert_equal(-99, - +99)
-  assert_equal(-99, - + 99)
-  assert_equal(-99, +-99)
-  assert_equal(-99, + -99)
-  assert_equal(-99, + - 99)
 
   var nr = 88
   assert_equal(-88, -nr)
   assert_equal(-88, - nr)
-  assert_equal(-88, - +nr)
-  assert_equal(88, -- nr)
   assert_equal(88, + nr)
-  assert_equal(88, --+ nr)
-  assert_equal(88, - - nr)
+
+  var lines =<< trim END
+    var n = 12
+    echo ++n
+  END
+  CheckDefAndScriptFailure(lines, 'E15:')
+  lines =<< trim END
+    var n = 12
+    echo --n
+  END
+  CheckDefAndScriptFailure(lines, 'E15:')
+  lines =<< trim END
+    var n = 12
+    echo +-n
+  END
+  CheckDefAndScriptFailure(lines, 'E15:')
+  lines =<< trim END
+    var n = 12
+    echo -+n
+  END
+  CheckDefAndScriptFailure(lines, 'E15:')
+  lines =<< trim END
+    var n = 12
+    echo - -n
+  END
+  CheckDefAndScriptFailure(lines, 'E15:')
+  lines =<< trim END
+    var n = 12
+    echo + +n
+  END
+  CheckDefAndScriptFailure(lines, 'E15:')
+
+  lines =<< trim END
+    var n = 12
+    :1
+    ++n
+  END
+  CheckDefAndScriptFailure(lines, 'E1050:')
+  lines =<< trim END
+    var n = 12
+    :1
+    --n
+  END
+  CheckDefAndScriptFailure(lines, 'E1050:')
 enddef
 
 def Echo(arg: any): string
@@ -2573,7 +2600,7 @@
   var lines =<< trim END
       assert_equal('yes', 'yes'->Echo())
       assert_equal(true, !range(5)->empty())
-      assert_equal([0, 1, 2], --3->range())
+      assert_equal([0, 1, 2], 3->range())
   END
   CheckDefAndScriptSuccess(lines)
 
diff --git a/src/version.c b/src/version.c
index 77f032d..0e711ed 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2305,
+/**/
     2304,
 /**/
     2303,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index 67307f8..9810f41 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -3887,8 +3887,8 @@
      * Skip '!', '-' and '+' characters.  They are handled later.
      */
     start_leader = *arg;
-    while (**arg == '!' || **arg == '-' || **arg == '+')
-	*arg = skipwhite(*arg + 1);
+    if (eval_leader(arg, TRUE) == FAIL)
+	return FAIL;
     end_leader = *arg;
 
     rettv->v_type = VAR_UNKNOWN;
