diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeScanner.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeScanner.java
index fc356047542..0336f3c4191 100644
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeScanner.java
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeScanner.java
@@ -85,6 +85,11 @@ public class TreeScanner extends Visitor {
         scan(tree.moduleNames);
     }
 
+    @Override
+    public void visitModuleImport(JCModuleImport tree) {
+        scan(tree.module);
+    }
+
     @Override
     public void visitOpens(JCOpens tree) {
         scan(tree.qualid);
diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeTranslator.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeTranslator.java
index 59a7457e6d0..63778fb42ff 100644
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeTranslator.java
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeTranslator.java
@@ -131,6 +131,11 @@ public class TreeTranslator extends JCTree.Visitor {
         result = tree;
     }
 
+    public void visitModuleImport(JCModuleImport tree) {
+        tree.module = translate(tree.module);
+        result = tree;
+    }
+
     public void visitClassDef(JCClassDecl tree) {
         tree.mods = translate(tree.mods);
         tree.typarams = translateTypeParams(tree.typarams);
diff --git a/test/langtools/tools/javac/processing/ModuleImportProcessingTest.java b/test/langtools/tools/javac/processing/ModuleImportProcessingTest.java
new file mode 100644
index 00000000000..71f65ca9641
--- /dev/null
+++ b/test/langtools/tools/javac/processing/ModuleImportProcessingTest.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * @test
+ * @bug 8332497
+ * @summary error: javac prints an AssertionError when annotation processing runs on program with module imports
+ * @library /tools/lib
+ * @modules jdk.compiler/com.sun.tools.javac.api
+ *          jdk.compiler/com.sun.tools.javac.main
+ * @build toolbox.JavacTask toolbox.ToolBox toolbox.Task
+ * @run main ModuleImportProcessingTest
+ */
+
+import toolbox.*;
+
+import javax.annotation.processing.AbstractProcessor;
+import javax.annotation.processing.RoundEnvironment;
+import javax.annotation.processing.SupportedAnnotationTypes;
+import javax.lang.model.SourceVersion;
+import javax.lang.model.element.TypeElement;
+import java.nio.file.Path;
+import java.util.Set;
+
+
+public class ModuleImportProcessingTest extends TestRunner {
+    final toolbox.ToolBox tb = new ToolBox();
+    final String processedSource = """
+        import module java.base;
+        import java.lang.annotation.*;
+        public class Main {
+            public static void main(String[] args) {
+                List.of();
+            }
+            @Ann
+            private void test() {}
+            @Retention(RetentionPolicy.RUNTIME)
+            @Target(ElementType.METHOD)
+            public @interface Ann {}
+        }
+        """;
+
+    public ModuleImportProcessingTest() {
+        super(System.err);
+    }
+
+    public static void main(String[] args) throws Exception {
+        new ModuleImportProcessingTest().runTests();
+    }
+
+    protected void runTests() throws Exception {
+        runTests(m -> new Object[] { Path.of(m.getName()) });
+    }
+
+    @Test
+    public void test(Path base) throws Exception {
+        tb.writeJavaFiles(base, processedSource);
+        new toolbox.JavacTask(tb)
+                .options(
+                        "-processor", AP.class.getName(),
+                        "--enable-preview",
+                        "-source", Integer.toString(Runtime.version().feature()),
+                        "-proc:only"
+                )
+                .files(tb.findJavaFiles(base))
+                .run();
+    }
+
+    @SupportedAnnotationTypes("*")
+    public static final class AP extends AbstractProcessor {
+
+        @Override
+        public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
+            return false;
+        }
+
+        @Override
+        public SourceVersion getSupportedSourceVersion() {
+            return SourceVersion.latest();
+        }
+
+    }
+}
\ No newline at end of file