diff --git a/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/PsiRawFirBuilder.kt b/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/PsiRawFirBuilder.kt index 74443058d4c..0f529407cc7 100644 --- a/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/PsiRawFirBuilder.kt +++ b/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/PsiRawFirBuilder.kt @@ -47,6 +47,7 @@ import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.* import org.jetbrains.kotlin.psi.stubs.KotlinFileStub import org.jetbrains.kotlin.psi.stubs.elements.KtStubElementTypes +import org.jetbrains.kotlin.types.ConstantValueKind import org.jetbrains.kotlin.types.Variance import org.jetbrains.kotlin.types.expressions.OperatorConventions import org.jetbrains.kotlin.util.OperatorNameConventions @@ -1373,6 +1374,7 @@ open class PsiRawFirBuilder( when (file) { is KtExpressionCodeFragment -> file.getContentElement()?.toFirBlock() ?: buildEmptyExpressionBlock() is KtBlockCodeFragment -> configureBlockWithoutBuilding(file.getContentElement()).build() + is KtTypeCodeFragment -> convertTypeCodeFragmentBlock(file) else -> error("Unexpected code fragment type: ${file::class}") } } @@ -1380,6 +1382,18 @@ open class PsiRawFirBuilder( } } + private fun convertTypeCodeFragmentBlock(file: KtTypeCodeFragment): FirBlock { + return buildBlock { + statements += buildTypeOperatorCall { + operation = FirOperation.IS + conversionTypeRef = file.getContentElement().toFirOrErrorType() + argumentList = buildUnaryArgumentList( + buildLiteralExpression(source = null, ConstantValueKind.Null, value = null, setType = false) + ) + } + } + } + override fun visitScript(script: KtScript, data: FirElement?): FirElement { val ktFile = script.containingKtFile val fileName = ktFile.name