Mercurial > vim
changeset 27499:df414fc12eed v8.2.4277
patch 8.2.4277: Vim9: an import does not shadow a command modifier
Commit: https://github.com/vim/vim/commit/68854a82fdedebf6ee0675d1abeae6fc627ff6bb
Author: Bram Moolenaar <Bram@vim.org>
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.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 31 Jan 2022 20:00:06 +0100 |
parents | 12b8870b9181 |
children | 0fb94e0df02d |
files | src/ex_docmd.c src/testdir/test_vim9_import.vim src/version.c |
diffstat | 3 files changed, 14 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- 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
--- 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.