Fix script config saving to file attributes
also make reading from file attribute more robust
This commit is contained in:
+1
-2
@@ -18,7 +18,6 @@ package org.jetbrains.kotlin.idea.core.script
|
|||||||
|
|
||||||
import com.intellij.openapi.vfs.VirtualFile
|
import com.intellij.openapi.vfs.VirtualFile
|
||||||
import org.jetbrains.kotlin.idea.core.util.*
|
import org.jetbrains.kotlin.idea.core.util.*
|
||||||
import org.jetbrains.kotlin.scripting.resolve.ScriptCompilationConfigurationWrapper
|
|
||||||
import java.io.*
|
import java.io.*
|
||||||
import kotlin.script.experimental.api.ScriptCompilationConfiguration
|
import kotlin.script.experimental.api.ScriptCompilationConfiguration
|
||||||
import kotlin.script.experimental.dependencies.ScriptDependencies
|
import kotlin.script.experimental.dependencies.ScriptDependencies
|
||||||
@@ -61,7 +60,7 @@ var VirtualFile.scriptCompilationConfiguration: ScriptCompilationConfiguration?
|
|||||||
write = {
|
write = {
|
||||||
val os = ByteArrayOutputStream()
|
val os = ByteArrayOutputStream()
|
||||||
ObjectOutputStream(os).use { oos ->
|
ObjectOutputStream(os).use { oos ->
|
||||||
oos.writeObject((it as? ScriptCompilationConfigurationWrapper.FromCompilationConfiguration)?.configuration)
|
oos.writeObject(it)
|
||||||
}
|
}
|
||||||
val bytes = os.toByteArray()
|
val bytes = os.toByteArray()
|
||||||
writeInt(bytes.size)
|
writeInt(bytes.size)
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.core.util
|
package org.jetbrains.kotlin.idea.core.util
|
||||||
|
|
||||||
|
import com.intellij.openapi.diagnostic.Logger
|
||||||
import com.intellij.openapi.util.NullableLazyKey
|
import com.intellij.openapi.util.NullableLazyKey
|
||||||
import com.intellij.openapi.vfs.VirtualFile
|
import com.intellij.openapi.vfs.VirtualFile
|
||||||
import com.intellij.openapi.vfs.VirtualFileWithId
|
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
|
if (file !is VirtualFileWithId || !file.isValid) return null
|
||||||
|
|
||||||
return attribute.readAttribute(file)?.use { input ->
|
return attribute.readAttribute(file)?.use { input ->
|
||||||
input.readNullable {
|
try {
|
||||||
readValue(input)
|
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
|
} ?: default
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user