[FIR] Consistently use _function_ instead of _functional_ in names of classes and functions
This commit is contained in:
committed by
Space Team
parent
f268ab8858
commit
89c42e20c9
+17
-17
@@ -5,8 +5,8 @@
|
||||
|
||||
package org.jetbrains.kotlin.resolve.calls.inference.components
|
||||
|
||||
import org.jetbrains.kotlin.builtins.functions.FunctionalTypeKind
|
||||
import org.jetbrains.kotlin.builtins.functions.isRegularFunction
|
||||
import org.jetbrains.kotlin.builtins.functions.FunctionTypeKind
|
||||
import org.jetbrains.kotlin.builtins.functions.isBasicFunctionOrKFunction
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.resolve.calls.inference.model.*
|
||||
@@ -30,7 +30,7 @@ class PostponedArgumentInputTypesResolver(
|
||||
val parametersFromConstraints: Set<List<TypeWithKind>>?,
|
||||
val annotations: List<AnnotationMarker>?,
|
||||
val isExtensionFunction: Boolean,
|
||||
val functionalTypeKind: FunctionalTypeKind,
|
||||
val functionTypeKind: FunctionTypeKind,
|
||||
val isNullable: Boolean
|
||||
)
|
||||
|
||||
@@ -44,7 +44,7 @@ class PostponedArgumentInputTypesResolver(
|
||||
variableDependencyProvider: TypeVariableDependencyInformationProvider
|
||||
): List<TypeWithKind> {
|
||||
fun List<Constraint>.extractFunctionalTypes() = mapNotNull { constraint ->
|
||||
TypeWithKind(constraint.type.getFunctionalTypeFromSupertypes(), constraint.kind)
|
||||
TypeWithKind(constraint.type.getFunctionTypeFromSupertypes(), constraint.kind)
|
||||
}
|
||||
|
||||
val typeVariableTypeConstructor = variable.typeVariable.freshTypeConstructor()
|
||||
@@ -53,7 +53,7 @@ class PostponedArgumentInputTypesResolver(
|
||||
|
||||
return dependentVariables.flatMap { type ->
|
||||
val constraints = notFixedTypeVariables[type]?.constraints ?: return@flatMap emptyList()
|
||||
val constraintsWithFunctionalType = constraints.filter { it.type.isBuiltinFunctionalTypeOrSubtype() }
|
||||
val constraintsWithFunctionalType = constraints.filter { it.type.isBuiltinFunctionTypeOrSubtype() }
|
||||
constraintsWithFunctionalType.extractFunctionalTypes()
|
||||
}
|
||||
}
|
||||
@@ -75,7 +75,7 @@ class PostponedArgumentInputTypesResolver(
|
||||
if (argument is LambdaWithTypeVariableAsExpectedTypeMarker) argument.parameterTypesFromDeclaration else null
|
||||
|
||||
val parameterTypesFromConstraints = functionalTypesFromConstraints.mapTo(SmartSet.create()) { typeWithKind ->
|
||||
typeWithKind.type.extractArgumentsForFunctionalTypeOrSubtype().map {
|
||||
typeWithKind.type.extractArgumentsForFunctionTypeOrSubtype().map {
|
||||
// We should use opposite kind as lambda's parameters are contravariant
|
||||
TypeWithKind(it, typeWithKind.direction.opposite())
|
||||
}
|
||||
@@ -96,16 +96,16 @@ class PostponedArgumentInputTypesResolver(
|
||||
parameterTypesFromDeclaration,
|
||||
)
|
||||
|
||||
var functionalTypeKind: FunctionalTypeKind? = null
|
||||
var functionTypeKind: FunctionTypeKind? = null
|
||||
var isNullable = false
|
||||
if (functionalTypesFromConstraints.isNotEmpty()) {
|
||||
isNullable = true
|
||||
for (funType in functionalTypesFromConstraints) {
|
||||
if (functionalTypeKind == null) {
|
||||
funType.type.functionalTypeKind()?.takeUnless { it.isRegularFunction }?.let { functionalTypeKind = it }
|
||||
if (functionTypeKind == null) {
|
||||
funType.type.functionTypeKind()?.takeUnless { it.isBasicFunctionOrKFunction }?.let { functionTypeKind = it }
|
||||
}
|
||||
if (isNullable && !funType.type.isMarkedNullable()) isNullable = false
|
||||
if ((functionalTypeKind != null) && !isNullable) break
|
||||
if ((functionTypeKind != null) && !isNullable) break
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,7 +126,7 @@ class PostponedArgumentInputTypesResolver(
|
||||
parameterTypesFromConstraints,
|
||||
annotations = annotations,
|
||||
isExtensionFunction,
|
||||
functionalTypeKind ?: FunctionalTypeKind.Function,
|
||||
functionTypeKind ?: FunctionTypeKind.Function,
|
||||
isNullable = isNullable
|
||||
)
|
||||
}
|
||||
@@ -258,7 +258,7 @@ class PostponedArgumentInputTypesResolver(
|
||||
private fun Context.computeResultingFunctionalConstructor(
|
||||
argument: PostponedAtomWithRevisableExpectedType,
|
||||
parametersNumber: Int,
|
||||
functionalTypeKind: FunctionalTypeKind,
|
||||
functionTypeKind: FunctionTypeKind,
|
||||
resultTypeResolver: ResultTypeResolver
|
||||
): TypeConstructorMarker {
|
||||
val expectedType = argument.expectedType
|
||||
@@ -268,7 +268,7 @@ class PostponedArgumentInputTypesResolver(
|
||||
|
||||
return when (argument) {
|
||||
is LambdaWithTypeVariableAsExpectedTypeMarker ->
|
||||
getNonReflectFunctionTypeConstructor(parametersNumber, functionalTypeKind)
|
||||
getNonReflectFunctionTypeConstructor(parametersNumber, functionTypeKind)
|
||||
is PostponedCallableReferenceMarker -> {
|
||||
val computedResultType = resultTypeResolver.findResultType(
|
||||
this@computeResultingFunctionalConstructor,
|
||||
@@ -277,10 +277,10 @@ class PostponedArgumentInputTypesResolver(
|
||||
)
|
||||
|
||||
// Avoid KFunction<...>/Function<...> types
|
||||
if (computedResultType.isBuiltinFunctionalTypeOrSubtype() && computedResultType.argumentsCount() > 1) {
|
||||
if (computedResultType.isBuiltinFunctionTypeOrSubtype() && computedResultType.argumentsCount() > 1) {
|
||||
computedResultType.typeConstructor()
|
||||
} else {
|
||||
getReflectFunctionTypeConstructor(parametersNumber, functionalTypeKind)
|
||||
getReflectFunctionTypeConstructor(parametersNumber, functionTypeKind)
|
||||
}
|
||||
}
|
||||
else -> throw IllegalStateException("Unsupported postponed argument type of $argument")
|
||||
@@ -382,7 +382,7 @@ class PostponedArgumentInputTypesResolver(
|
||||
val functionalConstructor = computeResultingFunctionalConstructor(
|
||||
argument,
|
||||
variablesForParameterTypes.size,
|
||||
parameterTypesInfo.functionalTypeKind,
|
||||
parameterTypesInfo.functionTypeKind,
|
||||
resultTypeResolver
|
||||
)
|
||||
|
||||
@@ -558,7 +558,7 @@ class PostponedArgumentInputTypesResolver(
|
||||
dependencyProvider: TypeVariableDependencyInformationProvider,
|
||||
resolvedAtomByTypeVariableProvider: ResolvedAtomProvider,
|
||||
): Boolean = with(resolutionTypeSystemContext) {
|
||||
val relatedVariables = type.extractArgumentsForFunctionalTypeOrSubtype()
|
||||
val relatedVariables = type.extractArgumentsForFunctionTypeOrSubtype()
|
||||
.flatMap { getAllDeeplyRelatedTypeVariables(it, dependencyProvider) }
|
||||
val variableForFixation = variableFixationFinder.findFirstVariableForFixation(
|
||||
this@fixNextReadyVariableForParameterType,
|
||||
|
||||
Reference in New Issue
Block a user