0
0
mirror of https://github.com/vim/vim.git synced 2025-10-03 05:14:07 -04:00

patch 8.2.2861: Vim9: "legacy return" is not recognized as a return statement

Problem:    Vim9: "legacy return" is not recognized as a return statement.
Solution:   Specifically check for a return command. (closes #8213)
This commit is contained in:
Bram Moolenaar
2021-05-17 00:01:42 +02:00
parent 1764faa386
commit 3b1373b193
5 changed files with 95 additions and 7 deletions

View File

@@ -2777,6 +2777,10 @@ def Test_expr7_negate_add()
CheckDefAndScriptFailure(lines, 'E15:')
enddef
def LegacyReturn(): string
legacy return #{key: 'ok'}.key
enddef
def Test_expr7_legacy_script()
var lines =<< trim END
let s:legacy = 'legacy'
@@ -2790,6 +2794,17 @@ def Test_expr7_legacy_script()
call assert_equal('legacy', GetLocalPrefix())
END
CheckScriptSuccess(lines)
assert_equal('ok', LegacyReturn())
lines =<< trim END
vim9script
def GetNumber(): number
legacy return range(3)->map('v:val + 1')
enddef
echo GetNumber()
END
CheckScriptFailure(lines, 'E1012: Type mismatch; expected number but got list<number>')
enddef
def Echo(arg: any): string