vim-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 vim/vim#2423)
3388d33457
This commit is contained in:
Jan Edmund Lazo
2018-09-09 20:28:07 -04:00
parent 3fd9ffd368
commit 39ab7cc6fb
3 changed files with 11 additions and 2 deletions

View File

@@ -19820,7 +19820,7 @@ void ex_function(exarg_T *eap)
// s:func script-local function name // s:func script-local function name
// g:func global function name, same as "func" // g:func global function name, same as "func"
p = eap->arg; 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); paren = (vim_strchr(p, '(') != NULL);
if (name == NULL && (fudi.fd_dict == NULL || !paren) && !eap->skip) { if (name == NULL && (fudi.fd_dict == NULL || !paren) && !eap->skip) {
/* /*

View File

@@ -0,0 +1,3 @@
let g:loaded_sourced_vim += 1
func! sourced#something()
endfunc

View File

@@ -2,10 +2,16 @@
set runtimepath=./sautest set runtimepath=./sautest
func! Test_autoload_dict_func() func Test_autoload_dict_func()
let g:loaded_foo_vim = 0 let g:loaded_foo_vim = 0
let g:called_foo_bar_echo = 0 let g:called_foo_bar_echo = 0
call g:foo#bar.echo() call g:foo#bar.echo()
call assert_equal(1, g:loaded_foo_vim) call assert_equal(1, g:loaded_foo_vim)
call assert_equal(1, g:called_foo_bar_echo) call assert_equal(1, g:called_foo_bar_echo)
endfunc 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