diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-01-21 20:37:05 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-01-21 20:37:05 +0000 |
commit | 19e69a63302f7f8972cee723bf0f3fc176825583 (patch) | |
tree | 8949aec7d7121ab4543c97cb756bb99e5695b085 | |
parent | e70dd11ef41f69bd5e94f630194e6b3c4f3f2102 (diff) | |
download | vim-git-19e69a63302f7f8972cee723bf0f3fc176825583.tar.gz |
patch 8.2.4174: Vim9: can use an autoload name in normal scriptv8.2.4174
Problem: Vim9: can use an autoload name in normal script.
Solution: Disallow using an autoload name.
-rw-r--r-- | src/errors.h | 3 | ||||
-rw-r--r-- | src/testdir/test_vim9_import.vim | 12 | ||||
-rw-r--r-- | src/userfunc.c | 6 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 22 insertions, 1 deletions
diff --git a/src/errors.h b/src/errors.h index 3fd265f43..e632d5b24 100644 --- a/src/errors.h +++ b/src/errors.h @@ -3209,7 +3209,8 @@ EXTERN char e_cannot_import_dot_vim_without_using_as[] INIT(= N_("E1261: Cannot import .vim without using \"as\"")); EXTERN char e_cannot_import_same_script_twice_str[] INIT(= N_("E1262: Cannot import the same script twice: %s")); -// E1263 unused +EXTERN char e_using_autoload_name_in_non_autoload_script_str[] + INIT(= N_("E1263: Using autoload name in a non-autoload script: %s")); EXTERN char e_autoload_import_cannot_use_absolute_or_relative_path[] INIT(= N_("E1264: Autoload import cannot use absolute or relative path: %s")); EXTERN char e_cannot_use_partial_here[] diff --git a/src/testdir/test_vim9_import.vim b/src/testdir/test_vim9_import.vim index 6ecea56a9..3734709f0 100644 --- a/src/testdir/test_vim9_import.vim +++ b/src/testdir/test_vim9_import.vim @@ -1622,6 +1622,18 @@ def Test_autoload_missing_function_name() delete('Xdir', 'rf') enddef +def Test_autoload_name_wring() + var lines =<< trim END + vim9script + def Xscriptname#Func() + enddef + END + writefile(lines, 'Xscriptname.vim') + CheckScriptFailure(lines, 'E1263:') + + delete('Xscriptname') +enddef + def Test_import_autoload_postponed() mkdir('Xdir/autoload', 'p') var save_rtp = &rtp diff --git a/src/userfunc.c b/src/userfunc.c index 734187875..650dfc9d1 100644 --- a/src/userfunc.c +++ b/src/userfunc.c @@ -4495,6 +4495,12 @@ define_function(exarg_T *eap, char_u *name_arg, garray_T *lines_to_free) } } } + else if (vim9script && vim_strchr(name, AUTOLOAD_CHAR) != NULL) + { + semsg(_(e_using_autoload_name_in_non_autoload_script_str), + name); + goto erret; + } } if (var_conflict) { diff --git a/src/version.c b/src/version.c index a9a832378..edf26ed80 100644 --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 4174, +/**/ 4173, /**/ 4172, |