From ab6d87a1a26d7c0a3b816917c9180d56d8ff4aa5 Mon Sep 17 00:00:00 2001 From: Kirill Rakhman Date: Mon, 7 Aug 2023 16:51:56 +0200 Subject: [PATCH] [FIR] Introduce deprecated FirExpression.typeRef property for compatibility with Compose #KT-59855 --- .../kotlin/fir/builder/AbstractRawFirBuilderTestCase.kt | 1 + .../org/jetbrains/kotlin/fir/expressions/FirExpression.kt | 3 +++ .../kotlin/fir/tree/generator/printer/element.kt | 8 ++++++++ 3 files changed, 12 insertions(+) diff --git a/compiler/fir/raw-fir/psi2fir/tests/org/jetbrains/kotlin/fir/builder/AbstractRawFirBuilderTestCase.kt b/compiler/fir/raw-fir/psi2fir/tests/org/jetbrains/kotlin/fir/builder/AbstractRawFirBuilderTestCase.kt index be704a3598b..1394f633d37 100644 --- a/compiler/fir/raw-fir/psi2fir/tests/org/jetbrains/kotlin/fir/builder/AbstractRawFirBuilderTestCase.kt +++ b/compiler/fir/raw-fir/psi2fir/tests/org/jetbrains/kotlin/fir/builder/AbstractRawFirBuilderTestCase.kt @@ -92,6 +92,7 @@ abstract class AbstractRawFirBuilderTestCase : KtParsingTestCase( } for (property in this::class.memberProperties) { if (hasNoAcceptAndTransform(this::class.simpleName, property.name)) continue + if (this is FirExpression && property.name == "typeRef") continue when (val childElement = property.getter.apply { isAccessible = true }.call(this)) { is FirNoReceiverExpression -> continue diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirExpression.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirExpression.kt index 1370cfb3f64..cc00b6956b2 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirExpression.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirExpression.kt @@ -32,4 +32,7 @@ abstract class FirExpression : FirPureAbstractElement(), FirStatement { abstract override fun replaceAnnotations(newAnnotations: List) abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirExpression + + /** DO NOT USE! Only for temporary compatibility with Compose. Will be removed soon. KT-61312*/ + val typeRef: org.jetbrains.kotlin.fir.types.FirTypeRef get() = coneTypeOrNull?.let { org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef { type = it } } ?: org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImplWithoutSource } diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/element.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/element.kt index 60345335bfa..5cf2e5c5ecf 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/element.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/element.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.fir.tree.generator.printer +import org.jetbrains.kotlin.fir.tree.generator.FirTreeBuilder import org.jetbrains.kotlin.fir.tree.generator.context.AbstractFirTreeBuilder import org.jetbrains.kotlin.fir.tree.generator.model.Element import org.jetbrains.kotlin.fir.tree.generator.model.Field @@ -147,7 +148,14 @@ fun SmartPrinter.printElement(element: Element) { println() println("fun transformChildren(transformer: FirTransformer, data: D): FirElement") } + + if (element == FirTreeBuilder.expression) { + println() + println("/** DO NOT USE! Only for temporary compatibility with Compose. Will be removed soon. KT-61312*/") + println("val typeRef: org.jetbrains.kotlin.fir.types.FirTypeRef get() = coneTypeOrNull?.let { org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef { type = it } } ?: org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImplWithoutSource") + } } + println("}") } }