Fix script config saving to file attributes

also make reading from file attribute more robust
This commit is contained in:
Ilya Chernikov
2019-08-13 11:01:20 +02:00
parent 949bb9d150
commit 19ce279611
2 changed files with 11 additions and 4 deletions
@@ -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)
@@ -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<T : Any>(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
}