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:
Natalia Selezneva
2020-06-23 15:25:48 +03:00
parent 05e8546bdb
commit bcd3921bae
2 changed files with 7 additions and 7 deletions
@@ -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
@@ -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)