From 7acb1c3ced6b5c2bee187f4f948828784507334d Mon Sep 17 00:00:00 2001 From: Stanislav Utikeev Date: Mon, 23 Jun 2025 15:34:42 +0200 Subject: [PATCH] [java] Use `navigationElement` instead of `originalFile` to retrieve the file for JPMS module resolution The problem arises with Kotlin light classes created by `DecompiledLightClassesFactory`. The resulting class isn't physical, and its `originalFile` doesn't point to the physical file as well. Thus, module info isn't found which, e.g., leads to some symbols not being recommended in the "Add dependency" family of quick fixes. `navigationElement`, however, is set properly in such classes so it can be used to find a PSI element which resides next to the potential module-info. As `TargetModuleInfo.module` can resolve JPMS module both via sources and via class files, it seems alright to provide any of such. GitOrigin-RevId: cec0309959a56e1976b4da5ca1f69b4041278e2a --- .../src/com/intellij/java/codeserver/core/JpmsModuleInfo.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/codeserver/core/src/com/intellij/java/codeserver/core/JpmsModuleInfo.kt b/java/codeserver/core/src/com/intellij/java/codeserver/core/JpmsModuleInfo.kt index 0ca9902903c3..c8a48acc0e94 100644 --- a/java/codeserver/core/src/com/intellij/java/codeserver/core/JpmsModuleInfo.kt +++ b/java/codeserver/core/src/com/intellij/java/codeserver/core/JpmsModuleInfo.kt @@ -70,7 +70,7 @@ sealed interface JpmsModuleInfo { */ @JvmStatic fun findTargetModuleInfos(targetPackageName: String, targetFile: PsiFile?, place: PsiFile): List? { - val originalTargetFile = targetFile?.originalFile + val originalTargetFile = targetFile?.navigationElement if (!PsiUtil.isAvailable(JavaFeature.MODULES, place)) return null val useVFile = place.virtualFile