Patch 8.2.1263
Problem:    Vim9: comperators use 'ignorecase' in Vim9 script.
Solution:   Ignore 'ignorecase'.  Use true and false instead of 1 and 0.
            (closes #6497)
Files:      src/eval.c, src/typval.c, src/vim9execute.c,
            src/testdir/test_vim9_expr.vim


*** ../vim-8.2.1262/src/eval.c  2020-07-19 14:41:54.625623029 +0200
--- src/eval.c  2020-07-21 21:23:26.689658519 +0200
***************
*** 2413,2425 ****
      static int
  eval4(char_u **arg, typval_T *rettv, evalarg_T *evalarg)
  {
-     typval_T  var2;
      char_u    *p;
      int               getnext;
      int               i;
      exptype_T type = EXPR_UNKNOWN;
      int               len = 2;
-     int               ic;
  
      /*
       * Get the first variable.
--- 2413,2423 ----
***************
*** 2472,2477 ****
--- 2470,2479 ----
       */
      if (type != EXPR_UNKNOWN)
      {
+       typval_T    var2;
+       int         ic;
+       int         vim9script = in_vim9script();
+ 
        if (getnext)
            *arg = eval_next_line(evalarg);
  
***************
*** 2487,2495 ****
            ic = FALSE;
            ++len;
        }
!       // nothing appended: use 'ignorecase'
        else
!           ic = p_ic;
  
        /*
         * Get the second variable.
--- 2489,2497 ----
            ic = FALSE;
            ++len;
        }
!       // nothing appended: use 'ignorecase' if not in Vim script
        else
!           ic = vim9script ? FALSE : p_ic;
  
        /*
         * Get the second variable.
***************
*** 2504,2511 ****
        {
            int ret;
  
!           if (in_vim9script() && check_compare_types(
!                                                  type, rettv, &var2) == FAIL)
            {
                ret = FAIL;
                clear_tv(rettv);
--- 2506,2512 ----
        {
            int ret;
  
!           if (vim9script && check_compare_types(type, rettv, &var2) == FAIL)
            {
                ret = FAIL;
                clear_tv(rettv);
*** ../vim-8.2.1262/src/typval.c        2020-07-01 18:29:23.681143435 +0200
--- src/typval.c        2020-07-21 21:26:10.204808451 +0200
***************
*** 790,797 ****
        }
      }
      clear_tv(typ1);
!     typ1->v_type = VAR_NUMBER;
!     typ1->vval.v_number = n1;
  
      return OK;
  }
--- 790,805 ----
        }
      }
      clear_tv(typ1);
!     if (in_vim9script())
!     {
!       typ1->v_type = VAR_BOOL;
!       typ1->vval.v_number = n1 ? VVAL_TRUE : VVAL_FALSE;
!     }
!     else
!     {
!       typ1->v_type = VAR_NUMBER;
!       typ1->vval.v_number = n1;
!     }
  
      return OK;
  }
*** ../vim-8.2.1262/src/vim9execute.c   2020-07-21 20:55:46.873920166 +0200
--- src/vim9execute.c   2020-07-21 21:26:57.984579063 +0200
***************
*** 2017,2025 ****
  
                    typval_compare(tv1, tv2, exptype, ic);
                    clear_tv(tv2);
-                   tv1->v_type = VAR_BOOL;
-                   tv1->vval.v_number = tv1->vval.v_number
-                                                     ? VVAL_TRUE : VVAL_FALSE;
                    --ectx.ec_stack.ga_len;
                }
                break;
--- 2017,2022 ----
*** ../vim-8.2.1262/src/testdir/test_vim9_expr.vim      2020-07-21 
20:55:46.873920166 +0200
--- src/testdir/test_vim9_expr.vim      2020-07-21 21:29:45.367828568 +0200
***************
*** 651,657 ****
        vim9script
        let var = 0
                        < 1
!       assert_equal(1, var)
    END
    CheckScriptSuccess(lines)
  
--- 651,657 ----
        vim9script
        let var = 0
                        < 1
!       assert_equal(true, var)
    END
    CheckScriptSuccess(lines)
  
***************
*** 659,665 ****
        vim9script
        let var = 123
                        != 123
!       assert_equal(0, var)
    END
    CheckScriptSuccess(lines)
  
--- 659,665 ----
        vim9script
        let var = 123
                        != 123
!       assert_equal(false, var)
    END
    CheckScriptSuccess(lines)
  
***************
*** 667,673 ****
        vim9script
        let var = 123 ==
                                123
!       assert_equal(1, var)
    END
    CheckScriptSuccess(lines)
  
--- 667,673 ----
        vim9script
        let var = 123 ==
                                123
!       assert_equal(true, var)
    END
    CheckScriptSuccess(lines)
  
***************
*** 676,682 ****
        let list = [1, 2, 3]
        let var = list
                        is list
!       assert_equal(1, var)
    END
    CheckScriptSuccess(lines)
  
--- 676,682 ----
        let list = [1, 2, 3]
        let var = list
                        is list
!       assert_equal(true, var)
    END
    CheckScriptSuccess(lines)
  
***************
*** 685,691 ****
        let myblob = 0z1234
        let var = myblob
                        isnot 0z11
!       assert_equal(1, var)
    END
    CheckScriptSuccess(lines)
  
--- 685,691 ----
        let myblob = 0z1234
        let var = myblob
                        isnot 0z11
!       assert_equal(true, var)
    END
    CheckScriptSuccess(lines)
  
***************
*** 707,712 ****
--- 707,731 ----
        echo 123 is 123
    END
    CheckScriptFailure(lines, 'Cannot use "is" with number')
+ 
+   # check 'ignorecase' not being used
+   lines =<< trim END
+     vim9script
+     set ignorecase
+     assert_equal(false, 'abc' == 'ABC')
+     assert_equal(false, 'abc' ==# 'ABC')
+     assert_equal(true, 'abc' ==? 'ABC')
+ 
+     assert_equal(true, 'abc' != 'ABC')
+     assert_equal(true, 'abc' !=# 'ABC')
+     assert_equal(false, 'abc' !=? 'ABC')
+ 
+     assert_equal(false, 'abc' =~ 'ABC')
+     assert_equal(false, 'abc' =~# 'ABC')
+     assert_equal(true, 'abc' =~? 'ABC')
+     set noignorecase
+   END
+   CheckScriptSuccess(lines)
  enddef
  
  func Test_expr4_fails()
*** ../vim-8.2.1262/src/version.c       2020-07-21 21:07:00.720496743 +0200
--- src/version.c       2020-07-21 21:20:57.314330482 +0200
***************
*** 756,757 ****
--- 756,759 ----
  {   /* Add new patch number below this line */
+ /**/
+     1263,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
54. You start tilting your head sideways to smile. :-)

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/202007211931.06LJVRIM819801%40masaka.moolenaar.net.

Raspunde prin e-mail lui