Minor. Parametrize MainFunctionDetector with LanguageVersionSettings

This commit is contained in:
Denis Zharkov
2018-09-07 12:13:55 +03:00
parent bc722f9c5f
commit 38be1f6947
15 changed files with 46 additions and 19 deletions
@@ -668,7 +668,7 @@ class ControlFlowInformationProvider private constructor(
if (anonymous && !languageVersionSettings.supportsFeature(LanguageFeature.SingleUnderscoreForParameterName)) {
return
}
val mainFunctionDetector = MainFunctionDetector(trace.bindingContext)
val mainFunctionDetector = MainFunctionDetector(trace.bindingContext, languageVersionSettings)
val isMain = owner is KtNamedFunction && mainFunctionDetector.isMain(owner)
val functionName = functionDescriptor.name
if (isMain
@@ -17,6 +17,7 @@
package org.jetbrains.kotlin.idea
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.config.LanguageVersionSettings
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.KtDeclaration
@@ -31,17 +32,20 @@ import org.jetbrains.kotlin.types.Variance
class MainFunctionDetector {
private val getFunctionDescriptor: (KtNamedFunction) -> FunctionDescriptor?
private val languageVersionSettings: LanguageVersionSettings
/** Assumes that the function declaration is already resolved and the descriptor can be found in the `bindingContext`. */
constructor(bindingContext: BindingContext) {
constructor(bindingContext: BindingContext, languageVersionSettings: LanguageVersionSettings) {
this.getFunctionDescriptor = { function ->
bindingContext.get(BindingContext.FUNCTION, function)
?: throw IllegalStateException("No descriptor resolved for " + function + " " + function.text)
}
this.languageVersionSettings = languageVersionSettings
}
constructor(functionResolver: (KtNamedFunction) -> FunctionDescriptor?) {
constructor(languageVersionSettings: LanguageVersionSettings, functionResolver: (KtNamedFunction) -> FunctionDescriptor?) {
this.getFunctionDescriptor = functionResolver
this.languageVersionSettings = languageVersionSettings
}
fun hasMain(declarations: List<KtDeclaration>): Boolean {
@@ -17,6 +17,7 @@
package org.jetbrains.kotlin.resolve
import com.intellij.util.containers.MultiMap
import org.jetbrains.kotlin.config.LanguageVersionSettings
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.diagnostics.Errors
import org.jetbrains.kotlin.diagnostics.reportOnDeclaration
@@ -31,10 +32,11 @@ import java.util.*
class OverloadResolver(
private val trace: BindingTrace,
private val overloadFilter: OverloadFilter,
private val overloadChecker: OverloadChecker
private val overloadChecker: OverloadChecker,
languageVersionSettings: LanguageVersionSettings
) {
private val mainFunctionDetector = MainFunctionDetector(trace.bindingContext)
private val mainFunctionDetector = MainFunctionDetector(trace.bindingContext, languageVersionSettings)
fun checkOverloads(c: BodiesResolveContext) {
val inClasses = findConstructorsInNestedClassesAndTypeAliases(c)