From f99f06831c2fdcfbf135ca8fdfcf44d3e1060b0e Mon Sep 17 00:00:00 2001 From: Simon Ogorodnik Date: Thu, 25 Apr 2019 14:52:40 +0300 Subject: [PATCH] FIR resolve: support typing for get class --- .../transformers/FirBodyResolveTransformer.kt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt index 2f68f1aac0f..bfbd266204e 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt @@ -28,6 +28,7 @@ import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult import org.jetbrains.kotlin.fir.visitors.FirTransformer import org.jetbrains.kotlin.fir.visitors.compose import org.jetbrains.kotlin.ir.expressions.IrConstKind +import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.calls.NewCommonSuperTypeCalculator @@ -700,6 +701,20 @@ open class FirBodyResolveTransformer(val session: FirSession, val implicitTypeOn require(result.single === this) { "become ${result.single}: `${result.single.render()}`, was ${this}: `${this.render()}`" } } + + override fun transformGetClassCall(getClassCall: FirGetClassCall, data: Any?): CompositeTransformResult { + val transformedGetClassCall = super.transformGetClassCall(getClassCall, data).single as FirGetClassCall + val kClassSymbol = ClassId.fromString("kotlin/reflect/KClass")(session.service()) + transformedGetClassCall.resultType = + FirResolvedTypeRefImpl( + session, + null, + kClassSymbol.constructType(arrayOf(transformedGetClassCall.argument.resultType.coneTypeUnsafe()), false), + false, + emptyList() + ) + return transformedGetClassCall.compose() + } }