changeset 19585:0303f920a7d4 v8.2.0349

patch 8.2.0349: Vim9: constant expression not well tested Commit: https://github.com/vim/vim/commit/6d69bf602b4ebdb195f02953a0b33c91ec08e599 Author: Bram Moolenaar <Bram@vim.org> Date: Tue Mar 3 19:02:12 2020 +0100 patch 8.2.0349: Vim9: constant expression not well tested Problem: Vim9: constant expression not well tested. Solution: Add tests for "if" with constant expression.
author Bram Moolenaar <Bram@vim.org>
date Tue, 03 Mar 2020 19:15:04 +0100
parents 3aaaa407d308
children 62ca09fadc5e
files src/testdir/test_vim9_script.vim src/version.c
diffstat 2 files changed, 104 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -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
--- a/src/version.c
+++ b/src/version.c
@@ -739,6 +739,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    349,
+/**/
     348,
 /**/
     347,