KT-60749 Scripting: default definition as a fallback

This commit effectively reverts changes made in the scope of KT-60193,
namely c9eebffb and 2d50bd68.

^KT-60749 fixed
This commit is contained in:
Andrei Klunnyi
2023-07-27 12:11:28 +02:00
committed by Space Team
parent 69a35970eb
commit 419381af7f
2 changed files with 21 additions and 15 deletions
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.scripting.definitions
import com.intellij.ide.highlighter.JavaFileType
import com.intellij.injected.editor.VirtualFileWindow
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.diagnostic.Logger
import com.intellij.openapi.fileTypes.FileTypeRegistry
import com.intellij.openapi.project.Project
import com.intellij.openapi.util.Computable
@@ -23,6 +24,7 @@ import kotlin.contracts.ExperimentalContracts
import kotlin.contracts.contract
import kotlin.script.experimental.api.SourceCode
inline fun <T> runReadAction(crossinline runnable: () -> T): T {
return ApplicationManager.getApplication().runReadAction(Computable { runnable() })
}
@@ -61,10 +63,15 @@ fun VirtualFile.findScriptDefinition(project: Project): ScriptDefinition? {
return findScriptDefinition(project, VirtualFileScriptSource(this))
}
fun findScriptDefinition(project: Project, script: SourceCode): ScriptDefinition? {
fun findScriptDefinition(project: Project, script: SourceCode): ScriptDefinition {
val scriptDefinitionProvider = ScriptDefinitionProvider.getInstance(project)
?: error("Unable to get script definition: ScriptDefinitionProvider is not configured.")
return scriptDefinitionProvider.findDefinition(script)
?: scriptDefinitionProvider.getDefaultDefinition()
.also {
Logger.getInstance("org.jetbrains.kotlin.scripting.definitions")
.debug("Default definition is used for ${script.locationId}")
}
}
private const val JAVA_CLASS_FILE_TYPE_DOT_DEFAULT_EXTENSION = ".class"