Add languageSetting provider
Access to facets could be heavy
#KTIJ-23501
diff --git a/compiler/frontend/src/org/jetbrains/kotlin/idea/MainFunctionDetector.kt b/compiler/frontend/src/org/jetbrains/kotlin/idea/MainFunctionDetector.kt
index 3c0eef4..0426544 100644
--- a/compiler/frontend/src/org/jetbrains/kotlin/idea/MainFunctionDetector.kt
+++ b/compiler/frontend/src/org/jetbrains/kotlin/idea/MainFunctionDetector.kt
@@ -34,8 +34,9 @@
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 @@
?: throw throw KotlinExceptionWithAttachments("No descriptor resolved for $function")
.withAttachment("function.text", function.text)
}
- 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,