Remove all type system-specific inheritors of TypeCheckerState

This commit is contained in:
Dmitriy Novozhilov
2021-08-25 14:20:08 +03:00
parent 3f6738c8bc
commit 7e6e0a3dd6
22 changed files with 193 additions and 173 deletions
@@ -5,7 +5,6 @@
package org.jetbrains.kotlin.types
import org.jetbrains.kotlin.descriptors.containerRelation
import org.jetbrains.kotlin.types.TypeCheckerState.LowerCapturedTypePolicy.*
import org.jetbrains.kotlin.types.TypeCheckerState.SupertypesPolicy
import org.jetbrains.kotlin.types.model.*
@@ -22,14 +21,14 @@ import java.util.*
* Once some type-checker operation is performed using a [TypeCheckerProviderContext], for example a [AbstractTypeChecker.isSubtypeOf],
* new instance of particular [TypeCheckerState] should be created, with properly specified type system context
*/
abstract class TypeCheckerState {
abstract val kotlinTypePreparator: AbstractTypePreparator
abstract val kotlinTypeRefiner: AbstractTypeRefiner
abstract val typeSystemContext: TypeSystemContext
abstract val allowedTypeVariable: Boolean
open class TypeCheckerState(
val isErrorTypeEqualsToAnything: Boolean,
val isStubTypeEqualsToAnything: Boolean,
val allowedTypeVariable: Boolean,
val typeSystemContext: TypeSystemContext,
val kotlinTypePreparator: AbstractTypePreparator,
val kotlinTypeRefiner: AbstractTypeRefiner
) {
@OptIn(TypeRefinement::class)
fun refineType(type: KotlinTypeMarker): KotlinTypeMarker {
return kotlinTypeRefiner.refineType(type)
@@ -41,10 +40,6 @@ abstract class TypeCheckerState {
open fun customIsSubtypeOf(subType: KotlinTypeMarker, superType: KotlinTypeMarker): Boolean = true
abstract val isErrorTypeEqualsToAnything: Boolean
abstract val isStubTypeEqualsToAnything: Boolean
protected var argumentsDepth = 0
internal inline fun <T> runWithArgumentsSettings(subArgument: KotlinTypeMarker, f: TypeCheckerState.() -> T): T {