Wrap exceptions from external script configuration loader with error handling

This commit is contained in:
Natalia Selezneva
2019-11-01 11:26:46 +03:00
parent 56eb86b7c6
commit fde1d3fdf7
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.idea.core.script.configuration.loader package org.jetbrains.kotlin.idea.core.script.configuration.loader
import com.intellij.openapi.diagnostic.ControlFlowException
import com.intellij.openapi.project.Project import com.intellij.openapi.project.Project
import com.intellij.openapi.vfs.VirtualFile import com.intellij.openapi.vfs.VirtualFile
import org.jetbrains.kotlin.idea.core.script.configuration.cache.CachedConfigurationInputs import org.jetbrains.kotlin.idea.core.script.configuration.cache.CachedConfigurationInputs
@@ -17,6 +18,8 @@ import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
import org.jetbrains.kotlin.scripting.resolve.KtFileScriptSource import org.jetbrains.kotlin.scripting.resolve.KtFileScriptSource
import org.jetbrains.kotlin.scripting.resolve.LegacyResolverWrapper import org.jetbrains.kotlin.scripting.resolve.LegacyResolverWrapper
import org.jetbrains.kotlin.scripting.resolve.refineScriptCompilationConfiguration import org.jetbrains.kotlin.scripting.resolve.refineScriptCompilationConfiguration
import kotlin.script.experimental.api.ResultWithDiagnostics
import kotlin.script.experimental.api.asDiagnostics
import kotlin.script.experimental.api.valueOrNull import kotlin.script.experimental.api.valueOrNull
import kotlin.script.experimental.dependencies.AsyncDependenciesResolver import kotlin.script.experimental.dependencies.AsyncDependenciesResolver
@@ -39,9 +42,15 @@ open class DefaultScriptConfigurationLoader(val project: Project) : ScriptConfig
debug(file) { "start dependencies loading" } debug(file) { "start dependencies loading" }
val inputs = getInputsStamp(file) val inputs = getInputsStamp(file)
val scriptingApiResult = refineScriptCompilationConfiguration( val scriptingApiResult = try {
KtFileScriptSource(file), scriptDefinition, file.project refineScriptCompilationConfiguration(
) KtFileScriptSource(file), scriptDefinition, file.project
)
} catch (e: Throwable) {
if (e is ControlFlowException) throw e
ResultWithDiagnostics.Failure(listOf(e.asDiagnostics()))
}
val result = ScriptConfigurationSnapshot( val result = ScriptConfigurationSnapshot(
inputs, inputs,