fix EA-66819 - IOE: VirtualDirectoryImpl.contentsToByteArray
Changes: do not try to read content for virtual file in case it is really a directory
This commit is contained in:
+7
-12
@@ -29,22 +29,17 @@ public object JsHeaderLibraryDetectionUtil {
|
|||||||
platformStatic
|
platformStatic
|
||||||
public fun isJsHeaderLibraryDetected(classesRoots: List<VirtualFile>): Boolean =
|
public fun isJsHeaderLibraryDetected(classesRoots: List<VirtualFile>): Boolean =
|
||||||
isJsLibraryWithAcceptedFile(classesRoots) {
|
isJsLibraryWithAcceptedFile(classesRoots) {
|
||||||
val extension = it.getExtension()
|
JetFileType.EXTENSION == it.getExtension() || isJsFileWithMetadata(it)
|
||||||
JetFileType.EXTENSION == extension ||
|
|
||||||
JavaScript.EXTENSION == extension && KotlinJavascriptMetadataUtils.hasMetadata(String(it.contentsToByteArray(false)))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
platformStatic
|
platformStatic
|
||||||
public fun isJsHeaderLibraryWithSources(classesRoots: List<VirtualFile>): Boolean =
|
public fun isJsHeaderLibraryWithSources(classesRoots: List<VirtualFile>): Boolean =
|
||||||
isJsLibraryWithAcceptedFile(classesRoots) { JetFileType.EXTENSION == it.getExtension() }
|
isJsLibraryWithAcceptedFile(classesRoots) { JetFileType.EXTENSION == it.getExtension() }
|
||||||
|
|
||||||
private fun isJsLibraryWithAcceptedFile(classesRoots: List<VirtualFile>, accept: (VirtualFile) -> Boolean): Boolean {
|
private fun isJsLibraryWithAcceptedFile(classesRoots: List<VirtualFile>, accept: (VirtualFile) -> Boolean): Boolean =
|
||||||
return if (JavaRuntimeDetectionUtil.getJavaRuntimeVersion(classesRoots) != null) {
|
JavaRuntimeDetectionUtil.getJavaRuntimeVersion(classesRoots) == null // Prevent clashing with java runtime
|
||||||
// Prevent clashing with java runtime
|
&& classesRoots.any { !VfsUtilCore.processFilesRecursively(it, { !accept(it) }) }
|
||||||
false
|
|
||||||
}
|
private fun isJsFileWithMetadata(file: VirtualFile): Boolean =
|
||||||
else {
|
!file.isDirectory() && JavaScript.EXTENSION == file.getExtension() && KotlinJavascriptMetadataUtils.hasMetadata(String(file.contentsToByteArray(false)))
|
||||||
classesRoots.firstOrNull<VirtualFile> { !VfsUtilCore.processFilesRecursively(it, { !accept(it) }) } != null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user