[FE 1.0] Get rid of absolute CompatibilityOfTypeVariableAsIntersectionTypePart

This commit is contained in:
Victor Petukhov
2022-04-05 20:29:31 +03:00
committed by teamcity
parent 47d6236a2d
commit c71ae4301c
3 changed files with 1 additions and 23 deletions
@@ -304,25 +304,6 @@ internal object PostponedVariablesInitializerResolutionPart : ResolutionPart() {
}
}
internal object CompatibilityOfTypeVariableAsIntersectionTypePart : ResolutionPart() {
override fun ResolutionCandidate.process(workIndex: Int) {
val csBuilder = getSystem().getBuilder()
for ((_, variableWithConstraints) in csBuilder.currentStorage().notFixedTypeVariables) {
val constraints = variableWithConstraints.constraints.filter { csBuilder.isProperType(it.type) }
if (constraints.size <= 1) continue
if (constraints.any { it.kind.isLower() || it.kind.isEqual() }) continue
// See TypeBoundsImpl.computeValues(). It returns several values for such situation which means an error in OI
if (callComponents.statelessCallbacks.isOldIntersectionIsEmpty(constraints.map { it.type }.cast())) {
markCandidateForCompatibilityResolve()
return
}
}
}
}
internal object CompatibilityOfPartiallyApplicableSamConversion : ResolutionPart() {
override fun ResolutionCandidate.process(workIndex: Int) {
if (resolvedCall.argumentsWithConversion.isEmpty()) return
@@ -19,7 +19,6 @@ import org.jetbrains.kotlin.resolve.calls.components.CheckSuperExpressionCallPar
import org.jetbrains.kotlin.resolve.calls.components.CheckVisibility
import org.jetbrains.kotlin.resolve.calls.components.CollectionTypeVariableUsagesInfo
import org.jetbrains.kotlin.resolve.calls.components.CompatibilityOfPartiallyApplicableSamConversion
import org.jetbrains.kotlin.resolve.calls.components.CompatibilityOfTypeVariableAsIntersectionTypePart
import org.jetbrains.kotlin.resolve.calls.components.CreateFreshVariablesSubstitutor
import org.jetbrains.kotlin.resolve.calls.components.EagerResolveOfCallableReferences
import org.jetbrains.kotlin.resolve.calls.components.MapArguments
@@ -57,7 +56,6 @@ enum class KotlinCallKind(vararg resolutionPart: ResolutionPart) {
CheckArgumentsInParenthesis,
CheckExternalArgument,
EagerResolveOfCallableReferences,
CompatibilityOfTypeVariableAsIntersectionTypePart,
CompatibilityOfPartiallyApplicableSamConversion,
PostponedVariablesInitializerResolutionPart,
CheckContextReceiversResolutionPart,
@@ -72,7 +70,6 @@ enum class KotlinCallKind(vararg resolutionPart: ResolutionPart) {
CollectionTypeVariableUsagesInfo,
CheckReceivers,
CheckCallableReference,
CompatibilityOfTypeVariableAsIntersectionTypePart,
CheckIncompatibleTypeVariableUpperBounds
),
UNSUPPORTED();
@@ -11,7 +11,7 @@ object Scope {
fun <T : Comparable<T>, S : T> greater(x: Bar<in S>, t: T) {}
fun test(b: Bar<Long>) {
<!DEBUG_INFO_CALL("fqName: Scope.greater; typeCall: function")!><!COMPATIBILITY_WARNING!>greater<!>(b, b)<!>
<!DEBUG_INFO_CALL("fqName: Scope.greater; typeCall: function")!>greater(b, b)<!>
}
}
}