Problem: Vim9: function expanded name is cleared when sourcing a script
again.
Solution: Only clear the expanded name when deleting the function.
(closes #6707)
delete('Ximport.vim')
enddef
+def Test_func_redefine_error()
+ let lines = [
+ 'vim9script',
+ 'def Func()',
+ ' eval [][0]',
+ 'enddef',
+ 'Func()',
+ ]
+ writefile(lines, 'Xtestscript.vim')
+
+ for count in range(3)
+ try
+ source Xtestscript.vim
+ catch /E684/
+ # function name should contain <SNR> every time
+ assert_match('E684: list index out of range', v:exception)
+ assert_match('function <SNR>\d\+_Func, line 1', v:throwpoint)
+ endtry
+ endfor
+
+ delete('Xtestscript.vim')
+enddef
+
def Test_func_overrules_import_fails()
let export_lines =<< trim END
vim9script
ga_clear_strings(&(fp->uf_args));
ga_clear_strings(&(fp->uf_def_args));
ga_clear_strings(&(fp->uf_lines));
- VIM_CLEAR(fp->uf_name_exp);
VIM_CLEAR(fp->uf_arg_types);
VIM_CLEAR(fp->uf_def_arg_idx);
VIM_CLEAR(fp->uf_va_name);
func_remove(fp);
if ((fp->uf_flags & FC_DEAD) == 0 || force)
+ {
+ VIM_CLEAR(fp->uf_name_exp);
vim_free(fp);
+ }
}
/*
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 1445,
/**/
1444,
/**/