AA: make paths platform-independent before using JRT file system
^KT-59697 Fixed
This commit is contained in:
committed by
Ilya Kirillov
parent
bf1c9774aa
commit
0d19a5b3ea
+5
-2
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.analysis.api.impl.base.util
|
||||
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.util.io.FileUtil
|
||||
import com.intellij.openapi.util.text.StringUtil
|
||||
import com.intellij.openapi.vfs.StandardFileSystems
|
||||
import com.intellij.openapi.vfs.VfsUtilCore
|
||||
@@ -38,7 +39,7 @@ object LibraryUtils {
|
||||
?.let { getAllVirtualFilesFromRoot(it, includeRoot) } ?: emptySet()
|
||||
}
|
||||
|
||||
fun getAllPsiFilesFromTheJar(
|
||||
fun getAllPsiFilesFromJar(
|
||||
jar: Path,
|
||||
project: Project,
|
||||
jarFileSystem: CoreJarFileSystem = CoreJarFileSystem(),
|
||||
@@ -116,7 +117,9 @@ object LibraryUtils {
|
||||
val result = mutableListOf<String>()
|
||||
|
||||
if (isModularRuntime(jdkHome)) {
|
||||
val jrtBaseUrl: String = StandardFileSystems.JRT_PROTOCOL_PREFIX + jdkHome.toString() + JAR_SEPARATOR
|
||||
val jrtBaseUrl = "${StandardFileSystems.JRT_PROTOCOL_PREFIX}${
|
||||
FileUtil.toSystemIndependentName(jdkHome.toAbsolutePath().toString())
|
||||
}$JAR_SEPARATOR"
|
||||
val modules = readModulesFromReleaseFile(jdkHome)
|
||||
if (modules != null) {
|
||||
for (module in modules) {
|
||||
|
||||
+5
-2
@@ -17,6 +17,7 @@ import com.intellij.openapi.Disposable
|
||||
import com.intellij.openapi.extensions.PluginDescriptor
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.roots.PackageIndex
|
||||
import com.intellij.openapi.util.io.FileUtil
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.openapi.vfs.VirtualFileManager
|
||||
import com.intellij.psi.*
|
||||
@@ -318,7 +319,7 @@ object StandaloneProjectFactory {
|
||||
environment: KotlinCoreProjectEnvironment,
|
||||
): List<VirtualFile> {
|
||||
return roots.mapNotNull { path ->
|
||||
val pathString = path.toAbsolutePath().toString()
|
||||
val pathString = FileUtil.toSystemIndependentName(path.toAbsolutePath().toString())
|
||||
when {
|
||||
pathString.endsWith(JAR_PROTOCOL) -> {
|
||||
environment.environment.jarFileSystem.findFileByPath(pathString + JAR_SEPARATOR)
|
||||
@@ -366,7 +367,9 @@ object StandaloneProjectFactory {
|
||||
private fun KtBinaryModule.getJavaRoots(
|
||||
environment: KotlinCoreProjectEnvironment,
|
||||
): List<JavaRoot> {
|
||||
return getVirtualFilesForLibraryRoots(getBinaryRoots(), environment).map { root -> JavaRoot(root, JavaRoot.RootType.BINARY)}
|
||||
return getVirtualFilesForLibraryRoots(getBinaryRoots(), environment).map { root ->
|
||||
JavaRoot(root, JavaRoot.RootType.BINARY)
|
||||
}
|
||||
}
|
||||
|
||||
private fun adjustModulePath(pathString: String): String {
|
||||
|
||||
+1
-1
@@ -57,7 +57,7 @@ object AnalysisApiFirLibraryBinaryTestConfigurator : AnalysisApiTestConfigurator
|
||||
private class KtLibraryBinaryModuleFactory : KtModuleFactory {
|
||||
override fun createModule(testModule: TestModule, testServices: TestServices, project: Project): KtModuleWithFiles {
|
||||
val library = testServices.compiledLibraryProvider.compileToLibrary(testModule).jar
|
||||
val decompiledFiles = LibraryUtils.getAllPsiFilesFromTheJar(library, project)
|
||||
val decompiledFiles = LibraryUtils.getAllPsiFilesFromJar(library, project)
|
||||
|
||||
return KtModuleWithFiles(
|
||||
KtLibraryModuleImpl(
|
||||
|
||||
+1
-2
@@ -11,7 +11,6 @@ import com.intellij.psi.search.GlobalSearchScope
|
||||
import java.nio.file.Path
|
||||
import org.jetbrains.kotlin.analysis.api.impl.base.util.LibraryUtils
|
||||
import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtModuleWithFiles
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtLibrarySourceModule
|
||||
import org.jetbrains.kotlin.analysis.test.framework.project.structure.KtLibraryModuleImpl
|
||||
import org.jetbrains.kotlin.analysis.test.framework.project.structure.KtLibrarySourceModuleImpl
|
||||
import org.jetbrains.kotlin.analysis.test.framework.project.structure.KtModuleFactory
|
||||
@@ -39,7 +38,7 @@ fun createKtLibrarySourceModule(libraryJar: Path, librarySourcesJar: Path, testM
|
||||
librarySources = null,
|
||||
)
|
||||
|
||||
val decompiledPsiFilesFromSourceJar = LibraryUtils.getAllPsiFilesFromTheJar(librarySourcesJar, project)
|
||||
val decompiledPsiFilesFromSourceJar = LibraryUtils.getAllPsiFilesFromJar(librarySourcesJar, project)
|
||||
val librarySourceKtModule = KtLibrarySourceModuleImpl(
|
||||
testModule.name,
|
||||
testModule.targetPlatform,
|
||||
|
||||
Reference in New Issue
Block a user