]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 8.2.4451: sort() fails when ignoring case v8.2.4451
authorBram Moolenaar <Bram@vim.org>
Tue, 22 Feb 2022 22:53:10 +0000 (22:53 +0000)
committerBram Moolenaar <Bram@vim.org>
Tue, 22 Feb 2022 22:53:10 +0000 (22:53 +0000)
Problem:    sort() fails when ignoring case.
Solution:   Accept a number one argument in sort().

src/evalfunc.c
src/testdir/test_listdict.vim
src/version.c

index cea002f11ce5d54fa0f0de3d8d7b087a003bc79a..e02b757e95f159d5655dd6c807cb14a179d4d51d 100644 (file)
@@ -603,6 +603,7 @@ arg_sort_how(type_T *type, type_T *decl_type UNUSED, argcontext_T *context)
 {
     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;
index 889c571b00f9bfd3091c12a77d3e000b37a3310f..5337254fdb591bf201bad20309fe57b0b4b2a183 100644 (file)
@@ -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:')
index 5dfdaf4f03f8613e454e0d7720b3b250850881e4..6f91b848dc0160888f16c5dff094ed392f054db7 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    4451,
 /**/
     4450,
 /**/