Wrap exceptions from external script configuration loader with error handling
This commit is contained in:
+12
-3
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user