Add languageSetting provider

Access to facets could be heavy

#KTIJ-23501
This commit is contained in:
Vladimir Dolzhenko
2022-11-03 17:08:59 +01:00
committed by teamcity
parent d7a58a7c6c
commit 2ec07b861b
@@ -34,8 +34,9 @@ import org.jetbrains.kotlin.types.Variance
import org.jetbrains.kotlin.utils.KotlinExceptionWithAttachments
class MainFunctionDetector {
private val languageVersionSettings: LanguageVersionSettings by lazy { getLanguageVersionSettings() }
private val getFunctionDescriptor: (KtNamedFunction) -> FunctionDescriptor?
private val languageVersionSettings: LanguageVersionSettings
private val getLanguageVersionSettings: () -> LanguageVersionSettings
/** Assumes that the function declaration is already resolved and the descriptor can be found in the `bindingContext`. */
constructor(bindingContext: BindingContext, languageVersionSettings: LanguageVersionSettings) {
@@ -44,14 +45,22 @@ class MainFunctionDetector {
?: throw throw KotlinExceptionWithAttachments("No descriptor resolved for $function")
.withPsiAttachment("function.text", function)
}
this.languageVersionSettings = languageVersionSettings
this.getLanguageVersionSettings = { languageVersionSettings }
}
constructor(languageVersionSettings: LanguageVersionSettings, functionResolver: (KtNamedFunction) -> FunctionDescriptor?) {
constructor(
languageVersionSettingsProvider: () -> LanguageVersionSettings,
functionResolver: (KtNamedFunction) -> FunctionDescriptor?
) {
this.getLanguageVersionSettings = languageVersionSettingsProvider
this.getFunctionDescriptor = functionResolver
this.languageVersionSettings = languageVersionSettings
}
constructor(
languageVersionSettings: LanguageVersionSettings,
functionResolver: (KtNamedFunction) -> FunctionDescriptor?
) : this({ languageVersionSettings }, functionResolver)
@JvmOverloads
fun isMain(
function: KtNamedFunction,