Fix freeze during loading script configurations through legacy scripting API
Do not wrap the whole configuration loading process into readAction ^KT-39771 Fixed
This commit is contained in:
+3
-5
@@ -61,11 +61,9 @@ open class DefaultScriptConfigurationLoader(val project: Project) : ScriptConfig
|
|||||||
|
|
||||||
val inputs = getInputsStamp(vFile, file)
|
val inputs = getInputsStamp(vFile, file)
|
||||||
val scriptingApiResult = try {
|
val scriptingApiResult = try {
|
||||||
runReadAction {
|
refineScriptCompilationConfiguration(
|
||||||
refineScriptCompilationConfiguration(
|
KtFileScriptSource(file), scriptDefinition, file.project
|
||||||
KtFileScriptSource(file), scriptDefinition, file.project
|
)
|
||||||
)
|
|
||||||
}
|
|
||||||
} catch (e: Throwable) {
|
} catch (e: Throwable) {
|
||||||
if (e is ControlFlowException) throw e
|
if (e is ControlFlowException) throw e
|
||||||
|
|
||||||
|
|||||||
+4
-2
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
|||||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||||
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition
|
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition
|
||||||
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
|
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
|
||||||
|
import org.jetbrains.kotlin.scripting.definitions.runReadAction
|
||||||
import org.jetbrains.kotlin.scripting.withCorrectExtension
|
import org.jetbrains.kotlin.scripting.withCorrectExtension
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.net.URL
|
import java.net.URL
|
||||||
@@ -228,8 +229,9 @@ fun refineScriptCompilationConfiguration(
|
|||||||
if (legacyDefinition == null) {
|
if (legacyDefinition == null) {
|
||||||
val compilationConfiguration = definition.compilationConfiguration
|
val compilationConfiguration = definition.compilationConfiguration
|
||||||
val collectedData =
|
val collectedData =
|
||||||
getScriptCollectedData(ktFileSource.ktFile, compilationConfiguration, project, definition.contextClassLoader)
|
runReadAction {
|
||||||
|
getScriptCollectedData(ktFileSource.ktFile, compilationConfiguration, project, definition.contextClassLoader)
|
||||||
|
}
|
||||||
return compilationConfiguration.refineOnAnnotations(script, collectedData)
|
return compilationConfiguration.refineOnAnnotations(script, collectedData)
|
||||||
.onSuccess {
|
.onSuccess {
|
||||||
it.refineBeforeCompiling(script, collectedData)
|
it.refineBeforeCompiling(script, collectedData)
|
||||||
|
|||||||
Reference in New Issue
Block a user