patch 8.2.4277: Vim9: an import does not shadow a command modifier
Problem: Vim9: an import does not shadow a command modifier.
Solution: Do not accept a command modifier followed by a dot.
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index c55b34d..64dcd7e 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -2709,7 +2709,7 @@
/*
* Check for an Ex command with optional tail.
* If there is a match advance "pp" to the argument and return TRUE.
- * If "noparen" is TRUE do not recognize the command followed by "(".
+ * If "noparen" is TRUE do not recognize the command followed by "(" or ".".
*/
static int
checkforcmd_opt(
@@ -2723,8 +2723,8 @@
for (i = 0; cmd[i] != NUL; ++i)
if (((char_u *)cmd)[i] != (*pp)[i])
break;
- if (i >= len && !isalpha((*pp)[i])
- && (*pp)[i] != '_' && (!noparen || (*pp)[i] != '('))
+ if (i >= len && !isalpha((*pp)[i]) && (*pp)[i] != '_'
+ && (!noparen || ((*pp)[i] != '(' && (*pp)[i] != '.')))
{
*pp = skipwhite(*pp + i);
return TRUE;
@@ -2746,7 +2746,7 @@
}
/*
- * Check for an Ex command with optional tail, not followed by "(".
+ * Check for an Ex command with optional tail, not followed by "(" or ".".
* If there is a match advance "pp" to the argument and return TRUE.
*/
int
diff --git a/src/testdir/test_vim9_import.vim b/src/testdir/test_vim9_import.vim
index f37ff8b..be453c6 100644
--- a/src/testdir/test_vim9_import.vim
+++ b/src/testdir/test_vim9_import.vim
@@ -142,6 +142,14 @@
unlet g:imported_func
delete('Ximport_lbr.vim')
+ var import_shadows_cmdmod_lines =<< trim END
+ vim9script
+ import './Xexport.vim' as vim9
+ vim9.exp_name = 'Shadow'
+ assert_equal('Shadow', vim9.exp_name)
+ END
+ v9.CheckScriptSuccess(import_shadows_cmdmod_lines)
+
var line_break_before_dot =<< trim END
vim9script
import './Xexport.vim' as expo
@@ -365,7 +373,6 @@
assert_fails('source Ximport.vim', 'E46: Cannot change read-only variable "CONST"', '', 3)
delete('Ximport.vim')
- delete('Ximport3.vim')
delete('Xexport.vim')
# Check that in a Vim9 script 'cpo' is set to the Vim default.
diff --git a/src/version.c b/src/version.c
index 301f544..0dc936a 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 4277,
+/**/
4276,
/**/
4275,