1
0
forked from aniani/vim

patch 8.1.1816: cannot use a user defined function as a method

Problem:    Cannot use a user defined function as a method.
Solution:   Pass the base as the first argument to the user defined function
            after "->". (partly by FUJIWARA Takuya)
This commit is contained in:
Bram Moolenaar
2019-08-04 23:04:39 +02:00
parent 7a4ea1df2f
commit fcfe1a9b89
6 changed files with 45 additions and 10 deletions

View File

@@ -47,7 +47,7 @@ func FuncWithRef(a)
endfunc
func Test_user_func()
let g:FuncRef=function("FuncWithRef")
let g:FuncRef = function("FuncWithRef")
let g:counter = 0
inoremap <expr> ( ListItem()
inoremap <expr> [ ListReset()
@@ -62,6 +62,14 @@ func Test_user_func()
call assert_equal(9, g:retval)
call assert_equal(333, g:FuncRef(333))
let g:retval = "nop"
call assert_equal('xxx4asdf', "xxx"->Table(4, "asdf"))
call assert_equal('fail', 45->Compute(0, "retval"))
call assert_equal('nop', g:retval)
call assert_equal('ok', 45->Compute(5, "retval"))
call assert_equal(9, g:retval)
" call assert_equal(333, 333->g:FuncRef())
enew
normal oXX+-XX
@@ -144,3 +152,11 @@ func Test_default_arg()
\ .. " endfunction",
\ execute('func Args2'))
endfunc
func s:addFoo(lead)
return a:lead .. 'foo'
endfunc
func Test_user_method()
eval 'bar'->s:addFoo()->assert_equal('barfoo')
endfunc