Skip to content

Commit

Permalink
patch 8.2.4277: Vim9: an import does not shadow a command modifier
Browse files Browse the repository at this point in the history
Problem:    Vim9: an import does not shadow a command modifier.
Solution:   Do not accept a command modifier followed by a dot.
  • Loading branch information
brammool committed Jan 31, 2022
1 parent 9e0208f commit 68854a8
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 5 deletions.
8 changes: 4 additions & 4 deletions src/ex_docmd.c
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand All @@ -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;
Expand All @@ -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
Expand Down
9 changes: 8 additions & 1 deletion src/testdir/test_vim9_import.vim
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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.
Expand Down
2 changes: 2 additions & 0 deletions src/version.c
Original file line number Diff line number Diff line change
Expand Up @@ -746,6 +746,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
4277,
/**/
4276,
/**/
Expand Down

0 comments on commit 68854a8

Please sign in to comment.