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)