[FIR] Get rid of StoreType transformer

This commit is contained in:
Dmitriy Novozhilov
2022-12-15 13:26:39 +02:00
committed by Space Team
parent 4ba92f66c0
commit edd7468d5b
4 changed files with 11 additions and 26 deletions
@@ -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
}
@@ -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) {
@@ -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<FirTypeRef>() {
override fun <E : FirElement> 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()
@@ -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(