# HG changeset patch # User Bram Moolenaar # Date 1639484103 -3600 # Node ID dff04b7fa6b262b5d500863099c1deb795781d06 # Parent 2ea8b67ac42746b980789d1f5324de2480f5374f patch 8.2.3807: Vim9: can call import with star directly Commit: https://github.com/vim/vim/commit/f8a79fc3468645019532331bf8b36d1f7b403ef4 Author: Bram Moolenaar Date: Tue Dec 14 12:06:16 2021 +0000 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 --- a/src/eval.c +++ b/src/eval.c @@ -2001,7 +2001,7 @@ eval_func( // 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 --- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -1536,6 +1536,21 @@ def Test_import_star_fails() 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 --- a/src/userfunc.c +++ b/src/userfunc.c @@ -1596,7 +1596,16 @@ deref_func_name( *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 --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 3807, +/**/ 3806, /**/ 3805,