diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/framework/JsLibraryStdDetectionUtil.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/framework/JsLibraryStdDetectionUtil.kt index e85fa95e61f..64f8649bee0 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/framework/JsLibraryStdDetectionUtil.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/framework/JsLibraryStdDetectionUtil.kt @@ -41,20 +41,14 @@ object JsLibraryStdDetectionUtil { return getJsStdLibJar(classes) != null } - fun getJsLibraryStdVersion(library: Library): String? = getJsLibraryStdVersion(library.getFiles(OrderRootType.CLASSES).toList()) - - fun getJsLibraryStdVersion(classesRoots: List): String? { - if (JavaRuntimeDetectionUtil.getJavaRuntimeVersion(classesRoots) != null) { - // Prevent clashing with java runtime, in case when library collects all roots. - return null - } - - val jar = getJsStdLibJar(classesRoots) ?: return null + fun getJsLibraryStdVersion(library: Library): String? { + if ((library as LibraryEx).kind !is JSLibraryKind) return null + val jar = getJsStdLibJar(library.getFiles(OrderRootType.CLASSES).toList()) ?: return null return JarUtil.getJarAttribute(VfsUtilCore.virtualToIoFile(jar), Attributes.Name.IMPLEMENTATION_VERSION) } - fun getJsStdLibJar(classesRoots: List): VirtualFile? { + private fun getJsStdLibJar(classesRoots: List): VirtualFile? { for (root in classesRoots) { if (root.fileSystem.protocol !== StandardFileSystems.JAR_PROTOCOL) continue diff --git a/idea/src/org/jetbrains/kotlin/idea/versions/OutdatedKotlinRuntimeChecker.kt b/idea/src/org/jetbrains/kotlin/idea/versions/OutdatedKotlinRuntimeChecker.kt index 9d52248e9dc..0bacd1049f5 100644 --- a/idea/src/org/jetbrains/kotlin/idea/versions/OutdatedKotlinRuntimeChecker.kt +++ b/idea/src/org/jetbrains/kotlin/idea/versions/OutdatedKotlinRuntimeChecker.kt @@ -63,10 +63,9 @@ fun getOutdatedRuntimeLibraryVersion(library: Library): String? { return if (isRuntimeOutdated(libraryVersion, runtimeVersion)) libraryVersion else null } -private fun getKotlinLibraryVersion(library: Library): String? { - val roots = library.getFiles(OrderRootType.CLASSES).toList() - return JavaRuntimeDetectionUtil.getJavaRuntimeVersion(roots) ?: JsLibraryStdDetectionUtil.getJsLibraryStdVersion(roots) -} +private fun getKotlinLibraryVersion(library: Library): String? = + JavaRuntimeDetectionUtil.getJavaRuntimeVersion(library) ?: + JsLibraryStdDetectionUtil.getJsLibraryStdVersion(library) fun findKotlinRuntimeLibrary(module: Module, predicate: (Library) -> Boolean = ::isKotlinRuntime): Library? { val orderEntries = ModuleRootManager.getInstance(module).orderEntries.filterIsInstance() @@ -81,7 +80,7 @@ fun isKotlinJavaRuntime(library: Library) = JavaRuntimeDetectionUtil.getRuntimeJar(library.getFiles(OrderRootType.CLASSES).asList()) != null fun isKotlinJsRuntime(library: Library) = - JsLibraryStdDetectionUtil.getJsStdLibJar(library.getFiles(OrderRootType.CLASSES).asList()) != null + JsLibraryStdDetectionUtil.hasJsStdlibJar(library) fun collectModulesWithOutdatedRuntime(libraries: List): List = libraries.flatMap { it.usedInModules }