Fix legacy definitions error propagation
also fixes script-util test with resolving errors
This commit is contained in:
@@ -364,20 +364,22 @@ class ScriptTemplateTest : KtUsefulTestCase() {
|
|||||||
|
|
||||||
val environment = KotlinCoreEnvironment.createForTests(rootDisposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES)
|
val environment = KotlinCoreEnvironment.createForTests(rootDisposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES)
|
||||||
|
|
||||||
try {
|
return try {
|
||||||
return KotlinToJVMBytecodeCompiler.compileScript(environment, this::class.java.classLoader.takeUnless { runIsolated })
|
KotlinToJVMBytecodeCompiler.compileScript(environment, this::class.java.classLoader.takeUnless { runIsolated })
|
||||||
}
|
} catch (e: CompilationException) {
|
||||||
catch (e: CompilationException) {
|
messageCollector.report(
|
||||||
messageCollector.report(CompilerMessageSeverity.EXCEPTION, OutputMessageUtil.renderException(e),
|
CompilerMessageSeverity.EXCEPTION, OutputMessageUtil.renderException(e),
|
||||||
MessageUtil.psiElementToMessageLocation(e.element))
|
MessageUtil.psiElementToMessageLocation(e.element)
|
||||||
return null
|
)
|
||||||
}
|
null
|
||||||
catch (t: Throwable) {
|
} catch (e: IllegalStateException) {
|
||||||
|
messageCollector.report(CompilerMessageSeverity.EXCEPTION, OutputMessageUtil.renderException(e))
|
||||||
|
null
|
||||||
|
} catch (t: Throwable) {
|
||||||
MessageCollectorUtil.reportException(messageCollector, t)
|
MessageCollectorUtil.reportException(messageCollector, t)
|
||||||
throw t
|
throw t
|
||||||
}
|
}
|
||||||
}
|
} finally {
|
||||||
finally {
|
|
||||||
Disposer.dispose(rootDisposable)
|
Disposer.dispose(rootDisposable)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+13
-11
@@ -170,21 +170,23 @@ done
|
|||||||
|
|
||||||
val environment = KotlinCoreEnvironment.createForTests(rootDisposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES)
|
val environment = KotlinCoreEnvironment.createForTests(rootDisposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES)
|
||||||
|
|
||||||
try {
|
return try {
|
||||||
return KotlinToJVMBytecodeCompiler.compileScript(environment)
|
KotlinToJVMBytecodeCompiler.compileScript(environment)
|
||||||
}
|
} catch (e: CompilationException) {
|
||||||
catch (e: CompilationException) {
|
messageCollector.report(
|
||||||
messageCollector.report(CompilerMessageSeverity.EXCEPTION, OutputMessageUtil.renderException(e),
|
CompilerMessageSeverity.EXCEPTION, OutputMessageUtil.renderException(e),
|
||||||
MessageUtil.psiElementToMessageLocation(e.element))
|
MessageUtil.psiElementToMessageLocation(e.element)
|
||||||
return null
|
)
|
||||||
}
|
null
|
||||||
catch (t: Throwable) {
|
} catch (e: IllegalStateException) {
|
||||||
|
messageCollector.report(CompilerMessageSeverity.EXCEPTION, OutputMessageUtil.renderException(e))
|
||||||
|
null
|
||||||
|
} catch (t: Throwable) {
|
||||||
MessageCollectorUtil.reportException(messageCollector, t)
|
MessageCollectorUtil.reportException(messageCollector, t)
|
||||||
throw t
|
throw t
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
} finally {
|
||||||
finally {
|
|
||||||
Disposer.dispose(rootDisposable)
|
Disposer.dispose(rootDisposable)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+9
-4
@@ -11,6 +11,7 @@ import com.intellij.psi.PsiFile
|
|||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.scripting.resolve.ScriptCompilationConfigurationResult
|
import org.jetbrains.kotlin.scripting.resolve.ScriptCompilationConfigurationResult
|
||||||
import kotlin.script.experimental.api.ScriptCompilationConfiguration
|
import kotlin.script.experimental.api.ScriptCompilationConfiguration
|
||||||
|
import kotlin.script.experimental.api.ScriptDiagnostic
|
||||||
import kotlin.script.experimental.api.valueOr
|
import kotlin.script.experimental.api.valueOr
|
||||||
|
|
||||||
fun PsiFile.findScriptCompilationConfiguration(): ScriptCompilationConfiguration? {
|
fun PsiFile.findScriptCompilationConfiguration(): ScriptCompilationConfiguration? {
|
||||||
@@ -35,8 +36,12 @@ fun VirtualFile.findScriptCompilationConfiguration(project: Project): ScriptComp
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun ScriptCompilationConfigurationResult.valueOrError() = valueOr { failure ->
|
private fun ScriptCompilationConfigurationResult.valueOrError() = valueOr { failure ->
|
||||||
throw IllegalArgumentException(
|
val singleCause = failure.reports.singleOrNull { it.severity == ScriptDiagnostic.Severity.ERROR }
|
||||||
"Error retrieving script compilation configuration: ${failure.reports.joinToString { it.message }}",
|
if (singleCause != null)
|
||||||
failure.reports.find { it.exception != null }?.exception
|
throw IllegalStateException(singleCause.message, singleCause.exception)
|
||||||
)
|
else
|
||||||
|
throw IllegalStateException(
|
||||||
|
"Error retrieving script compilation configuration: ${failure.reports.joinToString { it.message }}",
|
||||||
|
failure.reports.find { it.exception != null }?.exception
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
+1
@@ -219,6 +219,7 @@ fun refineScriptCompilationConfiguration(
|
|||||||
definition: ScriptDefinition,
|
definition: ScriptDefinition,
|
||||||
project: Project
|
project: Project
|
||||||
): ScriptCompilationConfigurationResult {
|
): ScriptCompilationConfigurationResult {
|
||||||
|
// TODO: add location information on refinement errors
|
||||||
val ktFileSource = script.toKtFileSource(definition, project)
|
val ktFileSource = script.toKtFileSource(definition, project)
|
||||||
val legacyDefinition = definition.asLegacyOrNull<KotlinScriptDefinition>()
|
val legacyDefinition = definition.asLegacyOrNull<KotlinScriptDefinition>()
|
||||||
if (legacyDefinition == null) {
|
if (legacyDefinition == null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user