From eec61cfd076ebd19f886b86cf54d07d313c73079 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Mon, 11 Apr 2022 20:10:22 +0200 Subject: [PATCH] [low level fir] handle jars in LLFitJavaFacadeForBinaries --- .../api/fir/sessions/LLFirJavaFacadeForBinaries.kt | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirJavaFacadeForBinaries.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirJavaFacadeForBinaries.kt index 422bf8dbfcd..a67bfd0a1f2 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirJavaFacadeForBinaries.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirJavaFacadeForBinaries.kt @@ -18,6 +18,7 @@ import org.jetbrains.kotlin.load.java.structure.impl.VirtualFileBoundJavaClass import java.nio.file.Path import java.nio.file.Paths + internal class LLFirJavaFacadeForBinaries( session: FirSession, builtinTypes: BuiltinTypes, @@ -28,13 +29,21 @@ internal class LLFirJavaFacadeForBinaries( requireIsInstance(javaClass) val path = getBinaryPath(javaClass) return binaryDependenciesModuleDataProvider.getModuleData(path) - ?: error("No module data found for ${javaClass.classId} with path $path") + ?: error("No module data found for ${javaClass.classId} with path $path and virtual file ${javaClass.virtualFile?.path}") } private fun getBinaryPath(javaClass: VirtualFileBoundJavaClass): Path { val virtualFile = javaClass.virtualFile ?: error("no virtual file for ${javaClass.classId}") val path = virtualFile.path - return Paths.get(path) + return if (JAR_DELIMITER in path) { + Paths.get(path.substringBefore(JAR_DELIMITER) + ".jar") + } else { + Paths.get(path) + } + } + + companion object { + private const val JAR_DELIMITER = ".jar!/" } } \ No newline at end of file