diff --git a/java/java-impl/src/com/siyeh/ipp/imports/ReplaceOnDemandImportIntention.java b/java/java-impl/src/com/siyeh/ipp/imports/ReplaceOnDemandImportIntention.java index d5c9377a7169..848906a7ee86 100644 --- a/java/java-impl/src/com/siyeh/ipp/imports/ReplaceOnDemandImportIntention.java +++ b/java/java-impl/src/com/siyeh/ipp/imports/ReplaceOnDemandImportIntention.java @@ -1,4 +1,4 @@ -// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.siyeh.ipp.imports; import com.intellij.codeInspection.util.IntentionName; @@ -49,10 +49,14 @@ public final class ReplaceOnDemandImportIntention extends MCIntention { if (importStatementBase instanceof PsiImportModuleStatement || importStatementBase instanceof PsiImportStatement) { final PsiClass[] classes = javaFile.getClasses(); final ClassCollector visitor = ClassCollector.create(importStatementBase); - if(visitor==null) return; + if (visitor == null) return; for (PsiClass aClass : classes) { aClass.accept(visitor); } + PsiJavaModule psiJavaModule = javaFile.getModuleDeclaration(); + if (psiJavaModule != null) { + psiJavaModule.accept(visitor); + } ImportUtils.ImplicitImportChecker checker = ImportUtils.createImplicitImportChecker(javaFile); final PsiClass[] importedClasses = Arrays.stream(visitor.getImportedClasses()) .filter( diff --git a/java/java-tests/testData/ipp/com/siyeh/ipp/imports/ModuleImportModuleInfo.java b/java/java-tests/testData/ipp/com/siyeh/ipp/imports/ModuleImportModuleInfo.java new file mode 100644 index 000000000000..a0e9b8efe8be --- /dev/null +++ b/java/java-tests/testData/ipp/com/siyeh/ipp/imports/ModuleImportModuleInfo.java @@ -0,0 +1,7 @@ +import module java.base; + +module my.module { + requires java.base; + + provides Random with A; +} \ No newline at end of file diff --git a/java/java-tests/testData/ipp/com/siyeh/ipp/imports/ModuleImportModuleInfo_after.java b/java/java-tests/testData/ipp/com/siyeh/ipp/imports/ModuleImportModuleInfo_after.java new file mode 100644 index 000000000000..da39011ddc8e --- /dev/null +++ b/java/java-tests/testData/ipp/com/siyeh/ipp/imports/ModuleImportModuleInfo_after.java @@ -0,0 +1,7 @@ +import java.util.Random; + +module my.module { + requires java.base; + + provides Random with A; +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/siyeh/ipp/imports/ReplaceOnDemandImportIntentionTest.java b/java/java-tests/testSrc/com/siyeh/ipp/imports/ReplaceOnDemandImportIntentionTest.java index 66b507cc274b..9da9d271ffa0 100644 --- a/java/java-tests/testSrc/com/siyeh/ipp/imports/ReplaceOnDemandImportIntentionTest.java +++ b/java/java-tests/testSrc/com/siyeh/ipp/imports/ReplaceOnDemandImportIntentionTest.java @@ -1,4 +1,4 @@ -// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.siyeh.ipp.imports; import com.intellij.testFramework.LightProjectDescriptor; @@ -16,6 +16,7 @@ public class ReplaceOnDemandImportIntentionTest extends IPPTestCase { public void testStaticImport() { doTest(); } public void testModuleImport() { doTest(); } public void testModuleImportImplicitImport() { doTest(); } + public void testModuleImportModuleInfo() { doTest(); } @Override protected String getIntentionName() {