patch 9.0.0920: cannot find an import prefixed with "s:"
Problem: Cannot find an import prefixed with "s:". (Doug Kearns)
Solution: Skip over the "s:". (closes #11585)
diff --git a/src/testdir/test_vim9_import.vim b/src/testdir/test_vim9_import.vim
index dba91c3..97d1cff 100644
--- a/src/testdir/test_vim9_import.vim
+++ b/src/testdir/test_vim9_import.vim
@@ -2034,6 +2034,15 @@
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()
diff --git a/src/version.c b/src/version.c
index e09e397..3dbf2ef 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 920,
+/**/
919,
/**/
918,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index fb66a78..17066b0 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -656,12 +656,14 @@
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;