patch 8.2.0188: Check commands don't work well with Vim9 script

Problem:    Check commands don't work well with Vim9 script.
Solution:   Improve constant expression handling.
diff --git a/src/testdir/check.vim b/src/testdir/check.vim
index 30c4158..6efa348 100644
--- a/src/testdir/check.vim
+++ b/src/testdir/check.vim
@@ -1,10 +1,12 @@
 source shared.vim
 
+command -nargs=1 MissingFeature throw 'Skipped: ' .. <args> .. ' feature missing'
+
 " Command to check for the presence of a feature.
 command -nargs=1 CheckFeature call CheckFeature(<f-args>)
 func CheckFeature(name)
   if !has(a:name)
-    throw 'Skipped: ' .. a:name .. ' feature missing'
+    MissingFeature a:name
   endif
 endfunc
 
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index e66a559..1ff7131 100644
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -31,7 +31,9 @@
 
   assert_equal('two', false ? 'one' : 'two')
   assert_equal('two', 0 ? 'one' : 'two')
-  assert_equal('two', 0.0 ? 'one' : 'two')
+  if has('float')
+    assert_equal('two', 0.0 ? 'one' : 'two')
+  endif
   assert_equal('two', '' ? 'one' : 'two')
 "  assert_equal('one', 0z ? 'one' : 'two')
   assert_equal('two', [] ? 'one' : 'two')
@@ -420,22 +422,25 @@
 enddef
 
 def Test_expr5_float()
-  CheckFeature float
-  assert_equal(66.0, 60.0 + 6.0)
-  assert_equal(66.0, 60.0 + 6)
-  assert_equal(66.0, 60 + 6.0)
-  assert_equal(5.1, g:afloat + 5)
-  assert_equal(8.1, 8 + g:afloat)
-  assert_equal(10.1, g:anint + g:afloat)
-  assert_equal(10.1, g:afloat + g:anint)
+  if !has('float')
+    MissingFeature 'float'
+  else
+    assert_equal(66.0, 60.0 + 6.0)
+    assert_equal(66.0, 60.0 + 6)
+    assert_equal(66.0, 60 + 6.0)
+    assert_equal(5.1, g:afloat + 5)
+    assert_equal(8.1, 8 + g:afloat)
+    assert_equal(10.1, g:anint + g:afloat)
+    assert_equal(10.1, g:afloat + g:anint)
 
-  assert_equal(54.0, 60.0 - 6.0)
-  assert_equal(54.0, 60.0 - 6)
-  assert_equal(54.0, 60 - 6.0)
-  assert_equal(-4.9, g:afloat - 5)
-  assert_equal(7.9, 8 - g:afloat)
-  assert_equal(9.9, g:anint - g:afloat)
-  assert_equal(-9.9, g:afloat - g:anint)
+    assert_equal(54.0, 60.0 - 6.0)
+    assert_equal(54.0, 60.0 - 6)
+    assert_equal(54.0, 60 - 6.0)
+    assert_equal(-4.9, g:afloat - 5)
+    assert_equal(7.9, 8 - g:afloat)
+    assert_equal(9.9, g:anint - g:afloat)
+    assert_equal(-9.9, g:afloat - g:anint)
+  endif
 enddef
 
 func Test_expr5_fails()
@@ -476,27 +481,29 @@
 enddef
 
 def Test_expr6_float()
-  CheckFeature float
+  if !has('float')
+    MissingFeature 'float'
+  else
+    assert_equal(36.0, 6.0 * 6)
+    assert_equal(36.0, 6 * 6.0)
+    assert_equal(36.0, 6.0 * 6.0)
+    assert_equal(1.0, g:afloat * g:anint)
 
-  assert_equal(36.0, 6.0 * 6)
-  assert_equal(36.0, 6 * 6.0)
-  assert_equal(36.0, 6.0 * 6.0)
-  assert_equal(1.0, g:afloat * g:anint)
+    assert_equal(10.0, 60 / 6.0)
+    assert_equal(10.0, 60.0 / 6)
+    assert_equal(10.0, 60.0 / 6.0)
+    assert_equal(0.01, g:afloat / g:anint)
 
-  assert_equal(10.0, 60 / 6.0)
-  assert_equal(10.0, 60.0 / 6)
-  assert_equal(10.0, 60.0 / 6.0)
-  assert_equal(0.01, g:afloat / g:anint)
+    assert_equal(4.0, 6.0 * 4 / 6)
+    assert_equal(4.0, 6 * 4.0 / 6)
+    assert_equal(4.0, 6 * 4 / 6.0)
+    assert_equal(4.0, 6.0 * 4.0 / 6)
+    assert_equal(4.0, 6 * 4.0 / 6.0)
+    assert_equal(4.0, 6.0 * 4 / 6.0)
+    assert_equal(4.0, 6.0 * 4.0 / 6.0)
 
-  assert_equal(4.0, 6.0 * 4 / 6)
-  assert_equal(4.0, 6 * 4.0 / 6)
-  assert_equal(4.0, 6 * 4 / 6.0)
-  assert_equal(4.0, 6.0 * 4.0 / 6)
-  assert_equal(4.0, 6 * 4.0 / 6.0)
-  assert_equal(4.0, 6.0 * 4 / 6.0)
-  assert_equal(4.0, 6.0 * 4.0 / 6.0)
-
-  assert_equal(4.0, 6.0 * 4.0 / 6.0)
+    assert_equal(4.0, 6.0 * 4.0 / 6.0)
+  endif
 enddef
 
 func Test_expr6_fails()
@@ -581,7 +588,9 @@
 
 def Test_expr7_float()
   " float constant
-  if has('float')
+  if !has('float')
+    MissingFeature 'float'
+  else
     assert_equal(g:float_zero, .0)
     assert_equal(g:float_zero, 0.0)
     assert_equal(g:float_neg, -9.8)