changeset 27851:86e8c92c3f65 v8.2.4451

patch 8.2.4451: sort() fails when ignoring case Commit: https://github.com/vim/vim/commit/9cd4c0fb98cb4fe6164e4e1751c21a5a5229b9cc Author: Bram Moolenaar <Bram@vim.org> Date: Tue Feb 22 22:53:10 2022 +0000 patch 8.2.4451: sort() fails when ignoring case Problem: sort() fails when ignoring case. Solution: Accept a number one argument in sort().
author Bram Moolenaar <Bram@vim.org>
date Wed, 23 Feb 2022 00:00:02 +0100
parents 7fab9ff1619b
children 8748614b84d1
files src/evalfunc.c src/testdir/test_listdict.vim src/version.c
diffstat 3 files changed, 4 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -603,6 +603,7 @@ arg_sort_how(type_T *type, type_T *decl_
 {
     if (type->tt_type == VAR_STRING
 	    || type->tt_type == VAR_PARTIAL
+	    || type->tt_type == VAR_NUMBER  // 1 means ignore case
 	    || type == &t_unknown
 	    || type == &t_any)
 	return OK;
--- a/src/testdir/test_listdict.vim
+++ b/src/testdir/test_listdict.vim
@@ -934,9 +934,6 @@ endfunc
 
 " Tests for reverse(), sort(), uniq()
 func Test_reverse_sort_uniq()
-  func g:RetOne()
-    return 1
-  endfunc
   let lines =<< trim END
       VAR l = ['-0', 'A11', 2, 2, 'xaaa', 4, 'foo', 'foo6', 'foo', [0, 1, 2], 'x8', [0, 1, 2], 1.5]
       call assert_equal(['-0', 'A11', 2, 'xaaa', 4, 'foo', 'foo6', 'foo', [0, 1, 2], 'x8', [0, 1, 2], 1.5], uniq(copy(l)))
@@ -952,13 +949,12 @@ func Test_reverse_sort_uniq()
         call assert_equal([-1, 'one', 'two', 'three', 'four', 1.0e-15, 0.22, 7, 9, 12, 18, 22, 255], sort(copy(l), 'n'))
 
         LET l = [7, 9, 18, 12, 22, 10.0e-16, -1, 0xff, 0, -0, 0.22, 'bar', 'BAR', 'Bar', 'Foo', 'FOO', 'foo', 'FOOBAR', {}, []]
-        call assert_equal(['bar', 'BAR', 'Bar', 'Foo', 'FOO', 'foo', 'FOOBAR', -1, 0, 0, 0.22, 1.0e-15, 12, 18, 22, 255, 7, 9, [], {}], sort(copy(l), g:RetOne()))
+        call assert_equal(['bar', 'BAR', 'Bar', 'Foo', 'FOO', 'foo', 'FOOBAR', -1, 0, 0, 0.22, 1.0e-15, 12, 18, 22, 255, 7, 9, [], {}], sort(copy(l), 1))
         call assert_equal(['bar', 'BAR', 'Bar', 'Foo', 'FOO', 'foo', 'FOOBAR', -1, 0, 0, 0.22, 1.0e-15, 12, 18, 22, 255, 7, 9, [], {}], sort(copy(l), 'i'))
         call assert_equal(['BAR', 'Bar', 'FOO', 'FOOBAR', 'Foo', 'bar', 'foo', -1, 0, 0, 0.22, 1.0e-15, 12, 18, 22, 255, 7, 9, [], {}], sort(copy(l)))
       endif
   END
   call v9.CheckLegacyAndVim9Success(lines)
-  delfunc g:RetOne
 
   call assert_fails('call reverse("")', 'E899:')
   call assert_fails('call uniq([1, 2], {x, y -> []})', 'E745:')
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    4451,
+/**/
     4450,
 /**/
     4449,