Skip to content

Commit

Permalink
patch 9.0.0920: cannot find an import prefixed with "s:"
Browse files Browse the repository at this point in the history
Problem:    Cannot find an import prefixed with "s:". (Doug Kearns)
Solution:   Skip over the "s:". (closes #11585)
  • Loading branch information
brammool committed Nov 22, 2022
1 parent 9c5b7cb commit b775e72
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 3 deletions.
9 changes: 9 additions & 0 deletions src/testdir/test_vim9_import.vim
Original file line number Diff line number Diff line change
Expand Up @@ -2034,6 +2034,15 @@ def Test_source_vim9_from_legacy()
source Xlegacy_script.vim
assert_equal('global', g:global)
unlet g:global

legacy_lines =<< trim END
import './Xvim9_script.vim'
let g:global = s:Xvim9_script.GetText()
END
writefile(legacy_lines, 'Xlegacyimport.vim', 'D')
source Xlegacyimport.vim
assert_equal('text', g:global)
unlet g:global
enddef

def Test_import_vim9_from_legacy()
Expand Down
2 changes: 2 additions & 0 deletions src/version.c
Original file line number Diff line number Diff line change
Expand Up @@ -695,6 +695,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
920,
/**/
919,
/**/
Expand Down
8 changes: 5 additions & 3 deletions src/vim9compile.c
Original file line number Diff line number Diff line change
Expand Up @@ -656,12 +656,14 @@ find_imported_in_script(char_u *name, size_t len, int sid)
imported_T *
find_imported(char_u *name, size_t len, int load)
{
imported_T *ret;

if (!SCRIPT_ID_VALID(current_sctx.sc_sid))
return NULL;

ret = find_imported_in_script(name, len, current_sctx.sc_sid);
// Skip over "s:" before "s:something" to find the import name.
int off = name[0] == 's' && name[1] == ':' ? 2 : 0;

imported_T *ret = find_imported_in_script(name + off, len - off,
current_sctx.sc_sid);
if (ret != NULL && load && (ret->imp_flags & IMP_FLAGS_AUTOLOAD))
{
scid_T actual_sid = 0;
Expand Down

0 comments on commit b775e72

Please sign in to comment.