patch 8.2.3807: Vim9: can call import with star directly
Problem: Vim9: can call import with star directly.
Solution: Check that the import used star.
diff --git a/src/eval.c b/src/eval.c
index b2673dc..abfde87 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -2001,7 +2001,7 @@
// Need to make a copy, in case evaluating the arguments makes
// the name invalid.
s = vim_strsave(s);
- if (s == NULL || (flags & EVAL_CONSTANT))
+ if (s == NULL || *s == NUL || (flags & EVAL_CONSTANT))
ret = FAIL;
else
{
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index 4b05e9c..9ab3b6d 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -1536,6 +1536,21 @@
CheckScriptFailure(lines, 'E1047:')
delete('Xfoo.vim')
+
+ lines =<< trim END
+ vim9script
+ def TheFunc()
+ echo 'the func'
+ enddef
+ export var Ref = TheFunc
+ END
+ writefile([], 'Xthat.vim')
+ lines =<< trim END
+ import * as That from './Xthat.vim'
+ That()
+ END
+ CheckDefAndScriptFailure2(lines, 'E1094:', 'E1236: Cannot use That itself')
+ delete('Xthat.vim')
enddef
def Test_import_as()
diff --git a/src/userfunc.c b/src/userfunc.c
index 42fa492..5f2ede7 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -1596,7 +1596,16 @@
*lenp = (int)STRLEN(s);
return s;
}
- // TODO: what if (import->imp_flags & IMP_FLAGS_STAR)
+ if (import->imp_flags & IMP_FLAGS_STAR)
+ {
+ name[len] = NUL;
+ semsg(_(e_cannot_use_str_itself_it_is_imported_with_star),
+ name);
+ name[len] = cc;
+ *lenp = 0;
+ return (char_u *)""; // just in case
+ }
+ else
{
scriptitem_T *si = SCRIPT_ITEM(import->imp_sid);
svar_T *sv = ((svar_T *)si->sn_var_vals.ga_data)
diff --git a/src/version.c b/src/version.c
index 3098c59..08bfba1 100644
--- a/src/version.c
+++ b/src/version.c
@@ -750,6 +750,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 3807,
+/**/
3806,
/**/
3805,