diff --git a/src/errors.h b/src/errors.h
index ad36e33..2811a32 100644
--- a/src/errors.h
+++ b/src/errors.h
@@ -2738,7 +2738,8 @@
 	INIT(= N_("E1043: Invalid command after :export"));
 EXTERN char e_export_with_invalid_argument[]
 	INIT(= N_("E1044: Export with invalid argument"));
-// E1045 not used
+EXTERN char e_import_nesting_too_deep[]
+        INIT(= N_("E1045: Import nesting too deep"));
 // 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 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
diff --git a/src/version.c b/src/version.c
index 2cf4f46..57d7ec7 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1014,
+/**/
     1013,
 /**/
     1012,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index a2dd77a..fa02871 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -778,6 +778,7 @@
     static imported_T *
 find_imported_in_script(char_u *name, size_t len, int sid)
 {
+    static int	    nesting = 0;
     scriptitem_T    *si;
     int		    idx;
 
@@ -792,6 +793,19 @@
 		     : 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;
 }
