diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Modules.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Modules.java
index 6dd4a368f44..1136cb5621a 100644
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Modules.java
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Modules.java
@@ -1598,6 +1598,9 @@ public class Modules extends JCTree.Visitor {
                 addVisiblePackages(msym, seen, exportsFrom, exports);
             }
         });
+
+        //module readability is reflexive:
+        msym.readModules.add(msym);
     }
 
     private void addVisiblePackages(ModuleSymbol msym,
diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java
index 72943e09f0f..eb48812f538 100644
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java
@@ -498,7 +498,7 @@ public class TypeEnter implements Completer {
                     }
 
                     for (ExportsDirective export : currentModule.exports) {
-                        if (export.modules != null && !export.modules.contains(env.toplevel.packge.modle)) {
+                        if (export.modules != null && !export.modules.contains(env.toplevel.modle)) {
                             continue;
                         }
 
diff --git a/test/langtools/tools/javac/ImportModule.java b/test/langtools/tools/javac/ImportModule.java
index efbc9c21077..f38b77062e2 100644
--- a/test/langtools/tools/javac/ImportModule.java
+++ b/test/langtools/tools/javac/ImportModule.java
@@ -23,7 +23,7 @@
 
 /**
  * @test
- * @bug 8328481 8332236
+ * @bug 8328481 8332236 8332890
  * @summary Check behavior of module imports.
  * @library /tools/lib
  * @modules java.logging
@@ -741,4 +741,60 @@ public class ImportModule extends TestRunner {
             .writeAll();
     }
 
+    @Test //JDK-8332890
+    public void testModuleInfoSelfImport(Path base) throws Exception {
+        Path current = base.resolve(".");
+        Path src = current.resolve("src");
+        Path classes = current.resolve("classes");
+        tb.writeJavaFiles(src,
+                          """
+                          import module M;
+                          module M {
+                             exports p1 to M1;
+                             exports p2;
+                             exports p3 to M;
+                             uses A;
+                             uses B;
+                             uses C;
+                          }
+                          """,
+                          """
+                          package p1;
+                          public class A {}
+                          """,
+                          """
+                          package p2;
+                          public class B {}
+                          """,
+                          """
+                          package p3;
+                          public class C {}
+                          """);
+
+        Files.createDirectories(classes);
+
+        List<String> actualErrors = new JavacTask(tb)
+                .options("-XDrawDiagnostics",
+                        "--enable-preview", "--release", SOURCE_VERSION)
+                .outdir(classes)
+                .files(tb.findJavaFiles(src))
+                .run(Task.Expect.FAIL)
+                .writeAll()
+                .getOutputLines(Task.OutputKind.DIRECT);
+
+        List<String> expectedErrors = List.of(
+                "module-info.java:3:18: compiler.warn.module.not.found: M1",
+                "module-info.java:6:9: compiler.err.cant.resolve: kindname.class, A, , ",
+                "- compiler.note.preview.filename: module-info.java, DEFAULT",
+                "- compiler.note.preview.recompile",
+                "1 error",
+                "1 warning"
+        );
+
+        if (!Objects.equals(expectedErrors, actualErrors)) {
+            throw new AssertionError("Incorrect Output, expected: " + expectedErrors +
+                                      ", actual: " + out);
+
+        }
+    }
 }