]> granicus.if.org Git - vim/commitdiff
patch 8.2.0349: Vim9: constant expression not well tested v8.2.0349
authorBram Moolenaar <Bram@vim.org>
Tue, 3 Mar 2020 18:02:12 +0000 (19:02 +0100)
committerBram Moolenaar <Bram@vim.org>
Tue, 3 Mar 2020 18:02:12 +0000 (19:02 +0100)
Problem:    Vim9: constant expression not well tested.
Solution:   Add tests for "if" with constant expression.

src/testdir/test_vim9_script.vim
src/version.c

index a8950f07295b00efdd35cdada058314fc9b823a0..90bd4ebfe51091c929885353da40bb1967dcd022 100644 (file)
@@ -732,6 +732,108 @@ def Test_if_elseif_else()
   assert_equal('three', IfElse(3))
 enddef
 
+let g:bool_true = v:true
+let g:bool_false = v:false
+
+def Test_if_const_expr()
+  let res = false
+  if true ? true : false
+    res = true
+  endif
+  assert_equal(true, res)
+
+  res = false
+  if g:bool_true ? true : false
+    res = true
+  endif
+  assert_equal(true, res)
+
+  res = false
+  if true ? g:bool_true : false
+    res = true
+  endif
+  assert_equal(true, res)
+
+  res = false
+  if true ? true : g:bool_false
+    res = true
+  endif
+  assert_equal(true, res)
+
+  res = false
+  if true ? false : true
+    res = true
+  endif
+  assert_equal(false, res)
+
+  res = false
+  if false ? false : true
+    res = true
+  endif
+  assert_equal(true, res)
+
+  res = false
+  if false ? true : false
+    res = true
+  endif
+  assert_equal(false, res)
+
+  res = false
+  if true && true
+    res = true
+  endif
+  assert_equal(true, res)
+
+  res = false
+  if true && false
+    res = true
+  endif
+  assert_equal(false, res)
+
+  res = false
+  if g:bool_true && false
+    res = true
+  endif
+  assert_equal(false, res)
+
+  res = false
+  if true && g:bool_false
+    res = true
+  endif
+  assert_equal(false, res)
+
+  res = false
+  if false && false
+    res = true
+  endif
+  assert_equal(false, res)
+
+  res = false
+  if true || false
+    res = true
+  endif
+  assert_equal(true, res)
+
+  res = false
+  if g:bool_true || false
+    res = true
+  endif
+  assert_equal(true, res)
+
+  res = false
+  if true || g:bool_false
+    res = true
+  endif
+  assert_equal(true, res)
+
+  res = false
+  if false || false
+    res = true
+  endif
+  assert_equal(false, res)
+
+enddef
+
 def Test_delfunc()
   let lines =<< trim END
     vim9script
index d595d173e77d6c34bffba06e82e84422c1c4d101..9c5fca8b2f0ba3bd3b26540ba759d2efc5a0200b 100644 (file)
@@ -738,6 +738,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    349,
 /**/
     348,
 /**/