From edbf199f847b6c3817ff637f77391b383ee618a3 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Mon, 3 Oct 2022 16:32:53 +0300 Subject: [PATCH] [FIR] Remove redundant lookupTag from AbstractConeSubstitutor.substituteArgument --- .../checkers/FirInconsistentTypeParameterHelpers.kt | 8 +++----- .../analysis/checkers/FirUpperBoundViolatedHelpers.kt | 5 ++--- .../jetbrains/kotlin/fir/resolve/TypeExpansionUtils.kt | 10 ++-------- .../kotlin/fir/resolve/substitution/Substitutors.kt | 5 ++--- 4 files changed, 9 insertions(+), 19 deletions(-) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirInconsistentTypeParameterHelpers.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirInconsistentTypeParameterHelpers.kt index 27afcd5db02..109f7ea1f28 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirInconsistentTypeParameterHelpers.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirInconsistentTypeParameterHelpers.kt @@ -69,11 +69,9 @@ private fun buildDeepSubstitutionMultimap( for (index in 0 until count) { val typeArgument = typeArguments[index] - val substitutedArgument = ConeSubstitutorByMap(substitution, session).substituteArgument( - typeArgument, - classSymbol.toLookupTag(), - index - ) ?: typeArgument + val substitutedArgument = ConeSubstitutorByMap(substitution, session) + .substituteArgument(typeArgument, index) + ?: typeArgument val substitutedType = substitutedArgument.type ?: continue val typeParameterSymbol = typeParameterSymbols[index] diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirUpperBoundViolatedHelpers.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirUpperBoundViolatedHelpers.kt index 39876d444c5..2b481492c7d 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirUpperBoundViolatedHelpers.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirUpperBoundViolatedHelpers.kt @@ -16,7 +16,6 @@ import org.jetbrains.kotlin.fir.resolve.substitution.AbstractConeSubstitutor import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor import org.jetbrains.kotlin.fir.resolve.toSymbol import org.jetbrains.kotlin.fir.resolve.withCombinedAttributesFrom -import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol import org.jetbrains.kotlin.fir.types.* @@ -105,8 +104,8 @@ private class FE10LikeConeSubstitutor( return withAttributes(ConeAttributes.create(listOf(OriginalProjectionTypeAttribute(projection)))) } - override fun substituteArgument(projection: ConeTypeProjection, lookupTag: ConeClassLikeLookupTag, index: Int): ConeTypeProjection? { - val substitutedProjection = super.substituteArgument(projection, lookupTag, index) ?: return null + override fun substituteArgument(projection: ConeTypeProjection, index: Int): ConeTypeProjection? { + val substitutedProjection = super.substituteArgument(projection, index) ?: return null if (substitutedProjection.isStarProjection) return null val type = substitutedProjection.type!! diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/TypeExpansionUtils.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/TypeExpansionUtils.kt index c329b08a130..c5b89891e90 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/TypeExpansionUtils.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/TypeExpansionUtils.kt @@ -10,7 +10,6 @@ import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.declarations.FirTypeAlias import org.jetbrains.kotlin.fir.declarations.utils.expandedConeType import org.jetbrains.kotlin.fir.resolve.substitution.AbstractConeSubstitutor -import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol import org.jetbrains.kotlin.fir.types.* @@ -116,18 +115,13 @@ private fun mapTypeAliasArguments( return null } - override fun substituteArgument( - projection: ConeTypeProjection, - lookupTag: ConeClassLikeLookupTag, - index: Int - ): ConeTypeProjection? { + override fun substituteArgument(projection: ConeTypeProjection, index: Int): ConeTypeProjection? { val type = (projection as? ConeKotlinTypeProjection)?.type ?: return null val symbol = (type as? ConeTypeParameterType)?.lookupTag?.symbol ?: return super.substituteArgument( projection, - lookupTag, index ) - val mappedProjection = typeAliasMap[symbol] ?: return super.substituteArgument(projection, lookupTag, index) + val mappedProjection = typeAliasMap[symbol] ?: return super.substituteArgument(projection, index) var mappedType = (mappedProjection as? ConeKotlinTypeProjection)?.type.updateNullabilityIfNeeded(type) mappedType = when (mappedType) { is ConeErrorType, diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/substitution/Substitutors.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/substitution/Substitutors.kt index c9ceae3a883..6a5314776ac 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/substitution/Substitutors.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/substitution/Substitutors.kt @@ -11,7 +11,6 @@ import org.jetbrains.kotlin.fir.diagnostics.DiagnosticKind import org.jetbrains.kotlin.fir.resolve.fullyExpandedType import org.jetbrains.kotlin.fir.resolve.toFirRegularClassSymbol import org.jetbrains.kotlin.fir.resolve.withCombinedAttributesFrom -import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl @@ -36,7 +35,7 @@ abstract class AbstractConeSubstitutor(protected val typeContext: ConeTypeContex } abstract fun substituteType(type: ConeKotlinType): ConeKotlinType? - open fun substituteArgument(projection: ConeTypeProjection, lookupTag: ConeClassLikeLookupTag, index: Int): ConeTypeProjection? { + open fun substituteArgument(projection: ConeTypeProjection, index: Int): ConeTypeProjection? { val type = (projection as? ConeKotlinTypeProjection)?.type ?: return null val newType = substituteOrNull(type) ?: return null return wrapProjection(projection, newType) @@ -139,7 +138,7 @@ abstract class AbstractConeSubstitutor(protected val typeContext: ConeTypeContex require(this is ConeClassLikeType) { "Unknown type to substitute: $this, ${this::class}" } for ((index, typeArgument) in this.typeArguments.withIndex()) { - newArguments[index] = substituteArgument(typeArgument, lookupTag, index)?.also { + newArguments[index] = substituteArgument(typeArgument, index)?.also { initialized = true } }