Remove effectively dead code in AbstractTypeCheckerContext
This commit is contained in:
@@ -6,7 +6,6 @@
|
|||||||
package org.jetbrains.kotlin.types
|
package org.jetbrains.kotlin.types
|
||||||
|
|
||||||
import org.jetbrains.kotlin.types.AbstractTypeCheckerContext.LowerCapturedTypePolicy.*
|
import org.jetbrains.kotlin.types.AbstractTypeCheckerContext.LowerCapturedTypePolicy.*
|
||||||
import org.jetbrains.kotlin.types.AbstractTypeCheckerContext.SeveralSupertypesWithSameConstructorPolicy
|
|
||||||
import org.jetbrains.kotlin.types.AbstractTypeCheckerContext.SupertypesPolicy
|
import org.jetbrains.kotlin.types.AbstractTypeCheckerContext.SupertypesPolicy
|
||||||
import org.jetbrains.kotlin.types.model.*
|
import org.jetbrains.kotlin.types.model.*
|
||||||
import org.jetbrains.kotlin.utils.SmartList
|
import org.jetbrains.kotlin.utils.SmartList
|
||||||
@@ -49,14 +48,6 @@ abstract class AbstractTypeCheckerContext : TypeSystemContext {
|
|||||||
|
|
||||||
open fun getLowerCapturedTypePolicy(subType: SimpleTypeMarker, superType: CapturedTypeMarker): LowerCapturedTypePolicy = CHECK_SUBTYPE_AND_LOWER
|
open fun getLowerCapturedTypePolicy(subType: SimpleTypeMarker, superType: CapturedTypeMarker): LowerCapturedTypePolicy = CHECK_SUBTYPE_AND_LOWER
|
||||||
open fun addSubtypeConstraint(subType: KotlinTypeMarker, superType: KotlinTypeMarker): Boolean? = null
|
open fun addSubtypeConstraint(subType: KotlinTypeMarker, superType: KotlinTypeMarker): Boolean? = null
|
||||||
open val sameConstructorPolicy get() = SeveralSupertypesWithSameConstructorPolicy.INTERSECT_ARGUMENTS_AND_CHECK_AGAIN
|
|
||||||
|
|
||||||
enum class SeveralSupertypesWithSameConstructorPolicy {
|
|
||||||
TAKE_FIRST_FOR_SUBTYPING,
|
|
||||||
FORCE_NOT_SUBTYPE,
|
|
||||||
CHECK_ANY_OF_THEM,
|
|
||||||
INTERSECT_ARGUMENTS_AND_CHECK_AGAIN
|
|
||||||
}
|
|
||||||
|
|
||||||
enum class LowerCapturedTypePolicy {
|
enum class LowerCapturedTypePolicy {
|
||||||
CHECK_ONLY_LOWER,
|
CHECK_ONLY_LOWER,
|
||||||
@@ -278,20 +269,7 @@ object AbstractTypeChecker {
|
|||||||
1 -> return isSubtypeForSameConstructor(supertypesWithSameConstructor.first().asArgumentList(), superType)
|
1 -> return isSubtypeForSameConstructor(supertypesWithSameConstructor.first().asArgumentList(), superType)
|
||||||
|
|
||||||
else -> { // at least 2 supertypes with same constructors. Such case is rare
|
else -> { // at least 2 supertypes with same constructors. Such case is rare
|
||||||
when (sameConstructorPolicy) {
|
if (supertypesWithSameConstructor.any { isSubtypeForSameConstructor(it.asArgumentList(), superType) }) return true
|
||||||
SeveralSupertypesWithSameConstructorPolicy.FORCE_NOT_SUBTYPE -> return false
|
|
||||||
SeveralSupertypesWithSameConstructorPolicy.TAKE_FIRST_FOR_SUBTYPING -> return isSubtypeForSameConstructor(
|
|
||||||
supertypesWithSameConstructor.first().asArgumentList(),
|
|
||||||
superType
|
|
||||||
)
|
|
||||||
|
|
||||||
SeveralSupertypesWithSameConstructorPolicy.CHECK_ANY_OF_THEM,
|
|
||||||
SeveralSupertypesWithSameConstructorPolicy.INTERSECT_ARGUMENTS_AND_CHECK_AGAIN ->
|
|
||||||
if (supertypesWithSameConstructor.any { isSubtypeForSameConstructor(it.asArgumentList(), superType) }) return true
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sameConstructorPolicy != SeveralSupertypesWithSameConstructorPolicy.INTERSECT_ARGUMENTS_AND_CHECK_AGAIN) return false
|
|
||||||
|
|
||||||
|
|
||||||
val newArguments = ArgumentList(superConstructor.parametersCount())
|
val newArguments = ArgumentList(superConstructor.parametersCount())
|
||||||
for (index in 0 until superConstructor.parametersCount()) {
|
for (index in 0 until superConstructor.parametersCount()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user