patch 8.2.2652: Vim9: can use command modifier without an effect
Problem: Vim9: can use command modifier without an effect.
Solution: Give an error for a misplaced command modifier. Fix error message
number.
diff --git a/src/testdir/test_vim9_builtin.vim b/src/testdir/test_vim9_builtin.vim
index b6f3876..25db012 100644
--- a/src/testdir/test_vim9_builtin.vim
+++ b/src/testdir/test_vim9_builtin.vim
@@ -247,7 +247,7 @@
def Test_exepath()
CheckDefExecFailure(['echo exepath(true)'], 'E1174:')
CheckDefExecFailure(['echo exepath(v:null)'], 'E1174:')
- CheckDefExecFailure(['echo exepath("")'], 'E1142:')
+ CheckDefExecFailure(['echo exepath("")'], 'E1175:')
enddef
def Test_expand()
@@ -406,13 +406,13 @@
def Test_finddir()
CheckDefExecFailure(['echo finddir(true)'], 'E1174:')
CheckDefExecFailure(['echo finddir(v:null)'], 'E1174:')
- CheckDefExecFailure(['echo finddir("")'], 'E1142:')
+ CheckDefExecFailure(['echo finddir("")'], 'E1175:')
enddef
def Test_findfile()
CheckDefExecFailure(['echo findfile(true)'], 'E1174:')
CheckDefExecFailure(['echo findfile(v:null)'], 'E1174:')
- CheckDefExecFailure(['echo findfile("")'], 'E1142:')
+ CheckDefExecFailure(['echo findfile("")'], 'E1175:')
enddef
def Test_flattennew()
diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim
index c276a7e..bc4cfa6 100644
--- a/src/testdir/test_vim9_cmd.vim
+++ b/src/testdir/test_vim9_cmd.vim
@@ -797,6 +797,55 @@
bwipe!
enddef
+def Test_useless_command_modifier()
+ g:maybe = true
+ var lines =<< trim END
+ if g:maybe
+ silent endif
+ END
+ CheckDefAndScriptFailure(lines, 'E1176:', 2)
+
+ lines =<< trim END
+ for i in [0]
+ silent endfor
+ END
+ CheckDefAndScriptFailure(lines, 'E1176:', 2)
+
+ lines =<< trim END
+ while g:maybe
+ silent endwhile
+ END
+ CheckDefAndScriptFailure(lines, 'E1176:', 2)
+
+ lines =<< trim END
+ silent try
+ finally
+ endtry
+ END
+ CheckDefAndScriptFailure(lines, 'E1176:', 1)
+
+ lines =<< trim END
+ try
+ silent catch
+ endtry
+ END
+ CheckDefAndScriptFailure(lines, 'E1176:', 2)
+
+ lines =<< trim END
+ try
+ silent finally
+ endtry
+ END
+ CheckDefAndScriptFailure(lines, 'E1176:', 2)
+
+ lines =<< trim END
+ try
+ finally
+ silent endtry
+ END
+ CheckDefAndScriptFailure(lines, 'E1176:', 3)
+enddef
+
def Test_eval_command()
var from = 3
var to = 5
diff --git a/src/testdir/test_vim9_disassemble.vim b/src/testdir/test_vim9_disassemble.vim
index 5d3e4fa..bb74fad 100644
--- a/src/testdir/test_vim9_disassemble.vim
+++ b/src/testdir/test_vim9_disassemble.vim
@@ -1903,7 +1903,7 @@
def s:SilentIf()
silent if 4 == g:five
silent elseif 4 == g:five
- silent endif
+ endif
enddef
def Test_silent_if()
@@ -1924,14 +1924,14 @@
'\d\+ COMPAREANY ==\_s*' ..
'\d\+ CMDMOD_REV\_s*' ..
'\d\+ JUMP_IF_FALSE -> \d\+\_s*' ..
- 'silent endif\_s*' ..
+ 'endif\_s*' ..
'\d\+ RETURN 0',
res)
enddef
def s:SilentFor()
silent for i in [0]
- silent endfor
+ endfor
enddef
def Test_silent_for()
@@ -1945,7 +1945,7 @@
'\d CMDMOD_REV\_s*' ..
'5 FOR $0 -> 8\_s*' ..
'\d STORE $1\_s*' ..
- 'silent endfor\_s*' ..
+ 'endfor\_s*' ..
'\d JUMP -> 5\_s*' ..
'8 DROP\_s*' ..
'\d RETURN 0\_s*',
@@ -1954,7 +1954,7 @@
def s:SilentWhile()
silent while g:not
- silent endwhile
+ endwhile
enddef
def Test_silent_while()
@@ -1967,7 +1967,7 @@
'\d CMDMOD_REV\_s*' ..
'\d JUMP_IF_FALSE -> 6\_s*' ..
- 'silent endwhile\_s*' ..
+ 'endwhile\_s*' ..
'\d JUMP -> 0\_s*' ..
'6 RETURN 0\_s*',
res)