patch 9.1.1014: Vim9: variable not found in transitive import

Problem:  Vim9: variable not found in transitive import
Solution: Allow nested import (Hirohito Higashi)

fixe: #16379
closes: #16440

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/testdir/test_vim9_class.vim b/src/testdir/test_vim9_class.vim
index 23281bc..fc0edeb 100644
--- a/src/testdir/test_vim9_class.vim
+++ b/src/testdir/test_vim9_class.vim
@@ -3507,7 +3507,73 @@
   v9.CheckScriptSuccess(lines)
 enddef
 
-def Test_abstract_class()
+" 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()
   var lines =<< trim END
     vim9script
     abstract class Base