From edd7468d5be4847375c4018a83da9802828cdb20 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Thu, 15 Dec 2022 13:26:39 +0200 Subject: [PATCH] [FIR] Get rid of `StoreType` transformer --- ...rCallCompletionResultsWriterTransformer.kt | 2 +- .../transformers/FirTypeResolveTransformer.kt | 4 +-- .../resolve/transformers/TransformUtils.kt | 25 +++++-------------- .../FirDeclarationsResolveTransformer.kt | 6 ++--- 4 files changed, 11 insertions(+), 26 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt index 93a19829660..1653503f2cf 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt @@ -623,7 +623,7 @@ class FirCallCompletionResultsWriterTransformer( if (finalType != null) { if (anonymousFunction.returnTypeRef !is FirImplicitUnitTypeRef) { val resultType = anonymousFunction.returnTypeRef.withReplacedConeType(finalType) - anonymousFunction.transformReturnTypeRef(StoreType, resultType) + anonymousFunction.replaceReturnTypeRef(resultType) } needUpdateLambdaType = true } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt index 7936019a1bf..90600c44214 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt @@ -152,8 +152,8 @@ open class FirTypeResolveTransformer( } private fun setAccessorTypesByPropertyType(property: FirProperty) { - property.getter?.transformReturnTypeRef(StoreType, property.returnTypeRef) - property.setter?.valueParameters?.map { it.transformReturnTypeRef(StoreType, property.returnTypeRef) } + property.getter?.replaceReturnTypeRef(property.returnTypeRef) + property.setter?.valueParameters?.map { it.replaceReturnTypeRef(property.returnTypeRef) } } override fun transformField(field: FirField, data: Any?): FirField = whileAnalysing(field) { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/TransformUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/TransformUtils.kt index f62253e17ea..cb40dfd79a8 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/TransformUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/TransformUtils.kt @@ -6,27 +6,15 @@ package org.jetbrains.kotlin.fir.resolve.transformers import org.jetbrains.kotlin.KtFakeSourceElementKind -import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.copyWithNewSourceKind -import org.jetbrains.kotlin.fir.declarations.FirClass import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration +import org.jetbrains.kotlin.fir.declarations.FirClass import org.jetbrains.kotlin.fir.declarations.FirValueParameter -import org.jetbrains.kotlin.fir.expressions.FirExpression -import org.jetbrains.kotlin.fir.references.* -import org.jetbrains.kotlin.fir.types.* +import org.jetbrains.kotlin.fir.types.ConeKotlinTypeProjectionOut +import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef -import org.jetbrains.kotlin.fir.visitors.FirDefaultTransformer -import org.jetbrains.kotlin.fir.visitors.FirTransformer - -internal object StoreType : FirDefaultTransformer() { - override fun transformElement(element: E, data: FirTypeRef): E { - return element - } - - override fun transformTypeRef(typeRef: FirTypeRef, data: FirTypeRef): FirTypeRef { - return data - } -} +import org.jetbrains.kotlin.fir.types.coneType +import org.jetbrains.kotlin.fir.types.createArrayType internal fun FirValueParameter.transformVarargTypeToArrayType() { if (isVararg) { @@ -44,8 +32,7 @@ internal fun FirCallableDeclaration.transformTypeToArrayType() { ) return val returnType = returnTypeRef.coneType - transformReturnTypeRef( - StoreType, + replaceReturnTypeRef( buildResolvedTypeRef { source = returnTypeRef.source type = ConeKotlinTypeProjectionOut(returnType).createArrayType() diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt index 2bb06b34af9..6ba600c15d6 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt @@ -13,7 +13,6 @@ import org.jetbrains.kotlin.fir.* import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.builder.buildAnonymousFunctionCopy import org.jetbrains.kotlin.fir.declarations.builder.buildContextReceiver -import org.jetbrains.kotlin.fir.declarations.builder.buildReceiverParameterCopy import org.jetbrains.kotlin.fir.declarations.builder.buildValueParameter import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyAccessor @@ -447,7 +446,7 @@ open class FirDeclarationsResolveTransformer(transformer: FirAbstractBodyResolve isSetter -> { val valueParameter = valueParameters.firstOrNull() ?: return if (valueParameter.returnTypeRef is FirImplicitTypeRef) { - valueParameter.transformReturnTypeRef(StoreType, propertyTypeRef) + valueParameter.replaceReturnTypeRef(propertyTypeRef) } } } @@ -1130,8 +1129,7 @@ open class FirDeclarationsResolveTransformer(transformer: FirAbstractBodyResolve override fun transformValueParameter(valueParameter: FirValueParameter, data: Any?): FirStatement = whileAnalysing(valueParameter) { if (valueParameter.returnTypeRef is FirImplicitTypeRef) { - valueParameter.transformReturnTypeRef( - StoreType, + valueParameter.replaceReturnTypeRef( valueParameter.returnTypeRef.resolvedTypeFromPrototype( ConeErrorType( ConeSimpleDiagnostic(