diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/framework/JsHeaderLibraryDetectionUtil.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/framework/JsHeaderLibraryDetectionUtil.kt index 12e7f321644..58257ea3a03 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/framework/JsHeaderLibraryDetectionUtil.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/framework/JsHeaderLibraryDetectionUtil.kt @@ -29,22 +29,17 @@ public object JsHeaderLibraryDetectionUtil { platformStatic public fun isJsHeaderLibraryDetected(classesRoots: List): Boolean = isJsLibraryWithAcceptedFile(classesRoots) { - val extension = it.getExtension() - JetFileType.EXTENSION == extension || - JavaScript.EXTENSION == extension && KotlinJavascriptMetadataUtils.hasMetadata(String(it.contentsToByteArray(false))) + JetFileType.EXTENSION == it.getExtension() || isJsFileWithMetadata(it) } platformStatic public fun isJsHeaderLibraryWithSources(classesRoots: List): Boolean = isJsLibraryWithAcceptedFile(classesRoots) { JetFileType.EXTENSION == it.getExtension() } - private fun isJsLibraryWithAcceptedFile(classesRoots: List, accept: (VirtualFile) -> Boolean): Boolean { - return if (JavaRuntimeDetectionUtil.getJavaRuntimeVersion(classesRoots) != null) { - // Prevent clashing with java runtime - false - } - else { - classesRoots.firstOrNull { !VfsUtilCore.processFilesRecursively(it, { !accept(it) }) } != null - } - } + private fun isJsLibraryWithAcceptedFile(classesRoots: List, accept: (VirtualFile) -> Boolean): Boolean = + JavaRuntimeDetectionUtil.getJavaRuntimeVersion(classesRoots) == null // Prevent clashing with java runtime + && classesRoots.any { !VfsUtilCore.processFilesRecursively(it, { !accept(it) }) } + + private fun isJsFileWithMetadata(file: VirtualFile): Boolean = + !file.isDirectory() && JavaScript.EXTENSION == file.getExtension() && KotlinJavascriptMetadataUtils.hasMetadata(String(file.contentsToByteArray(false))) }