changeset 13004:41e46caf1030 v8.0.1378

patch 8.0.1378: autoload script sources itself when defining function commit https://github.com/vim/vim/commit/3388d334572f9d65a603d09d75e363805d96c5d9 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Dec 7 22:23:04 2017 +0100 patch 8.0.1378: autoload script sources itself when defining function Problem: Autoload script sources itself when defining function. Solution: Pass TFN_NO_AUTOLOAD to trans_function_name(). (Yasuhiro Matsumoto, closes #2423)
author Christian Brabandt <cb@256bit.org>
date Thu, 07 Dec 2017 22:30:06 +0100
parents aa448f6b6dc5
children 0bbb5611d14e
files src/testdir/sautest/autoload/sourced.vim src/testdir/test_autoload.vim src/userfunc.c src/version.c
diffstat 4 files changed, 13 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/src/testdir/sautest/autoload/sourced.vim
@@ -0,0 +1,3 @@
+let g:loaded_sourced_vim += 1
+func! sourced#something()
+endfunc
--- a/src/testdir/test_autoload.vim
+++ b/src/testdir/test_autoload.vim
@@ -2,10 +2,16 @@
 
 set runtimepath=./sautest
 
-func! Test_autoload_dict_func()
+func Test_autoload_dict_func()
   let g:loaded_foo_vim = 0
   let g:called_foo_bar_echo = 0
   call g:foo#bar.echo()
   call assert_equal(1, g:loaded_foo_vim)
   call assert_equal(1, g:called_foo_bar_echo)
 endfunc
+
+func Test_source_autoload()
+  let g:loaded_sourced_vim = 0
+  source sautest/autoload/sourced.vim
+  call assert_equal(1, g:loaded_sourced_vim)
+endfunc
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -1886,7 +1886,7 @@ ex_function(exarg_T *eap)
      * g:func	    global function name, same as "func"
      */
     p = eap->arg;
-    name = trans_function_name(&p, eap->skip, 0, &fudi, NULL);
+    name = trans_function_name(&p, eap->skip, TFN_NO_AUTOLOAD, &fudi, NULL);
     paren = (vim_strchr(p, '(') != NULL);
     if (name == NULL && (fudi.fd_dict == NULL || !paren) && !eap->skip)
     {
--- a/src/version.c
+++ b/src/version.c
@@ -772,6 +772,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1378,
+/**/
     1377,
 /**/
     1376,