Permalink
Browse files

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)
  • Loading branch information...
brammool committed Dec 7, 2017
1 parent 6e65d59 commit 3388d334572f9d65a603d09d75e363805d96c5d9
Showing with 13 additions and 2 deletions.
  1. +3 −0 src/testdir/sautest/autoload/sourced.vim
  2. +7 −1 src/testdir/test_autoload.vim
  3. +1 −1 src/userfunc.c
  4. +2 −0 src/version.c
@@ -0,0 +1,3 @@
let g:loaded_sourced_vim += 1
func! sourced#something()
endfunc
@@ -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
View
@@ -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)
{
View
@@ -771,6 +771,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1378,
/**/
1377,
/**/

0 comments on commit 3388d33

Please sign in to comment.