Skip to content

Commit fa63008

Browse files
yegappanchrisbra
authored andcommitted
patch 9.1.0165: Vim9: Importing an autoload imported script fails
Problem: Vim9: Importing an autoload imported script fails (Song-Tianxiang) Solution: Return the script ID in this case (Yegappan Lakshmanan) fixes: #14171 closes: #14174 Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
1 parent 26dd09a commit fa63008

3 files changed

Lines changed: 53 additions & 0 deletions

File tree

src/scriptfile.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1690,6 +1690,8 @@ do_source_ext(
16901690
// reset version, "vim9script" may have been added or removed.
16911691
si->sn_version = 1;
16921692
}
1693+
if (ret_sid != NULL)
1694+
*ret_sid = sid;
16931695
}
16941696
else
16951697
{

src/testdir/test_vim9_import.vim

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2929,5 +2929,54 @@ def Test_export_in_conditional_block()
29292929
v9.CheckScriptSuccess(lines)
29302930
enddef
29312931

2932+
" Import fails when an autoloaded script is imported again.
2933+
" Github issue #14171
2934+
def Test_import_autloaded_script()
2935+
mkdir('Ximporttwice', 'pR')
2936+
mkdir('Ximporttwice/plugin')
2937+
mkdir('Ximporttwice/autoload')
2938+
var save_rtp = &rtp
2939+
exe 'set rtp^=' .. getcwd() .. '/Ximporttwice'
2940+
2941+
var lines =<< trim END
2942+
vim9script
2943+
2944+
export def H(): number
2945+
return 10
2946+
enddef
2947+
END
2948+
writefile(lines, 'Ximporttwice/autoload/hello.vim')
2949+
2950+
lines =<< trim END
2951+
vim9script
2952+
2953+
import "./hello.vim"
2954+
export def W(): number
2955+
return 20
2956+
enddef
2957+
END
2958+
writefile(lines, 'Ximporttwice/autoload/world.vim')
2959+
2960+
lines =<< trim END
2961+
vim9script
2962+
2963+
import autoload '../autoload/hello.vim'
2964+
import autoload '../autoload/world.vim'
2965+
2966+
command Hello echo hello.H()
2967+
command World echo world.W()
2968+
END
2969+
writefile(lines, 'Ximporttwice/plugin/main.vim')
2970+
2971+
lines =<< trim END
2972+
vim9script
2973+
2974+
source ./Ximporttwice/plugin/main.vim
2975+
assert_equal(['20'], execute('World')->split("\n"))
2976+
END
2977+
v9.CheckScriptSuccess(lines)
2978+
2979+
&rtp = save_rtp
2980+
enddef
29322981

29332982
" vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker

src/version.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -704,6 +704,8 @@ static char *(features[]) =
704704

705705
static int included_patches[] =
706706
{ /* Add new patch number below this line */
707+
/**/
708+
165,
707709
/**/
708710
164,
709711
/**/

0 commit comments

Comments
 (0)