From dae42f7c763b5d5a6aa5b79bf979f3612aaf516b Mon Sep 17 00:00:00 2001 From: Michael Nedzelsky Date: Thu, 19 Mar 2015 21:58:16 +0300 Subject: [PATCH] fix EA-66819 - IOE: VirtualDirectoryImpl.contentsToByteArray Changes: do not try to read content for virtual file in case it is really a directory --- .../framework/JsHeaderLibraryDetectionUtil.kt | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) 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))) }