KT-60171 K2-scripting: CLI specific providers are used in IDE context

^KT-60171 fixed

Merge-request: KT-MR-10987
Merged-by: Andrei Klunnyi <andrei.klunnyi@jetbrains.com>
This commit is contained in:
Andrei Klunnyi
2023-07-10 11:03:11 +00:00
committed by Space Team
parent 19ccb23088
commit 527d20c7be
3 changed files with 27 additions and 16 deletions
@@ -44,23 +44,25 @@ class FirScriptDefinitionProviderService(
companion object {
fun getFactory(
definitions: List<ScriptDefinition>,
definitionSources: List<ScriptDefinitionsSource>
definitionSources: List<ScriptDefinitionsSource>,
definitionProvider: ScriptDefinitionProvider? = null,
configurationProvider: ScriptDependenciesProvider? = null
): Factory {
return Factory { session ->
FirScriptDefinitionProviderService(
session,
makeDefaultDefinitionProvider = {
CliScriptDefinitionProvider().also {
it.setScriptDefinitionsSources(definitionSources)
it.setScriptDefinitions(definitions)
}
},
makeDefaultConfigurationProvider = {
// TODO: check if memory can leak in MockProject (probably not too important, since currently the providers are set externaly in important cases)
CliScriptDependenciesProvider(MockProject(null, Disposer.newDisposable()))
val makeDefinitionsProvider = definitionProvider?.let { { it } }
?: {
CliScriptDefinitionProvider().also {
it.setScriptDefinitionsSources(definitionSources)
it.setScriptDefinitions(definitions)
}
)
}
}
val makeConfigurationProvider = configurationProvider?.let { { it } }
?: {
// TODO: check if memory can leak in MockProject (probably not too important, since currently the providers are set externaly in important cases)
CliScriptDependenciesProvider(MockProject(null, Disposer.newDisposable()))
}
return Factory { session -> FirScriptDefinitionProviderService(session, makeDefinitionsProvider, makeConfigurationProvider) }
}
}
}