]> granicus.if.org Git - vim/commitdiff
patch 8.0.1378: autoload script sources itself when defining function v8.0.1378
authorBram Moolenaar <Bram@vim.org>
Thu, 7 Dec 2017 21:23:04 +0000 (22:23 +0100)
committerBram Moolenaar <Bram@vim.org>
Thu, 7 Dec 2017 21:23:04 +0000 (22:23 +0100)
Problem:    Autoload script sources itself when defining function.
Solution:   Pass TFN_NO_AUTOLOAD to trans_function_name(). (Yasuhiro
            Matsumoto, closes #2423)

src/testdir/sautest/autoload/sourced.vim [new file with mode: 0644]
src/testdir/test_autoload.vim
src/userfunc.c
src/version.c

diff --git a/src/testdir/sautest/autoload/sourced.vim b/src/testdir/sautest/autoload/sourced.vim
new file mode 100644 (file)
index 0000000..f69f00c
--- /dev/null
@@ -0,0 +1,3 @@
+let g:loaded_sourced_vim += 1
+func! sourced#something()
+endfunc
index a92851f6551692f266e4983c56ec8b19ee8eae1a..7396c227c96a0a6e37544a863d2955f4224a06d7 100644 (file)
@@ -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
index 9b605544062c32399691e153bd952b02baef8bb0..580df0bf834fb6dc46c3ad730a146695211c9ede 100644 (file)
@@ -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)
     {
index 7fe7e8f2c5878cb54d3f6cb2ca8b267cf90cb7d5..70340e045f452d2fe84afbf62c40280e4de6877d 100644 (file)
@@ -771,6 +771,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1378,
 /**/
     1377,
 /**/