diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index d689fe11b9..50ef430b68 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 9.1. Last change: 2025 Jan 20 +*options.txt* For Vim version 9.1. Last change: 2025 Jan 21 VIM REFERENCE MANUAL by Bram Moolenaar @@ -5582,7 +5582,6 @@ A jump table for the options with a short description can be found at |Q_op|. command recursion, see |E169|. See also |:function|. Also used for maximum depth of callback functions. - Also used for maximum depth of import. See |:import-cycle|. *'maxmapdepth'* *'mmd'* *E223* 'maxmapdepth' 'mmd' number (default 1000) diff --git a/runtime/doc/tags b/runtime/doc/tags index 6491350a3f..0b9253203b 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -4148,7 +4148,6 @@ E1041 vim9.txt /*E1041* E1042 vim9.txt /*E1042* E1043 vim9.txt /*E1043* E1044 vim9.txt /*E1044* -E1045 vim9.txt /*E1045* E1047 vim9.txt /*E1047* E1048 vim9.txt /*E1048* E1049 vim9.txt /*E1049* diff --git a/runtime/doc/vim9.txt b/runtime/doc/vim9.txt index 694ec7c795..5ea4ebe58e 100644 --- a/runtime/doc/vim9.txt +++ b/runtime/doc/vim9.txt @@ -1,4 +1,4 @@ -*vim9.txt* For Vim version 9.1. Last change: 2025 Jan 19 +*vim9.txt* For Vim version 9.1. Last change: 2025 Jan 21 VIM REFERENCE MANUAL by Bram Moolenaar @@ -2052,14 +2052,13 @@ prefixing the function with || you should use||. For example: > noremap ,a :call s:that.OtherFunc() < - *:import-cycle* *E1045* -The `import` commands are executed when encountered. It can be nested up to -'maxfuncdepth' levels deep. If script A imports script B, and B (directly or -indirectly) imports A, this will be skipped over. At this point items in A -after "import B" will not have been processed and defined yet. Therefore -cyclic imports can exist and not result in an error directly, but may result -in an error for items in A after "import B" not being defined. This does not -apply to autoload imports, see the next section. + *:import-cycle* +The `import` commands are executed when encountered. If script A imports +script B, and B (directly or indirectly) imports A, this will be skipped over. +At this point items in A after "import B" will not have been processed and +defined yet. Therefore cyclic imports can exist and not result in an error +directly, but may result in an error for items in A after "import B" not being +defined. This does not apply to autoload imports, see the next section. Importing an autoload script ~ diff --git a/src/errors.h b/src/errors.h index 4d2818a817..94675289c1 100644 --- a/src/errors.h +++ b/src/errors.h @@ -2738,8 +2738,7 @@ EXTERN char e_invalid_command_after_export[] INIT(= N_("E1043: Invalid command after :export")); EXTERN char e_export_with_invalid_argument[] INIT(= N_("E1044: Export with invalid argument")); -EXTERN char e_import_nesting_too_deep[] - INIT(= N_("E1045: Import nesting too deep")); +// E1045 not used // E1046 not used EXTERN char e_syntax_error_in_import_str[] INIT(= N_("E1047: Syntax error in import: %s")); diff --git a/src/testdir/test_vim9_class.vim b/src/testdir/test_vim9_class.vim index 3b3ea2015f..c39f18c4d7 100644 --- a/src/testdir/test_vim9_class.vim +++ b/src/testdir/test_vim9_class.vim @@ -3662,73 +3662,7 @@ def Test_extend_imported_class() v9.CheckScriptSuccess(lines) enddef -" Test for multi level import -def Test_multi_level_import_normal() - var lines =<< trim END - vim9script - export class Property - public var value: string - endclass - END - writefile(lines, 'aa.vim', 'D') - - lines =<< trim END - vim9script - import './aa.vim' - export class View - var content = aa.Property.new('') - endclass - END - writefile(lines, 'bb.vim', 'D') - - lines =<< trim END - vim9script - import './bb.vim' - class MyView extends bb.View - def new(value: string) - this.content.value = value - enddef - endclass - var myView = MyView.new('This should be ok') - END - v9.CheckScriptSuccess(lines) -enddef - -" Test for multi level import -def Test_multi_level_import_nest_over() - var lines =<< trim END - vim9script - import './xbb.vim' - export class Property - public var value: string - endclass - END - writefile(lines, 'xaa.vim', 'D') - - lines =<< trim END - vim9script - import './xaa.vim' - export class View - var content = aa.Property.new('') - endclass - END - writefile(lines, 'xbb.vim', 'D') - - lines =<< trim END - vim9script - set maxfuncdepth=100 - import './xbb.vim' - class MyView extends bb.View - def new(value: string) - this.content.value = value - enddef - endclass - var myView = MyView.new('This should be ok') - END - v9.CheckSourceFailure(lines, 'E1045: Import nesting too deep', 3) -enddef - -def Test_abtstract_class() +def Test_abstract_class() var lines =<< trim END vim9script abstract class Base diff --git a/src/version.c b/src/version.c index 7a2e5a8030..ad451d70a6 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1044, /**/ 1043, /**/ diff --git a/src/vim9compile.c b/src/vim9compile.c index 338415e85f..29b6414c46 100644 --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -778,7 +778,6 @@ get_script_item_idx( static imported_T * find_imported_in_script(char_u *name, size_t len, int sid) { - static int nesting = 0; scriptitem_T *si; int idx; @@ -793,19 +792,6 @@ find_imported_in_script(char_u *name, size_t len, int sid) : STRLEN(import->imp_name) == len && STRNCMP(name, import->imp_name, len) == 0) return import; - else - { - if (nesting >= p_mfd) - { - emsg(_(e_import_nesting_too_deep)); - return NULL; - } - ++nesting; - import = find_imported_in_script(name, len, import->imp_sid); - --nesting; - if (import != NULL) - return import; - } } return NULL; }