1
0
forked from aniani/vim

patch 8.2.2742: Vim9: when compiling a function fails it is cleared

Problem:    Vim9: when compiling a function fails it is cleared.
Solution:   Keep the function lines, prevent execution with a different
            status. (closes #8093)
This commit is contained in:
Bram Moolenaar
2021-04-10 13:33:48 +02:00
parent 1088b69451
commit 701cc6ca9e
5 changed files with 34 additions and 13 deletions

View File

@@ -1498,7 +1498,7 @@ def Test_redef_failure()
so Xdef
delete('Xdef')
g:Func0()->assert_equal(0)
assert_fails('g:Func0()', 'E1091:')
g:Func1()->assert_equal('Func1')
g:Func2()->assert_equal('Func2')
@@ -2591,6 +2591,20 @@ def Test_check_func_arg_types()
CheckScriptFailure(lines + ['echo H(G(F2))'], 'E1013:')
enddef
def Test_compile_error()
var lines =<< trim END
def g:Broken()
echo 'a' + {}
enddef
call g:Broken()
END
# First call: compilation error
CheckScriptFailure(lines, 'E1051: Wrong argument type for +')
# Second call won't try compiling again
assert_fails('call g:Broken()', 'E1091: Function is not compiled: Broken')
enddef
" vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker