patch 8.2.3299: Vim9: exists() does not handle much at compile time

Problem:    Vim9: exists() does not handle much at compile time.
Solution:   Handle variable names. (closes #8688)
diff --git a/src/testdir/test_vim9_builtin.vim b/src/testdir/test_vim9_builtin.vim
index 19baada..4fb1df3 100644
--- a/src/testdir/test_vim9_builtin.vim
+++ b/src/testdir/test_vim9_builtin.vim
@@ -787,6 +787,8 @@
   CheckDefExecFailure(['echo exepath("")'], 'E1175:')
 enddef
 
+command DoSomeCommand let g:didSomeCommand = 4
+
 def Test_exists()
   CheckDefAndScriptFailure2(['exists(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1')
   call assert_equal(1, exists('&tabstop'))
@@ -809,6 +811,26 @@
   else
     assert_report('tabstop option not existing?')
   endif
+
+  if exists(':DoSomeCommand') >= 2
+    DoSomeCommand
+  endif
+  assert_equal(4, g:didSomeCommand)
+  if exists(':NoSuchCommand') >= 2
+    NoSuchCommand
+  endif
+
+  var found = false
+  if exists('*CheckScriptSuccess')
+    found = true
+  endif
+  assert_true(found)
+  if exists('*NoSuchFunction')
+    NoSuchFunction()
+  endif
+  if exists('*no_such_function')
+    no_such_function()
+  endif
 enddef
 
 def Test_expand()
@@ -2948,7 +2970,7 @@
   assert_fails('setreg("ab", 0)', 'E1162:')
   CheckDefAndScriptFailure2(['setreg(1, "b")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1')
   CheckDefAndScriptFailure2(['setreg("a", "b", 3)'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3')
-enddef 
+enddef
 
 def Test_settabvar()
   CheckDefAndScriptFailure2(['settabvar("a", "b", 1)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1')