Rename: ConeTypeVariableType.lookupTag -> typeConstructor

This commit is contained in:
Mikhail Glukhikh
2023-11-13 13:29:53 +01:00
committed by Space Team
parent 1ceec4d6d7
commit 53ab32e0fb
15 changed files with 20 additions and 21 deletions
@@ -468,8 +468,8 @@ internal class KtSymbolByFirBuilder(
} }
is ConeTypeVariableType -> { is ConeTypeVariableType -> {
val diagnostic = when ( val typeParameter = coneType.lookupTag.originalTypeParameter) { val diagnostic = when ( val typeParameter = coneType.typeConstructor.originalTypeParameter) {
null -> ConeSimpleDiagnostic("Cannot infer parameter type for ${coneType.lookupTag.debugName}") null -> ConeSimpleDiagnostic("Cannot infer parameter type for ${coneType.typeConstructor.debugName}")
else -> ConeCannotInferTypeParameterType((typeParameter as ConeTypeParameterLookupTag).typeParameterSymbol) else -> ConeCannotInferTypeParameterType((typeParameter as ConeTypeParameterLookupTag).typeParameterSymbol)
} }
buildKtType(ConeErrorType(diagnostic, isUninferredParameter = true, attributes = coneType.attributes)) buildKtType(ConeErrorType(diagnostic, isUninferredParameter = true, attributes = coneType.attributes))
@@ -30,7 +30,7 @@ internal class KtFirTypeErrorType(
override fun tryRenderAsNonErrorType(): String? = withValidityAssertion { override fun tryRenderAsNonErrorType(): String? = withValidityAssertion {
when (val diagnostic = coneType.diagnostic) { when (val diagnostic = coneType.diagnostic) {
is ConeCannotInferTypeParameterType -> diagnostic.typeParameter.name.asString() is ConeCannotInferTypeParameterType -> diagnostic.typeParameter.name.asString()
is ConeTypeVariableTypeIsNotInferred -> diagnostic.typeVariableType.lookupTag.debugName is ConeTypeVariableTypeIsNotInferred -> diagnostic.typeVariableType.typeConstructor.debugName
else -> null else -> null
} }
} }
@@ -839,7 +839,7 @@ fun ConeKotlinType?.collectUpperBounds(): Set<ConeClassLikeType> {
else -> error("missing branch for ${javaClass.name}") else -> error("missing branch for ${javaClass.name}")
} }
is ConeTypeVariableType -> { is ConeTypeVariableType -> {
val symbol = (type.lookupTag.originalTypeParameter as? ConeTypeParameterLookupTag)?.typeParameterSymbol ?: return val symbol = (type.typeConstructor.originalTypeParameter as? ConeTypeParameterLookupTag)?.typeParameterSymbol ?: return
symbol.resolvedBounds.forEach { collect(it.coneType) } symbol.resolvedBounds.forEach { collect(it.coneType) }
} }
is ConeDefinitelyNotNullType -> collect(type.original) is ConeDefinitelyNotNullType -> collect(type.original)
@@ -74,7 +74,7 @@ open class ConeTypeRenderer(
when (type) { when (type) {
is ConeTypeVariableType -> { is ConeTypeVariableType -> {
builder.append("TypeVariable(") builder.append("TypeVariable(")
builder.append(type.lookupTag.name) builder.append(type.typeConstructor.name)
builder.append(")") builder.append(")")
} }
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.types.model.*
class ConeTypeVariableType( class ConeTypeVariableType(
override val nullability: ConeNullability, override val nullability: ConeNullability,
val lookupTag: ConeTypeVariableTypeConstructor, val typeConstructor: ConeTypeVariableTypeConstructor,
override val attributes: ConeAttributes = ConeAttributes.Empty, override val attributes: ConeAttributes = ConeAttributes.Empty,
) : ConeSimpleKotlinType() { ) : ConeSimpleKotlinType() {
override val typeArguments: Array<out ConeTypeProjection> get() = EMPTY_ARRAY override val typeArguments: Array<out ConeTypeProjection> get() = EMPTY_ARRAY
@@ -21,7 +21,7 @@ class ConeTypeVariableType(
if (other !is ConeTypeVariableType) return false if (other !is ConeTypeVariableType) return false
if (nullability != other.nullability) return false if (nullability != other.nullability) return false
if (lookupTag != other.lookupTag) return false if (typeConstructor != other.typeConstructor) return false
return true return true
} }
@@ -29,7 +29,7 @@ class ConeTypeVariableType(
override fun hashCode(): Int { override fun hashCode(): Int {
var result = 0 var result = 0
result = 31 * result + nullability.hashCode() result = 31 * result + nullability.hashCode()
result = 31 * result + lookupTag.hashCode() result = 31 * result + typeConstructor.hashCode()
return result return result
} }
} }
@@ -849,7 +849,7 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
simpleName(type.lookupTag.name) simpleName(type.lookupTag.name)
} }
} }
is ConeTypeVariableType -> resolved { +type.lookupTag.name.asString() } is ConeTypeVariableType -> resolved { +type.typeConstructor.name.asString() }
is ConeFlexibleType -> resolved { generate(type) } is ConeFlexibleType -> resolved { generate(type) }
is ConeCapturedType -> inlineUnsupported(type) is ConeCapturedType -> inlineUnsupported(type)
is ConeDefinitelyNotNullType -> resolved { is ConeDefinitelyNotNullType -> resolved {
@@ -131,7 +131,7 @@ fun ConeKotlinType.findClassRepresentation(
is ConeIntegerLiteralType -> possibleTypes.findClassRepresentationThatIsSubtypeOf(dispatchReceiverParameterType, session) is ConeIntegerLiteralType -> possibleTypes.findClassRepresentationThatIsSubtypeOf(dispatchReceiverParameterType, session)
is ConeIntersectionType -> intersectedTypes.findClassRepresentationThatIsSubtypeOf(dispatchReceiverParameterType, session) is ConeIntersectionType -> intersectedTypes.findClassRepresentationThatIsSubtypeOf(dispatchReceiverParameterType, session)
is ConeTypeParameterType -> lookupTag.findClassRepresentationThatIsSubtypeOf(dispatchReceiverParameterType, session) is ConeTypeParameterType -> lookupTag.findClassRepresentationThatIsSubtypeOf(dispatchReceiverParameterType, session)
is ConeTypeVariableType -> (this.lookupTag.originalTypeParameter as? ConeTypeParameterLookupTag) is ConeTypeVariableType -> (this.typeConstructor.originalTypeParameter as? ConeTypeParameterLookupTag)
?.findClassRepresentationThatIsSubtypeOf(dispatchReceiverParameterType, session) ?.findClassRepresentationThatIsSubtypeOf(dispatchReceiverParameterType, session)
is ConeStubType -> (this.constructor.variable.typeConstructor.originalTypeParameter as? ConeTypeParameterLookupTag) is ConeStubType -> (this.constructor.variable.typeConstructor.originalTypeParameter as? ConeTypeParameterLookupTag)
?.findClassRepresentationThatIsSubtypeOf(dispatchReceiverParameterType, session) ?.findClassRepresentationThatIsSubtypeOf(dispatchReceiverParameterType, session)
@@ -34,7 +34,6 @@ import org.jetbrains.kotlin.types.TypeCheckerState.SupertypesPolicy.LowerIfFlexi
import org.jetbrains.kotlin.types.TypeSystemCommonBackendContext import org.jetbrains.kotlin.types.TypeSystemCommonBackendContext
import org.jetbrains.kotlin.types.model.* import org.jetbrains.kotlin.types.model.*
import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
import org.jetbrains.kotlin.utils.exceptions.withPsiEntry
class ErrorTypeConstructor(val reason: String) : TypeConstructorMarker { class ErrorTypeConstructor(val reason: String) : TypeConstructorMarker {
override fun toString(): String = reason override fun toString(): String = reason
@@ -156,7 +155,7 @@ interface ConeTypeContext : TypeSystemContext, TypeSystemOptimizationContext, Ty
is ConeClassLikeType -> lookupTag is ConeClassLikeType -> lookupTag
is ConeTypeParameterType -> lookupTag is ConeTypeParameterType -> lookupTag
is ConeCapturedType -> constructor is ConeCapturedType -> constructor
is ConeTypeVariableType -> lookupTag is ConeTypeVariableType -> typeConstructor
is ConeIntersectionType -> this is ConeIntersectionType -> this
is ConeStubType -> constructor is ConeStubType -> constructor
is ConeDefinitelyNotNullType -> original.typeConstructor() is ConeDefinitelyNotNullType -> original.typeConstructor()
@@ -492,7 +491,7 @@ interface ConeTypeContext : TypeSystemContext, TypeSystemOptimizationContext, Ty
// And while it seems reasonable to have similar semantics as for stub types, it would make some diagnostic test failing // And while it seems reasonable to have similar semantics as for stub types, it would make some diagnostic test failing
// Thus, we leave the same semantics only for stubs (similar to TypeUtils.isNullableType) // Thus, we leave the same semantics only for stubs (similar to TypeUtils.isNullableType)
is ConeStubType -> { is ConeStubType -> {
val symbol = (this.constructor.variable.defaultType.lookupTag.originalTypeParameter as? ConeTypeParameterLookupTag)?.symbol val symbol = (this.constructor.variable.defaultType.typeConstructor.originalTypeParameter as? ConeTypeParameterLookupTag)?.symbol
symbol == null || symbol.allBoundsAreNullableOrUnresolved() symbol == null || symbol.allBoundsAreNullableOrUnresolved()
} }
is ConeIntersectionType -> intersectedTypes.all { it.isNullableType() } is ConeIntersectionType -> intersectedTypes.all { it.isNullableType() }
@@ -236,7 +236,7 @@ fun <T : ConeKotlinType> T.withAttributes(attributes: ConeAttributes): T {
is ConeRawType -> ConeRawType.create(lowerBound.withAttributes(attributes), upperBound.withAttributes(attributes)) is ConeRawType -> ConeRawType.create(lowerBound.withAttributes(attributes), upperBound.withAttributes(attributes))
is ConeDynamicType -> ConeDynamicType(lowerBound.withAttributes(attributes), upperBound.withAttributes(attributes)) is ConeDynamicType -> ConeDynamicType(lowerBound.withAttributes(attributes), upperBound.withAttributes(attributes))
is ConeFlexibleType -> ConeFlexibleType(lowerBound.withAttributes(attributes), upperBound.withAttributes(attributes)) is ConeFlexibleType -> ConeFlexibleType(lowerBound.withAttributes(attributes), upperBound.withAttributes(attributes))
is ConeTypeVariableType -> ConeTypeVariableType(nullability, lookupTag, attributes) is ConeTypeVariableType -> ConeTypeVariableType(nullability, typeConstructor, attributes)
is ConeCapturedType -> ConeCapturedType( is ConeCapturedType -> ConeCapturedType(
captureStatus, lowerType, nullability, constructor, attributes, isProjectionNotNull, captureStatus, lowerType, nullability, constructor, attributes, isProjectionNotNull,
) )
@@ -285,7 +285,7 @@ fun <T : ConeKotlinType> T.withNullability(
) )
} }
is ConeTypeVariableType -> ConeTypeVariableType(nullability, lookupTag, theAttributes) is ConeTypeVariableType -> ConeTypeVariableType(nullability, typeConstructor, theAttributes)
is ConeCapturedType -> ConeCapturedType(captureStatus, lowerType, nullability, constructor, theAttributes) is ConeCapturedType -> ConeCapturedType(captureStatus, lowerType, nullability, constructor, theAttributes)
is ConeIntersectionType -> when (nullability) { is ConeIntersectionType -> when (nullability) {
ConeNullability.NULLABLE -> this.mapTypes { ConeNullability.NULLABLE -> this.mapTypes {
@@ -353,7 +353,7 @@ private fun checkApplicabilityForArgumentType(
fun tryGetConeTypeThatCompatibleWithKtType(type: ConeKotlinType): ConeKotlinType { fun tryGetConeTypeThatCompatibleWithKtType(type: ConeKotlinType): ConeKotlinType {
if (type is ConeTypeVariableType) { if (type is ConeTypeVariableType) {
val lookupTag = type.lookupTag val lookupTag = type.typeConstructor
val constraints = csBuilder.currentStorage().notFixedTypeVariables[lookupTag]?.constraints val constraints = csBuilder.currentStorage().notFixedTypeVariables[lookupTag]?.constraints
val constraintTypes = constraints?.mapNotNull { it.type as? ConeKotlinType } val constraintTypes = constraints?.mapNotNull { it.type as? ConeKotlinType }
@@ -84,7 +84,7 @@ internal object CheckCallableReferenceExpectedType : CheckerStage() {
val position = ConeArgumentConstraintPosition(callInfo.callSite) val position = ConeArgumentConstraintPosition(callInfo.callSite)
if (expectedType != null && !resultingType.contains { if (expectedType != null && !resultingType.contains {
it is ConeTypeVariableType && it.lookupTag !in outerCsBuilder.currentStorage().allTypeVariables it is ConeTypeVariableType && it.typeConstructor !in outerCsBuilder.currentStorage().allTypeVariables
} }
) { ) {
addSubtypeConstraint(resultingType, expectedType, position) addSubtypeConstraint(resultingType, expectedType, position)
@@ -449,7 +449,7 @@ open class FirDeclarationsResolveTransformer(
// Substitut type parameter to type variable // Substitut type parameter to type variable
.let(candidate.substitutor::substituteOrSelf) .let(candidate.substitutor::substituteOrSelf)
.unwrapTopLevelVariableType() ?: return null .unwrapTopLevelVariableType() ?: return null
val typeVariable = returnTypeBasedOnVariable.lookupTag val typeVariable = returnTypeBasedOnVariable.typeConstructor
val candidateSystem = candidate.system val candidateSystem = candidate.system
val candidateStorage = candidateSystem.currentStorage() val candidateStorage = candidateSystem.currentStorage()
@@ -23,7 +23,7 @@ private class TypeVariableTypeRemovingSubstitutor(typeContext: ConeTypeContext)
} }
private fun convertTypeVariableType(type: ConeTypeVariableType): ConeKotlinType { private fun convertTypeVariableType(type: ConeTypeVariableType): ConeKotlinType {
val originalTypeParameter = type.lookupTag.originalTypeParameter val originalTypeParameter = type.typeConstructor.originalTypeParameter
if (originalTypeParameter != null) { if (originalTypeParameter != null) {
check(originalTypeParameter is ConeTypeParameterLookupTag) check(originalTypeParameter is ConeTypeParameterLookupTag)
return ConeTypeParameterTypeImpl(originalTypeParameter, type.isNullable, type.attributes) return ConeTypeParameterTypeImpl(originalTypeParameter, type.isNullable, type.attributes)
@@ -43,7 +43,7 @@ class ConeCannotInferReceiverParameterType(
class ConeTypeVariableTypeIsNotInferred( class ConeTypeVariableTypeIsNotInferred(
val typeVariableType: ConeTypeVariableType, val typeVariableType: ConeTypeVariableType,
override val reason: String = "Type for ${typeVariableType.lookupTag.debugName} is not inferred" override val reason: String = "Type for ${typeVariableType.typeConstructor.debugName} is not inferred"
) : ConeDiagnostic ) : ConeDiagnostic
class ConeUnderscoreUsageWithoutBackticks(source: KtSourceElement) : ConeDiagnosticWithSource(source) { class ConeUnderscoreUsageWithoutBackticks(source: KtSourceElement) : ConeDiagnosticWithSource(source) {
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.fir.types.*
fun ConeKotlinType.renderForDebugInfo(): String { fun ConeKotlinType.renderForDebugInfo(): String {
val nullabilitySuffix = if (this !is ConeErrorType && this !is ConeErrorType) nullability.suffix else "" val nullabilitySuffix = if (this !is ConeErrorType && this !is ConeErrorType) nullability.suffix else ""
return when (this) { return when (this) {
is ConeTypeVariableType -> "TypeVariable(${this.lookupTag.name})" is ConeTypeVariableType -> "TypeVariable(${this.typeConstructor.name})"
is ConeDefinitelyNotNullType -> "${original.renderForDebugInfo()}!!" is ConeDefinitelyNotNullType -> "${original.renderForDebugInfo()}!!"
is ConeErrorType -> "ERROR CLASS: ${diagnostic.reason}" is ConeErrorType -> "ERROR CLASS: ${diagnostic.reason}"
is ConeCapturedType -> "CapturedType(${constructor.projection.renderForDebugInfo()})" is ConeCapturedType -> "CapturedType(${constructor.projection.renderForDebugInfo()})"