1
0
forked from aniani/vim

patch 9.0.1081: using "->" with split lines does not always work

Problem:    Using "->" with split lines does not always work.
Solution:   Avoid trying to get another line. (closes #11723)
This commit is contained in:
Bram Moolenaar
2022-12-19 20:28:38 +00:00
parent afa3f1cc72
commit 34820944ed
3 changed files with 70 additions and 3 deletions

View File

@@ -179,6 +179,60 @@ func Test_user_method()
eval 'bar'->s:addFoo()->assert_equal('barfoo')
endfunc
func Test_method_with_linebreaks()
let lines =<< trim END
vim9script
export def Scan(ll: list<number>): func(func(number))
return (Emit: func(number)) => {
for v in ll
Emit(v)
endfor
}
enddef
export def Build(Cont: func(func(number))): list<number>
var result: list<number> = []
Cont((v) => {
add(result, v)
})
return result
enddef
export def Noop(Cont: func(func(number))): func(func(number))
return (Emit: func(number)) => {
Cont(Emit)
}
enddef
END
call writefile(lines, 'Xlib.vim', 'D')
let lines =<< trim END
vim9script
import "./Xlib.vim" as lib
const x = [1, 2, 3]
var result = lib.Scan(x)->lib.Noop()->lib.Build()
assert_equal([1, 2, 3], result)
result = lib.Scan(x)->lib.Noop()
->lib.Build()
assert_equal([1, 2, 3], result)
result = lib.Scan(x)
->lib.Noop()->lib.Build()
assert_equal([1, 2, 3], result)
result = lib.Scan(x)
->lib.Noop()
->lib.Build()
assert_equal([1, 2, 3], result)
END
call v9.CheckScriptSuccess(lines)
endfunc
func Test_failed_call_in_try()
try | call UnknownFunc() | catch | endtry
endfunc