patch 8.2.1067: expression "!expr->func()" does not work
Problem: Expression "!expr->func()" does not work.
Solution: Apply plus and minus earlier. (closes #6348)
diff --git a/src/testdir/test_expr.vim b/src/testdir/test_expr.vim
index ec73aea..c5dd1f3 100644
--- a/src/testdir/test_expr.vim
+++ b/src/testdir/test_expr.vim
@@ -110,6 +110,13 @@
call assert_fails('echo "\<C-">')
endfunc
+func Test_method_with_prefix()
+ call assert_equal(1, !range(5)->empty())
+ call assert_equal([0, 1, 2], --3->range())
+ call assert_equal(0, !-3)
+ call assert_equal(1, !+-+0)
+endfunc
+
func Test_option_value()
" boolean
set bri
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index 33a282b..0976d9c 100644
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -1081,6 +1081,8 @@
assert_equal(6, --6)
assert_equal(6, -+-6)
assert_equal(-6, ---6)
+ assert_equal(false, !-3)
+ assert_equal(true, !+-+0)
enddef
def Test_expr7_negate()
@@ -1102,6 +1104,8 @@
def Test_expr7_call()
assert_equal('yes', 'yes'->Echo())
assert_equal('yes', 'yes'->s:EchoArg())
+ assert_equal(1, !range(5)->empty())
+ assert_equal([0, 1, 2], --3->range())
call CheckDefFailure(["let x = 'yes'->Echo"], 'E107:')
enddef