From 7223cd1bf32b1dc0b7e79b8f36933cfe3bf05b80 Mon Sep 17 00:00:00 2001 From: Kirill Rakhman Date: Fri, 4 Aug 2023 10:38:38 +0200 Subject: [PATCH] [FIR] Update custom FIR implementations after FirExpression.coneTypeOrNull introduction #KT-59855 --- .../FirAnonymousFunctionExpressionBuilder.kt | 7 ++-- .../FirAnonymousObjectExpressionBuilder.kt | 7 ++-- .../builder/FirConstExpressionBuilder.kt | 33 ++++++++++--------- .../FirAnonymousFunctionExpressionImpl.kt | 12 ++++--- .../impl/FirAnonymousObjectExpressionImpl.kt | 14 +++----- .../expressions/impl/FirContractCallBlock.kt | 12 ++++--- .../impl/FirNoReceiverExpression.kt | 7 ++-- .../impl/FirSingleExpressionBlock.kt | 10 +++--- .../fir/types/impl/FirErrorTypeRefImpl.kt | 4 +-- .../types/impl/FirImplicitBuiltinTypeRef.kt | 3 -- 10 files changed, 49 insertions(+), 60 deletions(-) diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/builder/FirAnonymousFunctionExpressionBuilder.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/builder/FirAnonymousFunctionExpressionBuilder.kt index 70f3867b18c..19c70c0df0e 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/builder/FirAnonymousFunctionExpressionBuilder.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/builder/FirAnonymousFunctionExpressionBuilder.kt @@ -12,7 +12,7 @@ import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction import org.jetbrains.kotlin.fir.expressions.FirAnnotation import org.jetbrains.kotlin.fir.expressions.FirAnonymousFunctionExpression import org.jetbrains.kotlin.fir.expressions.impl.FirAnonymousFunctionExpressionImpl -import org.jetbrains.kotlin.fir.types.FirTypeRef +import org.jetbrains.kotlin.fir.types.ConeKotlinType import kotlin.contracts.ExperimentalContracts import kotlin.contracts.InvocationKind import kotlin.contracts.contract @@ -29,9 +29,8 @@ class FirAnonymousFunctionExpressionBuilder : FirAnnotationContainerBuilder, Fir ) } - - @Deprecated("Modification of 'typeRef' has no impact for FirAnonymousFunctionExpressionBuilder", level = DeprecationLevel.HIDDEN) - override var typeRef: FirTypeRef + @Deprecated("Modification of 'coneTypeOrNull' has no impact for FirAnonymousFunctionExpressionBuilder", level = DeprecationLevel.HIDDEN) + override var coneTypeOrNull: ConeKotlinType? get() = throw IllegalStateException() set(_) { throw IllegalStateException() diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/builder/FirAnonymousObjectExpressionBuilder.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/builder/FirAnonymousObjectExpressionBuilder.kt index dfb9da57f62..d6227447252 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/builder/FirAnonymousObjectExpressionBuilder.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/builder/FirAnonymousObjectExpressionBuilder.kt @@ -12,8 +12,7 @@ import org.jetbrains.kotlin.fir.declarations.FirAnonymousObject import org.jetbrains.kotlin.fir.expressions.FirAnnotation import org.jetbrains.kotlin.fir.expressions.FirAnonymousObjectExpression import org.jetbrains.kotlin.fir.expressions.impl.FirAnonymousObjectExpressionImpl -import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImplWithoutSource -import org.jetbrains.kotlin.fir.types.FirTypeRef +import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.utils.addToStdlib.shouldNotBeCalled import kotlin.contracts.ExperimentalContracts import kotlin.contracts.contract @@ -21,7 +20,7 @@ import kotlin.contracts.contract @FirBuilderDsl class FirAnonymousObjectExpressionBuilder : FirAnnotationContainerBuilder, FirExpressionBuilder { override var source: KtSourceElement? = null - override var typeRef: FirTypeRef = FirImplicitTypeRefImplWithoutSource + override var coneTypeOrNull: ConeKotlinType? = null lateinit var anonymousObject: FirAnonymousObject override val annotations: MutableList @@ -30,7 +29,7 @@ class FirAnonymousObjectExpressionBuilder : FirAnnotationContainerBuilder, FirEx override fun build(): FirAnonymousObjectExpression { return FirAnonymousObjectExpressionImpl( source, - typeRef, + coneTypeOrNull, anonymousObject, ) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/builder/FirConstExpressionBuilder.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/builder/FirConstExpressionBuilder.kt index da5b3640950..a56b9f5f4eb 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/builder/FirConstExpressionBuilder.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/builder/FirConstExpressionBuilder.kt @@ -10,7 +10,8 @@ import org.jetbrains.kotlin.fir.builder.toMutableOrEmpty import org.jetbrains.kotlin.fir.expressions.FirAnnotation import org.jetbrains.kotlin.fir.expressions.FirConstExpression import org.jetbrains.kotlin.fir.expressions.impl.FirConstExpressionImpl -import org.jetbrains.kotlin.fir.types.impl.* +import org.jetbrains.kotlin.fir.types.constructClassLikeType +import org.jetbrains.kotlin.name.StandardClassIds import org.jetbrains.kotlin.types.ConstantValueKind fun buildConstExpression( @@ -20,23 +21,23 @@ fun buildConstExpression( annotations: MutableList = mutableListOf(), setType: Boolean ): FirConstExpression { - return FirConstExpressionImpl(source, annotations.toMutableOrEmpty(), kind, value).also { + return FirConstExpressionImpl(source, null, annotations.toMutableOrEmpty(), kind, value).also { if (setType) { when (kind) { - ConstantValueKind.Boolean -> it.typeRef = FirImplicitBooleanTypeRef(null) - ConstantValueKind.Byte -> it.typeRef = FirImplicitByteTypeRef(null) - ConstantValueKind.Char -> it.typeRef = FirImplicitCharTypeRef(null) - ConstantValueKind.Double -> it.typeRef = FirImplicitDoubleTypeRef(null) - ConstantValueKind.Float -> it.typeRef = FirImplicitFloatTypeRef(null) - ConstantValueKind.Int -> it.typeRef = FirImplicitIntTypeRef(null) - ConstantValueKind.Long -> it.typeRef = FirImplicitLongTypeRef(null) - ConstantValueKind.Null -> it.typeRef = FirImplicitNullableAnyTypeRef(null) - ConstantValueKind.Short -> it.typeRef = FirImplicitShortTypeRef(null) - ConstantValueKind.String -> it.typeRef = FirImplicitStringTypeRef(null) - ConstantValueKind.UnsignedByte -> it.typeRef = FirImplicitUByteTypeRef(null) - ConstantValueKind.UnsignedInt -> it.typeRef = FirImplicitUIntTypeRef(null) - ConstantValueKind.UnsignedLong -> it.typeRef = FirImplicitULongTypeRef(null) - ConstantValueKind.UnsignedShort -> it.typeRef = FirImplicitUShortTypeRef(null) + ConstantValueKind.Boolean -> it.type = StandardClassIds.Boolean.constructClassLikeType() + ConstantValueKind.Byte -> it.type = StandardClassIds.Byte.constructClassLikeType() + ConstantValueKind.Char -> it.type = StandardClassIds.Char.constructClassLikeType() + ConstantValueKind.Double -> it.type = StandardClassIds.Double.constructClassLikeType() + ConstantValueKind.Float -> it.type = StandardClassIds.Float.constructClassLikeType() + ConstantValueKind.Int -> it.type = StandardClassIds.Int.constructClassLikeType() + ConstantValueKind.Long -> it.type = StandardClassIds.Long.constructClassLikeType() + ConstantValueKind.Null -> it.type = StandardClassIds.Any.constructClassLikeType(isNullable = true) + ConstantValueKind.Short -> it.type = StandardClassIds.Short.constructClassLikeType() + ConstantValueKind.String -> it.type = StandardClassIds.String.constructClassLikeType() + ConstantValueKind.UnsignedByte -> it.type = StandardClassIds.UByte.constructClassLikeType() + ConstantValueKind.UnsignedInt -> it.type = StandardClassIds.UInt.constructClassLikeType() + ConstantValueKind.UnsignedLong -> it.type = StandardClassIds.ULong.constructClassLikeType() + ConstantValueKind.UnsignedShort -> it.type = StandardClassIds.UShort.constructClassLikeType() ConstantValueKind.IntegerLiteral, ConstantValueKind.UnsignedIntegerLiteral, ConstantValueKind.Error, diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirAnonymousFunctionExpressionImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirAnonymousFunctionExpressionImpl.kt index 3f8ed98fd8a..343477a9a9a 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirAnonymousFunctionExpressionImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirAnonymousFunctionExpressionImpl.kt @@ -9,16 +9,18 @@ import org.jetbrains.kotlin.KtSourceElement import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction import org.jetbrains.kotlin.fir.expressions.FirAnnotation import org.jetbrains.kotlin.fir.expressions.FirAnonymousFunctionExpression -import org.jetbrains.kotlin.fir.types.FirTypeRef +import org.jetbrains.kotlin.fir.types.ConeKotlinType +import org.jetbrains.kotlin.fir.types.coneTypeOrNull import org.jetbrains.kotlin.fir.visitors.FirTransformer import org.jetbrains.kotlin.fir.visitors.FirVisitor +import org.jetbrains.kotlin.utils.addToStdlib.shouldNotBeCalled internal class FirAnonymousFunctionExpressionImpl( override val source: KtSourceElement?, override var anonymousFunction: FirAnonymousFunction ) : FirAnonymousFunctionExpression() { - override val typeRef: FirTypeRef - get() = anonymousFunction.typeRef + override val coneTypeOrNull: ConeKotlinType? + get() = anonymousFunction.typeRef.coneTypeOrNull override val annotations: List get() = anonymousFunction.annotations @@ -44,7 +46,7 @@ internal class FirAnonymousFunctionExpressionImpl( return this } - override fun replaceTypeRef(newTypeRef: FirTypeRef) { - anonymousFunction.replaceTypeRef(newTypeRef) + override fun replaceConeTypeOrNull(newConeTypeOrNull: ConeKotlinType?) { + shouldNotBeCalled("anonymousFunction.replaceTypeRef() should be called instead") } } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirAnonymousObjectExpressionImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirAnonymousObjectExpressionImpl.kt index 8d78d989430..fb69cd0631b 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirAnonymousObjectExpressionImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirAnonymousObjectExpressionImpl.kt @@ -9,30 +9,24 @@ import org.jetbrains.kotlin.KtSourceElement import org.jetbrains.kotlin.fir.declarations.FirAnonymousObject import org.jetbrains.kotlin.fir.expressions.FirAnnotation import org.jetbrains.kotlin.fir.expressions.FirAnonymousObjectExpression +import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.FirTransformer import org.jetbrains.kotlin.fir.visitors.FirVisitor -/* - * This file was generated automatically - * DO NOT MODIFY IT MANUALLY - */ - internal class FirAnonymousObjectExpressionImpl( override val source: KtSourceElement?, - override var typeRef: FirTypeRef, + override var coneTypeOrNull: ConeKotlinType?, override var anonymousObject: FirAnonymousObject, ) : FirAnonymousObjectExpression() { override val annotations: List get() = anonymousObject.annotations override fun acceptChildren(visitor: FirVisitor, data: D) { - typeRef.accept(visitor, data) anonymousObject.accept(visitor, data) } override fun transformChildren(transformer: FirTransformer, data: D): FirAnonymousObjectExpressionImpl { - typeRef = typeRef.transform(transformer, data) transformAnonymousObject(transformer, data) return this } @@ -50,7 +44,7 @@ internal class FirAnonymousObjectExpressionImpl( return this } - override fun replaceTypeRef(newTypeRef: FirTypeRef) { - typeRef = newTypeRef + override fun replaceConeTypeOrNull(newConeTypeOrNull: ConeKotlinType?) { + coneTypeOrNull = newConeTypeOrNull } } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirContractCallBlock.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirContractCallBlock.kt index 07457c774e5..7fff645c1e7 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirContractCallBlock.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirContractCallBlock.kt @@ -14,6 +14,7 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotation import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.expressions.FirFunctionCall import org.jetbrains.kotlin.fir.expressions.FirStatement +import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImplWithoutSource import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.FirTransformer @@ -28,12 +29,12 @@ class FirContractCallBlock(var call: FirFunctionCall) : FirBlock() { override val statements: List get() = listOf(call) + override var annotations: MutableOrEmptyList = MutableOrEmptyList.empty() - override var typeRef: FirTypeRef = FirImplicitTypeRefImplWithoutSource + override var coneTypeOrNull: ConeKotlinType? = null override fun acceptChildren(visitor: FirVisitor, data: D) { call.accept(visitor, data) - typeRef.accept(visitor, data) } override fun transformChildren(transformer: FirTransformer, data: D): FirContractCallBlock { @@ -42,8 +43,8 @@ class FirContractCallBlock(var call: FirFunctionCall) : FirBlock() { return this } - override fun replaceTypeRef(newTypeRef: FirTypeRef) { - typeRef = newTypeRef + override fun replaceConeTypeOrNull(newConeTypeOrNull: ConeKotlinType?) { + coneTypeOrNull = newConeTypeOrNull } override fun transformStatements(transformer: FirTransformer, data: D): FirBlock { @@ -52,7 +53,6 @@ class FirContractCallBlock(var call: FirFunctionCall) : FirBlock() { } override fun transformOtherChildren(transformer: FirTransformer, data: D): FirBlock { - typeRef = typeRef.transformSingle(transformer, data) return this } @@ -64,4 +64,6 @@ class FirContractCallBlock(var call: FirFunctionCall) : FirBlock() { annotations.transformInplace(transformer, data) return this } + + } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirNoReceiverExpression.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirNoReceiverExpression.kt index 9e2648e8e84..67fc6977624 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirNoReceiverExpression.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirNoReceiverExpression.kt @@ -8,14 +8,13 @@ package org.jetbrains.kotlin.fir.expressions.impl import org.jetbrains.kotlin.KtSourceElement import org.jetbrains.kotlin.fir.expressions.FirAnnotation import org.jetbrains.kotlin.fir.expressions.FirExpression -import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImplWithoutSource -import org.jetbrains.kotlin.fir.types.FirTypeRef +import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.visitors.FirTransformer import org.jetbrains.kotlin.fir.visitors.FirVisitor object FirNoReceiverExpression : FirExpression() { override val source: KtSourceElement? get() = null - override val typeRef: FirTypeRef = FirImplicitTypeRefImplWithoutSource + override val coneTypeOrNull: ConeKotlinType? get() = null override val annotations: List get() = emptyList() override fun acceptChildren(visitor: FirVisitor, data: D) {} @@ -32,5 +31,5 @@ object FirNoReceiverExpression : FirExpression() { return this } - override fun replaceTypeRef(newTypeRef: FirTypeRef) {} + override fun replaceConeTypeOrNull(newConeTypeOrNull: ConeKotlinType?) {} } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirSingleExpressionBlock.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirSingleExpressionBlock.kt index 68d82438992..dce6826aa0b 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirSingleExpressionBlock.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirSingleExpressionBlock.kt @@ -13,6 +13,7 @@ import org.jetbrains.kotlin.fir.builder.toMutableOrEmpty import org.jetbrains.kotlin.fir.expressions.FirAnnotation import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.expressions.FirStatement +import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImplWithoutSource import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.FirTransformer @@ -27,12 +28,11 @@ class FirSingleExpressionBlock( get() = statement.source?.fakeElement(KtFakeSourceElementKind.SingleExpressionBlock) override var annotations: MutableOrEmptyList = MutableOrEmptyList.empty() override val statements: List get() = listOf(statement) - override var typeRef: FirTypeRef = FirImplicitTypeRefImplWithoutSource + override var coneTypeOrNull: ConeKotlinType? = null override fun acceptChildren(visitor: FirVisitor, data: D) { annotations.forEach { it.accept(visitor, data) } statement.accept(visitor, data) - typeRef.accept(visitor, data) } override fun transformChildren(transformer: FirTransformer, data: D): FirSingleExpressionBlock { @@ -41,10 +41,9 @@ class FirSingleExpressionBlock( return this } - override fun replaceTypeRef(newTypeRef: FirTypeRef) { - typeRef = newTypeRef + override fun replaceConeTypeOrNull(newConeTypeOrNull: ConeKotlinType?) { + coneTypeOrNull = newConeTypeOrNull } - override fun transformStatements(transformer: FirTransformer, data: D): FirBlock { statement = statement.transformSingle(transformer, data) return this @@ -52,7 +51,6 @@ class FirSingleExpressionBlock( override fun transformOtherChildren(transformer: FirTransformer, data: D): FirBlock { transformAnnotations(transformer, data) - typeRef = typeRef.transformSingle(transformer, data) return this } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirErrorTypeRefImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirErrorTypeRefImpl.kt index 5ea953818e3..55c8b10db58 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirErrorTypeRefImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirErrorTypeRefImpl.kt @@ -22,18 +22,16 @@ internal class FirErrorTypeRefImpl( override val type: ConeKotlinType, override var delegatedTypeRef: FirTypeRef?, override val diagnostic: ConeDiagnostic, - override val isFromStubType: Boolean = false, override var partiallyResolvedTypeRef: FirTypeRef? = null, ) : FirErrorTypeRef() { constructor( source: KtSourceElement?, delegatedTypeRef: FirTypeRef?, diagnostic: ConeDiagnostic, - isFromStubType: Boolean = false, partiallyResolvedTypeRef: FirTypeRef? = null, + partiallyResolvedTypeRef: FirTypeRef? = null, ) : this( source, ConeErrorType(diagnostic), delegatedTypeRef, diagnostic, - isFromStubType, partiallyResolvedTypeRef, ) diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirImplicitBuiltinTypeRef.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirImplicitBuiltinTypeRef.kt index 2fe4c3e735c..b6cdacc6906 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirImplicitBuiltinTypeRef.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirImplicitBuiltinTypeRef.kt @@ -28,9 +28,6 @@ sealed class FirImplicitBuiltinTypeRef( override val delegatedTypeRef: FirTypeRef? get() = null - override val isFromStubType: Boolean - get() = false - override fun acceptChildren(visitor: FirVisitor, data: D) {} override fun transformChildren(transformer: FirTransformer, data: D): FirElement {