diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-02-08 19:12:19 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-02-08 19:12:19 +0000 |
commit | 779aeff5c32c26161f42cdccbaa2376e78ee77d6 (patch) | |
tree | 6b03c4f29dc69bd14973d1ab2798a2c2a377b8e2 | |
parent | e023d499378942a6c3a3855cbe461ec2cb570f63 (diff) |
patch 8.2.4330: Vim9: no error if script imports itselfv8.2.4330
Problem: Vim9: no error if script imports itself.
Solution: Give an error when a script imports itself.
-rw-r--r-- | src/errors.h | 3 | ||||
-rw-r--r-- | src/testdir/test_vim9_import.vim | 11 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/vim9script.c | 6 |
4 files changed, 20 insertions, 2 deletions
diff --git a/src/errors.h b/src/errors.h index ecd4eb92d0..c66d26d8d9 100644 --- a/src/errors.h +++ b/src/errors.h @@ -2802,7 +2802,8 @@ EXTERN char e_function_reference_invalid[] INIT(= N_("E1086: Function reference invalid")); EXTERN char e_cannot_use_index_when_declaring_variable[] INIT(= N_("E1087: Cannot use an index when declaring a variable")); -// E1088 unused +EXTERN char e_script_cannot_import_itself[] + INIT(= N_("E1088: Script cannot import itself")); EXTERN char e_unknown_variable_str[] INIT(= N_("E1089: Unknown variable: %s")); EXTERN char e_cannot_assign_to_argument[] diff --git a/src/testdir/test_vim9_import.vim b/src/testdir/test_vim9_import.vim index 1e8851e92d..652e4d36b6 100644 --- a/src/testdir/test_vim9_import.vim +++ b/src/testdir/test_vim9_import.vim @@ -500,7 +500,16 @@ def Test_import_fails() v9.CheckScriptFailure(lines, 'E1262:') delete('Xthat.vim') - + + lines =<< trim END + vim9script + export var item = 'hello' + import './Xyourself.vim' + END + writefile(lines, 'Xyourself.vim') + assert_fails('source Xyourself.vim', 'E1088:') + delete('Xyourself.vim') + mkdir('Ximport') writefile(['vim9script'], 'Ximport/.vim') diff --git a/src/version.c b/src/version.c index 2feed3cf37..d7da6df6e0 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 */ /**/ + 4330, +/**/ 4329, /**/ 4328, diff --git a/src/vim9script.c b/src/vim9script.c index 5c1c055668..872108827e 100644 --- a/src/vim9script.c +++ b/src/vim9script.c @@ -516,6 +516,12 @@ handle_import( goto erret; } + if (sid == current_sctx.sc_sid) + { + emsg(_(e_script_cannot_import_itself)); + goto erret; + } + import_gap = gap != NULL ? gap : &SCRIPT_ITEM(import_sid)->sn_imports; for (i = 0; i < import_gap->ga_len; ++i) { |