From: Bram Moolenaar Date: Tue, 14 Dec 2021 12:06:16 +0000 (+0000) Subject: patch 8.2.3807: Vim9: can call import with star directly X-Git-Tag: v8.2.3807 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f8a79fc3468645019532331bf8b36d1f7b403ef4;p=vim 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 b2673dcf2..abfde87f3 100644 --- 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 index 4b05e9cf1..9ab3b6daf 100644 --- 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 index 42fa492d7..5f2ede753 100644 --- 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 index 3098c59c6..08bfba17b 100644 --- a/src/version.c +++ b/src/version.c @@ -749,6 +749,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3807, /**/ 3806, /**/