0
0
mirror of https://github.com/vim/vim.git synced 2025-10-02 05:04:20 -04:00

patch 7.4.2220

Problem:    printf() gives an error when the argument for %s is not a string.
            (Ozaki Kiichi)
Solution:   Behave like invoking string() on the argument. (Ken Takata)
This commit is contained in:
Bram Moolenaar
2016-08-16 21:30:54 +02:00
parent f5a39447a8
commit e5a8f35b42
3 changed files with 50 additions and 7 deletions

View File

@@ -136,6 +136,33 @@ function Test_printf_64bit()
endif
endfunc
function Test_printf_spec_s()
" number
call assert_equal("1234567890", printf('%s', 1234567890))
" string
call assert_equal("abcdefgi", printf('%s', "abcdefgi"))
" float
if has('float')
call assert_equal("1.23", printf('%s', 1.23))
endif
" list
let value = [1, 'two', ['three', 4]]
call assert_equal(string(value), printf('%s', value))
" dict
let value = {'key1' : 'value1', 'key2' : ['list', 'value'], 'key3' : {'dict' : 'value'}}
call assert_equal(string(value), printf('%s', value))
" funcref
call assert_equal('printf', printf('%s', function('printf')))
" partial
call assert_equal(string(function('printf', ['%s'])), printf('%s', function('printf', ['%s'])))
endfunc
func Test_substitute_expr()
let g:val = 'XXX'
call assert_equal('XXX', substitute('yyy', 'y*', '\=g:val', ''))