[kotlin] remove deprecated script api usage

GitOrigin-RevId: f1b1c04af066810ec1e702fa5139f9fe6230a1fe
This commit is contained in:
Vlad Koshkin
2024-09-23 11:33:42 +02:00
committed by intellij-monorepo-bot
parent ae4b109e24
commit f2484b780b
15 changed files with 41 additions and 40 deletions
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.idea.core.script.configuration.CompositeScriptConfig
import org.jetbrains.kotlin.idea.core.script.configuration.DefaultScriptingSupport
import org.jetbrains.kotlin.idea.util.application.isUnitTestMode
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.scripting.definitions.ScriptDependenciesProvider
import org.jetbrains.kotlin.scripting.definitions.ScriptConfigurationsProvider
import org.jetbrains.kotlin.scripting.resolve.ScriptCompilationConfigurationResult
import org.jetbrains.kotlin.scripting.resolve.ScriptCompilationConfigurationWrapper
import org.jetbrains.kotlin.utils.addToStdlib.cast
@@ -37,7 +37,7 @@ import kotlin.script.experimental.api.makeFailureResult
// NOTE: this service exists exclusively because ScriptDependencyManager
// cannot be registered as implementing two services (state would be duplicated)
internal class IdeScriptDependenciesProvider(project: Project) : ScriptDependenciesProvider(project) {
internal class IdeScriptDependenciesProvider(project: Project) : ScriptConfigurationsProvider(project) {
override fun getScriptConfigurationResult(file: KtFile): ScriptCompilationConfigurationResult? {
val configuration = getScriptConfiguration(file)
val reports = IdeScriptReportSink.getReports(file)
@@ -114,12 +114,6 @@ open class ScriptDefinitionsManager(private val project: Project) : LazyScriptDe
return definition
}
@Deprecated("Migrating to configuration refinement", level = DeprecationLevel.ERROR)
override fun findScriptDefinition(fileName: String): KotlinScriptDefinition? {
@Suppress("DEPRECATION")
return findDefinition(File(fileName).toScriptSource())?.legacyDefinition
}
/**
* Goes through the list of registered [ScriptDefinitionsSource]s and triggers definitions reload.
* Result of previous reloads is invalidated including those launched via [reloadDefinitionsBy].
@@ -7,7 +7,7 @@ import com.intellij.openapi.projectRoots.Sdk
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.idea.base.plugin.KotlinPluginModeProvider
import org.jetbrains.kotlin.scripting.definitions.ScriptDependenciesProvider
import org.jetbrains.kotlin.scripting.definitions.ScriptConfigurationsProvider
interface ScriptDependencyAware {
fun getAllScriptDependenciesSources(): Collection<VirtualFile>
@@ -25,7 +25,7 @@ interface ScriptDependencyAware {
companion object {
fun getInstance(project: Project): ScriptDependencyAware {
return if (KotlinPluginModeProvider.isK2Mode()) {
project.serviceIfCreated<ScriptDependenciesProvider>() as? ScriptDependencyAware ?: EMPTY
project.serviceIfCreated<ScriptConfigurationsProvider>() as? ScriptDependencyAware ?: EMPTY
} else {
ScriptConfigurationManager.getInstance(project)
}
@@ -4,7 +4,6 @@ package org.jetbrains.kotlin.idea.core.script
import com.intellij.codeInsight.daemon.impl.SeverityRegistrar
import com.intellij.codeInsight.daemon.impl.TrafficLightRenderer
import com.intellij.codeInsight.daemon.impl.TrafficLightRenderer.DaemonCodeAnalyzerStatus
import com.intellij.codeInsight.daemon.impl.TrafficLightRendererContributor
import com.intellij.openapi.application.runReadAction
import com.intellij.openapi.editor.Document
@@ -14,7 +13,7 @@ import com.intellij.psi.PsiFile
import com.intellij.util.concurrency.annotations.RequiresBackgroundThread
import org.jetbrains.kotlin.idea.base.plugin.KotlinPluginModeProvider
import org.jetbrains.kotlin.idea.base.scripting.KotlinBaseScriptingBundle
import org.jetbrains.kotlin.idea.core.script.k2.ScriptConfigurationDataProvider
import org.jetbrains.kotlin.idea.core.script.k2.ScriptConfigurationsProviderImpl
import org.jetbrains.kotlin.psi.KtFile
internal class ScriptTrafficLightRendererContributor : TrafficLightRendererContributor {
@@ -30,7 +29,7 @@ internal class ScriptTrafficLightRendererContributor : TrafficLightRendererContr
val status = super.getDaemonCodeAnalyzerStatus(severityRegistrar)
if (KotlinPluginModeProvider.isK2Mode()) {
if (ScriptConfigurationDataProvider.getInstanceIfCreated(project)?.getScriptConfiguration(file) == null) {
if (ScriptConfigurationsProviderImpl.getInstanceIfCreated(project)?.getScriptConfiguration(file) == null) {
status.reasonWhySuspended = KotlinBaseScriptingBundle.message("text.loading.kotlin.script.configuration")
status.errorAnalyzingFinished = false
}
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.idea.isEnabled
import org.jetbrains.kotlin.idea.util.isKotlinFileType
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
import org.jetbrains.kotlin.scripting.definitions.ScriptDependenciesProvider
import org.jetbrains.kotlin.scripting.definitions.ScriptConfigurationsProvider
import org.jetbrains.kotlin.scripting.definitions.findScriptDefinition
import kotlin.script.experimental.api.ScriptCompilationConfiguration
import kotlin.script.experimental.api.isStandalone
@@ -110,7 +110,7 @@ class KotlinScriptResolveScopeProvider : ResolveScopeProvider() {
}
private fun KtFile.isStandaloneScriptByDesign(project: Project, definition: ScriptDefinition): Boolean {
val configuration = ScriptDependenciesProvider.getInstance(project)?.getScriptConfiguration(this)?.configuration
val configuration = ScriptConfigurationsProvider.getInstance(project)?.getScriptConfiguration(this)?.configuration
?: definition.compilationConfiguration
val isStandalone = configuration[ScriptCompilationConfiguration.isStandalone] == true
debugLog { "standalone-by-design: $isStandalone" }
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.idea.core.script.SCRIPT_DEPENDENCIES_SOURCES
import org.jetbrains.kotlin.idea.core.script.ScriptConfigurationManager.Companion.toVfsRoots
import org.jetbrains.kotlin.idea.core.script.ScriptDependencyAware
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.scripting.definitions.ScriptDependenciesProvider
import org.jetbrains.kotlin.scripting.definitions.ScriptConfigurationsProvider
import org.jetbrains.kotlin.scripting.resolve.ScriptCompilationConfigurationResult
import org.jetbrains.kotlin.scripting.resolve.ScriptCompilationConfigurationWrapper
import java.nio.file.Path
@@ -38,7 +38,7 @@ class ScriptDependenciesData(
)
}
class ScriptConfigurationDataProvider(project: Project) : ScriptDependenciesProvider(project), ScriptDependencyAware {
class ScriptConfigurationsProviderImpl(project: Project) : ScriptConfigurationsProvider(project), ScriptDependencyAware {
private val scriptDependenciesData = AtomicReference(ScriptDependenciesData())
fun notifySourceUpdated() {
@@ -121,11 +121,11 @@ class ScriptConfigurationDataProvider(project: Project) : ScriptDependenciesProv
private val KtFile.alwaysVirtualFile: VirtualFile get() = originalFile.virtualFile ?: viewProvider.virtualFile
companion object {
fun getInstance(project: Project): ScriptConfigurationDataProvider =
project.service<ScriptDependenciesProvider>() as ScriptConfigurationDataProvider
fun getInstance(project: Project): ScriptConfigurationsProviderImpl =
project.service<ScriptConfigurationsProvider>() as ScriptConfigurationsProviderImpl
fun getInstanceIfCreated(project: Project): ScriptConfigurationDataProvider? =
project.serviceIfCreated<ScriptDependenciesProvider>() as? ScriptConfigurationDataProvider
fun getInstanceIfCreated(project: Project): ScriptConfigurationsProviderImpl? =
project.serviceIfCreated<ScriptConfigurationsProvider>() as? ScriptConfigurationsProviderImpl
}
}
@@ -35,7 +35,7 @@ abstract class ScriptDependenciesSource<T : BaseScriptModel>(open val project: P
updateModules(dependencies, storage)
currentConfigurationsData.set(dependencies)
ScriptConfigurationDataProvider.getInstance(project).notifySourceUpdated()
ScriptConfigurationsProviderImpl.getInstance(project).notifySourceUpdated()
writeAction {
project.analysisMessageBus.syncPublisher(KotlinModificationTopics.GLOBAL_MODULE_STATE_MODIFICATION).onModification()
@@ -14,6 +14,9 @@ import com.intellij.util.PathUtil
import com.intellij.util.lang.UrlClassLoader
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinitionsSource
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition.FromLegacy
import org.jetbrains.kotlin.scripting.definitions.getEnvironment
import org.jetbrains.kotlin.scripting.resolve.KotlinScriptDefinitionFromAnnotatedTemplate
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
import java.io.File
import java.nio.file.Files
@@ -81,14 +84,22 @@ fun loadDefinitionsFromTemplatesByPaths(
}
when {
template.annotations.firstIsInstanceOrNull<kotlin.script.templates.ScriptTemplateDefinition>() != null -> {
ScriptDefinition.FromLegacyTemplate(hostConfiguration, template, templateClasspathAsFiles, defaultCompilerOptions)
}
template.annotations.firstIsInstanceOrNull<kotlin.script.experimental.annotations.KotlinScript>() != null -> {
ScriptDefinition.FromTemplate(hostConfiguration, template, ScriptDefinition::class, defaultCompilerOptions)
}
template.annotations.firstIsInstanceOrNull<kotlin.script.templates.ScriptTemplateDefinition>() != null -> {
FromLegacy(
hostConfiguration,
KotlinScriptDefinitionFromAnnotatedTemplate(
template,
hostConfiguration[ScriptingHostConfiguration.getEnvironment]?.invoke(),
templateClasspathAsFiles
),
defaultCompilerOptions
)
}
else -> {
scriptingWarnLog("Cannot find a valid script definition annotation on the class $template")
null
@@ -256,10 +256,7 @@ class ScriptDefinitionsManagerTest {
@Test
fun `Default definition is available via both new and legacy API`() {
val defaultDefinition = manager.getDefaultDefinition()
val defaultScriptDefinition = manager.getDefaultScriptDefinition()
assertNotNull(defaultDefinition.asLegacyOrNull<LegacyBundledIdeScriptDefinition>())
assertInstanceOf(LegacyBundledIdeScriptDefinition::class.java, defaultScriptDefinition)
}
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.idea.base.projectStructure.languageVersionSettings
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.resolve.ImportPath
import org.jetbrains.kotlin.scripting.definitions.ScriptDependenciesProvider
import org.jetbrains.kotlin.scripting.definitions.ScriptConfigurationsProvider
@Service
@ApiStatus.Experimental
@@ -34,7 +34,7 @@ class KotlinIdeDefaultImportProvider {
val allDefaultImports = analyzerServices.getDefaultImports(languageVersionSettings, includeLowPriorityImports = true)
val scriptExtraImports = contextFile.takeIf { it.isScript() }?.let { ktFile ->
val scriptDependencies = ScriptDependenciesProvider.getInstance(ktFile.project)
val scriptDependencies = ScriptConfigurationsProvider.getInstance(ktFile.project)
?.getScriptConfiguration(ktFile.originalFile as KtFile)
scriptDependencies?.defaultImports?.map { ImportPath.fromString(it) }
scriptDependencies?.defaultImports?.map { ImportPath.fromString(it) }
@@ -6,7 +6,7 @@ import com.intellij.openapi.project.Project
import com.intellij.openapi.vfs.StandardFileSystems
import com.intellij.openapi.vfs.VirtualFile
import org.jetbrains.kotlin.idea.base.plugin.KotlinPluginModeProvider
import org.jetbrains.kotlin.idea.core.script.k2.ScriptConfigurationDataProvider
import org.jetbrains.kotlin.idea.core.script.k2.ScriptConfigurationsProviderImpl
import kotlin.script.experimental.api.valueOrNull
/**
@@ -116,7 +116,7 @@ abstract class GradleBuildRootsLocator(private val project: Project) {
get() {
if (KotlinPluginModeProvider.isK2Mode()) {
val virtualFile = StandardFileSystems.local()?.refreshAndFindFileByPath(filePath) ?: return false
return ScriptConfigurationDataProvider.getInstanceIfCreated(project)?.getConfiguration(virtualFile)?.valueOrNull() != null
return ScriptConfigurationsProviderImpl.getInstanceIfCreated(project)?.getConfiguration(virtualFile)?.valueOrNull() != null
}
return script != null
}
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.idea.core.script.IdeScriptReportSink
import org.jetbrains.kotlin.idea.core.script.ScriptDependenciesModificationTracker
import org.jetbrains.kotlin.psi.KtCodeFragment
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.scripting.definitions.ScriptDependenciesProvider
import org.jetbrains.kotlin.scripting.definitions.ScriptConfigurationsProvider
import kotlin.script.experimental.api.ScriptDiagnostic
@ApiStatus.Internal
@@ -86,4 +86,4 @@ private fun KtFile.calculateShouldHighlightScript(): Boolean {
}
private fun KtFile.isConfigurationLoaded(): Boolean =
ScriptDependenciesProvider.getInstance(project)?.getScriptConfiguration(this) != null
ScriptConfigurationsProvider.getInstance(project)?.getScriptConfiguration(this) != null
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.idea.codeinsight.utils.KotlinSupportAvailability
import org.jetbrains.kotlin.idea.core.util.toPsiFile
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.NotNullableUserDataProperty
import org.jetbrains.kotlin.scripting.definitions.ScriptDependenciesProvider
import org.jetbrains.kotlin.scripting.definitions.ScriptConfigurationsProvider
var VirtualFile.isKotlinDecompiledFile: Boolean by NotNullableUserDataProperty(Key.create("IS_KOTLIN_DECOMPILED_FILE"), false)
@@ -28,7 +28,7 @@ class KotlinDefaultHighlightingSettingsProvider : DefaultHighlightingSettingProv
return when {
psiFile is KtFile ->
when {
psiFile.isScript() && ScriptDependenciesProvider.getInstance(project)?.getScriptConfiguration(psiFile) == null ->
psiFile.isScript() && ScriptConfigurationsProvider.getInstance(project)?.getScriptConfiguration(psiFile) == null ->
FileHighlightingSetting.SKIP_HIGHLIGHTING
psiFile.isCompiled -> FileHighlightingSetting.SKIP_INSPECTION
@@ -45,7 +45,7 @@
<projectService serviceInterface="org.jetbrains.kotlin.idea.core.script.ScriptConfigurationManager"
serviceImplementation="org.jetbrains.kotlin.idea.core.script.configuration.CompositeScriptConfigurationManager"/>
<projectService serviceInterface="org.jetbrains.kotlin.scripting.definitions.ScriptDependenciesProvider"
<projectService serviceInterface="org.jetbrains.kotlin.scripting.definitions.ScriptConfigurationsProvider"
serviceImplementation="org.jetbrains.kotlin.idea.core.script.IdeScriptDependenciesProvider"/>
<projectService serviceInterface="org.jetbrains.kotlin.scripting.resolve.ScriptReportSink"
@@ -83,8 +83,8 @@
<projectService serviceInterface="org.jetbrains.kotlin.idea.core.script.ScriptConfigurationManager"
serviceImplementation="org.jetbrains.kotlin.idea.core.script.configuration.CompositeScriptConfigurationManager"/>
<projectService serviceInterface="org.jetbrains.kotlin.scripting.definitions.ScriptDependenciesProvider"
serviceImplementation="org.jetbrains.kotlin.idea.core.script.k2.ScriptConfigurationDataProvider"/>
<projectService serviceInterface="org.jetbrains.kotlin.scripting.definitions.ScriptConfigurationsProvider"
serviceImplementation="org.jetbrains.kotlin.idea.core.script.k2.ScriptConfigurationsProviderImpl"/>
<projectService serviceInterface="org.jetbrains.kotlin.scripting.resolve.ScriptReportSink"
serviceImplementation="org.jetbrains.kotlin.idea.core.script.IdeScriptReportSink"/>