From fd8ca21b3ff207e44891aef922935d4adcd140cf Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 10 Aug 2019 00:13:30 +0200 Subject: [PATCH] patch 8.1.1835: cannot use printf() as a method Problem: Cannot use printf() as a method. Solution: Pass the base as the second argument to printf(). --- runtime/doc/eval.txt | 6 +++++- src/evalfunc.c | 2 +- src/testdir/test_method.vim | 16 +++++++++------- src/version.c | 2 ++ 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 981121f8a..62bcfc287 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -6739,7 +6739,11 @@ printf({fmt}, {expr1} ...) *printf()* < May result in: " 99: E42 asdfasdfasdfasdfasdfasdfasdfas" ~ - Often used items are: + When used as a |method| the base is passed as the second + argument: > + Compute()->printf("result: %d") + +< Often used items are: %s string %6S string right-aligned in 6 display cells %6s string right-aligned in 6 bytes diff --git a/src/evalfunc.c b/src/evalfunc.c index 29857d318..7800aa9a7 100644 --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -733,7 +733,7 @@ static funcentry_T global_functions[] = {"pow", 2, 2, 0, f_pow}, #endif {"prevnonblank", 1, 1, 0, f_prevnonblank}, - {"printf", 1, 19, 0, f_printf}, + {"printf", 1, 19, FEARG_2, f_printf}, #ifdef FEAT_JOB_CHANNEL {"prompt_setcallback", 2, 2, 0, f_prompt_setcallback}, {"prompt_setinterrupt", 2, 2, 0, f_prompt_setinterrupt}, diff --git a/src/testdir/test_method.vim b/src/testdir/test_method.vim index 310b5f22c..98c07fe34 100644 --- a/src/testdir/test_method.vim +++ b/src/testdir/test_method.vim @@ -67,13 +67,15 @@ func Test_dict_method() endfunc func Test_string_method() - call assert_equal(['1', '2', '3'], '1 2 3'->split()) - call assert_equal([1, 2, 3], '1 2 3'->split()->map({i, v -> str2nr(v)})) - call assert_equal([65, 66, 67], 'ABC'->str2list()) - call assert_equal(3, 'ABC'->strlen()) - call assert_equal('a^Mb^[c', "a\rb\ec"->strtrans()) - call assert_equal(4, "aあb"->strwidth()) - call assert_equal('axc', 'abc'->substitute('b', 'x', '')) + eval '1 2 3'->split()->assert_equal(['1', '2', '3']) + eval '1 2 3'->split()->map({i, v -> str2nr(v)})->assert_equal([1, 2, 3]) + eval 'ABC'->str2list()->assert_equal([65, 66, 67]) + eval 'ABC'->strlen()->assert_equal(3) + eval "a\rb\ec"->strtrans()->assert_equal('a^Mb^[c') + eval "aあb"->strwidth()->assert_equal(4) + eval 'abc'->substitute('b', 'x', '')->assert_equal('axc') + + eval 'abc'->printf('the %s arg')->assert_equal('the abc arg') endfunc func Test_method_append() diff --git a/src/version.c b/src/version.c index 2d06c7773..f10ea0896 100644 --- a/src/version.c +++ b/src/version.c @@ -769,6 +769,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1835, /**/ 1834, /**/ -- 2.50.1