From 19ce279611ca8f59ce257da55d688febf57ff927 Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Tue, 13 Aug 2019 11:01:20 +0200 Subject: [PATCH] Fix script config saving to file attributes also make reading from file attribute more robust --- .../core/script/ScriptDependenciesFileAttribute.kt | 3 +-- .../kotlin/idea/core/util/FileAttributeUtils.kt | 12 ++++++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDependenciesFileAttribute.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDependenciesFileAttribute.kt index 86c2339ac94..e98817bd8b7 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDependenciesFileAttribute.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDependenciesFileAttribute.kt @@ -18,7 +18,6 @@ package org.jetbrains.kotlin.idea.core.script import com.intellij.openapi.vfs.VirtualFile import org.jetbrains.kotlin.idea.core.util.* -import org.jetbrains.kotlin.scripting.resolve.ScriptCompilationConfigurationWrapper import java.io.* import kotlin.script.experimental.api.ScriptCompilationConfiguration import kotlin.script.experimental.dependencies.ScriptDependencies @@ -61,7 +60,7 @@ var VirtualFile.scriptCompilationConfiguration: ScriptCompilationConfiguration? write = { val os = ByteArrayOutputStream() ObjectOutputStream(os).use { oos -> - oos.writeObject((it as? ScriptCompilationConfigurationWrapper.FromCompilationConfiguration)?.configuration) + oos.writeObject(it) } val bytes = os.toByteArray() writeInt(bytes.size) diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/FileAttributeUtils.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/FileAttributeUtils.kt index 417b3d91257..f051f5b9589 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/FileAttributeUtils.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/FileAttributeUtils.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.idea.core.util +import com.intellij.openapi.diagnostic.Logger import com.intellij.openapi.util.NullableLazyKey import com.intellij.openapi.vfs.VirtualFile import com.intellij.openapi.vfs.VirtualFileWithId @@ -44,8 +45,15 @@ abstract class FileAttributeProperty(name: String, version: Int, privat if (file !is VirtualFileWithId || !file.isValid) return null return attribute.readAttribute(file)?.use { input -> - input.readNullable { - readValue(input) + try { + input.readNullable { + readValue(input) + } + } catch (e: Throwable) { + Logger.getInstance("#org.jetbrains.kotlin.idea.core.util.FileAttributeProperty") + .warn("Unable to read attribute from $file", e) + file.putUserData(cache, null) + null } } ?: default }