# HG changeset patch # User Bram Moolenaar # Date 1643655606 -3600 # Node ID df414fc12eede551a8c126f7b3dd15314174319e # Parent 12b8870b91810b4dd960e06f5f15084e0ce47657 patch 8.2.4277: Vim9: an import does not shadow a command modifier Commit: https://github.com/vim/vim/commit/68854a82fdedebf6ee0675d1abeae6fc627ff6bb Author: Bram Moolenaar Date: Mon Jan 31 18:59:13 2022 +0000 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 --- 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 --- 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 --- 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,