Scripts: switch ScriptReportSink to new scripting API

Use ScriptDiagnostic instead of ScripReport
This commit is contained in:
Natalia Selezneva
2019-07-09 12:58:28 +03:00
parent bd0f947222
commit e4d0c2cb0e
7 changed files with 53 additions and 51 deletions
@@ -25,14 +25,14 @@ import com.intellij.psi.PsiManager
import com.intellij.ui.EditorNotifications
import org.jetbrains.kotlin.psi.UserDataProperty
import org.jetbrains.kotlin.scripting.resolve.ScriptReportSink
import kotlin.script.experimental.dependencies.ScriptReport
import kotlin.script.experimental.api.ScriptDiagnostic
class IdeScriptReportSink(val project: Project) : ScriptReportSink {
override fun attachReports(scriptFile: VirtualFile, reports: List<ScriptReport>) {
override fun attachReports(scriptFile: VirtualFile, reports: List<ScriptDiagnostic>) {
if (getReports(scriptFile) == reports) return
// TODO: persist errors between launches?
scriptFile.scriptReports = reports
scriptFile.scriptDiagnostics = reports
ApplicationManager.getApplication().invokeLater {
if (scriptFile.isValid && !project.isDisposed) {
@@ -45,10 +45,10 @@ class IdeScriptReportSink(val project: Project) : ScriptReportSink {
}
companion object {
fun getReports(file: VirtualFile): List<ScriptReport> {
return file.scriptReports ?: emptyList()
fun getReports(file: VirtualFile): List<ScriptDiagnostic> {
return file.scriptDiagnostics ?: emptyList()
}
private var VirtualFile.scriptReports: List<ScriptReport>? by UserDataProperty(Key.create("KOTLIN_SCRIPT_REPORTS"))
private var VirtualFile.scriptDiagnostics: List<ScriptDiagnostic>? by UserDataProperty(Key.create("KOTLIN_SCRIPT_DIAGNOSTICS"))
}
}
@@ -20,7 +20,6 @@ import org.jetbrains.kotlin.scripting.resolve.ScriptCompilationConfigurationWrap
import org.jetbrains.kotlin.scripting.resolve.ScriptReportSink
import kotlin.script.experimental.api.ResultWithDiagnostics
import kotlin.script.experimental.api.valueOrNull
import kotlin.script.experimental.jvm.compat.mapToLegacyReports
// TODO: rename and provide alias for compatibility - this is not only about dependencies anymore
abstract class ScriptDependenciesLoader(protected val project: Project) {
@@ -77,7 +76,7 @@ abstract class ScriptDependenciesLoader(protected val project: Project) {
}
private fun attachReportsIfChanged(result: ResultWithDiagnostics<*>, file: VirtualFile) {
reporter.attachReports(file, result.reports.mapToLegacyReports())
reporter.attachReports(file, result.reports)
}
private fun save(compilationConfigurationResult: ScriptCompilationConfigurationResult?, file: VirtualFile) {