summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-01-31 18:59:13 +0000
committerBram Moolenaar <Bram@vim.org>2022-01-31 18:59:13 +0000
commit68854a82fdedebf6ee0675d1abeae6fc627ff6bb (patch)
tree196b1e3c0184fc012e9a8cc7989932c56cabd99c
parent9e0208f51cf1354ce0a7d3988133041a78681605 (diff)
patch 8.2.4277: Vim9: an import does not shadow a command modifierv8.2.4277
Problem: Vim9: an import does not shadow a command modifier. Solution: Do not accept a command modifier followed by a dot.
-rw-r--r--src/ex_docmd.c8
-rw-r--r--src/testdir/test_vim9_import.vim9
-rw-r--r--src/version.c2
3 files changed, 14 insertions, 5 deletions
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index c55b34ddb6..64dcd7e2bf 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -2709,7 +2709,7 @@ ex_range_without_command(exarg_T *eap)
/*
* 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 @@ checkforcmd_opt(
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 @@ checkforcmd(
}
/*
- * 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 f37ff8b75d..be453c654e 100644
--- a/src/testdir/test_vim9_import.vim
+++ b/src/testdir/test_vim9_import.vim
@@ -142,6 +142,14 @@ def Test_vim9_import_export()
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 @@ def Test_vim9_import_export()
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 301f54421b..0dc936ab3f 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 4277,
+/**/
4276,
/**/
4275,