forked from aniani/vim
patch 8.2.2948: substitute() accepts a number but not a float expression
Problem: Substitute() accepts a number but not a float expression. Solution: Also accept a float. (closes #8331)
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
" Tests for multi-line regexps with ":s".
|
||||
|
||||
source shared.vim
|
||||
source check.vim
|
||||
|
||||
func Test_multiline_subst()
|
||||
enew!
|
||||
@@ -453,6 +454,13 @@ func Test_substitute_partial()
|
||||
call assert_fails("call substitute('123', '2', Replacer, 'g')", 'E118:')
|
||||
endfunc
|
||||
|
||||
func Test_substitute_float()
|
||||
CheckFeature float
|
||||
|
||||
call assert_equal('number 1.23', substitute('number ', '$', { -> 1.23 }, ''))
|
||||
vim9 assert_equal('number 1.23', substitute('number ', '$', () => 1.23, ''))
|
||||
endfunc
|
||||
|
||||
" Tests for *sub-replace-special* and *sub-replace-expression* on :substitute.
|
||||
|
||||
" Execute a list of :substitute command tests
|
||||
|
@@ -462,8 +462,13 @@ tv_get_string_buf_chk_strict(typval_T *varp, char_u *buf, int strict)
|
||||
break;
|
||||
case VAR_FLOAT:
|
||||
#ifdef FEAT_FLOAT
|
||||
if (strict)
|
||||
{
|
||||
emsg(_(e_float_as_string));
|
||||
break;
|
||||
}
|
||||
vim_snprintf((char *)buf, NUMBUFLEN, "%g", varp->vval.v_float);
|
||||
return buf;
|
||||
#endif
|
||||
case VAR_STRING:
|
||||
if (varp->vval.v_string != NULL)
|
||||
|
@@ -750,6 +750,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
2948,
|
||||
/**/
|
||||
2947,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user