changeset 19443:6b1a59e71f85 v8.2.0279

patch 8.2.0279: Vim9: no test for deleted :def function Commit: https://github.com/vim/vim/commit/63ce4849efa54d3980446ad337d0e1248ec86182 Author: Bram Moolenaar <Bram@vim.org> Date: Wed Feb 19 15:46:48 2020 +0100 patch 8.2.0279: Vim9: no test for deleted :def function Problem: Vim9: no test for deleted :def function. Solution: Add a test. Clear uf_cleared flag when redefining a function.
author Bram Moolenaar <Bram@vim.org>
date Wed, 19 Feb 2020 16:00:04 +0100
parents 0eebb086cb2c
children a94d27943c93
files src/testdir/test_vim9_script.vim src/userfunc.c src/version.c
diffstat 3 files changed, 24 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -477,5 +477,26 @@ def Test_if_elseif_else()
   assert_equal('three', IfElse(3))
 enddef
 
+def Test_delfunc()
+  let lines =<< trim END
+    vim9script
+    def GoneSoon()
+      echo 'hello'
+    enddef
+
+    def CallGoneSoon()
+      GoneSoon()
+    enddef
+
+    delfunc GoneSoon
+    CallGoneSoon()
+  END
+  writefile(lines, 'XToDelFunc')
+  assert_fails('so XToDelFunc', 'E933')
+  assert_fails('so XToDelFunc', 'E933')
+
+  delete('XToDelFunc')
+enddef
+
 
 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -3053,6 +3053,7 @@ ex_function(exarg_T *eap)
 	flags |= FC_SANDBOX;
     fp->uf_flags = flags;
     fp->uf_calls = 0;
+    fp->uf_cleared = FALSE;
     fp->uf_script_ctx = current_sctx;
     fp->uf_script_ctx.sc_lnum += sourcing_lnum_top;
     if (is_export)
--- a/src/version.c
+++ b/src/version.c
@@ -739,6 +739,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    279,
+/**/
     278,
 /**/
     277,