FIR IDE: add support of FirStatement in getKtExpressionType

This commit is contained in:
Ilya Kirillov
2021-03-05 19:08:15 +01:00
parent d311fe21f8
commit 7c11dde2cf
3 changed files with 14 additions and 5 deletions
@@ -7,10 +7,7 @@ package org.jetbrains.kotlin.idea.frontend.api.fir.components
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.expressions.FirFunctionCall
import org.jetbrains.kotlin.fir.expressions.FirLoop
import org.jetbrains.kotlin.fir.expressions.argumentMapping
import org.jetbrains.kotlin.fir.expressions.*
import org.jetbrains.kotlin.fir.psi
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
import org.jetbrains.kotlin.fir.references.FirNamedReference
@@ -44,7 +41,7 @@ internal class KtFirExpressionTypeProvider(
when (val fir = expression.getOrBuildFir(firResolveState)) {
is FirExpression -> fir.typeRef.coneType.asKtType()
is FirNamedReference -> fir.getReferencedElementType().asKtType()
is FirLoop -> with(analysisSession) { builtinTypes.UNIT }
is FirStatement -> with(analysisSession) { builtinTypes.UNIT }
else -> error("Unexpected ${fir::class}")
}
}
@@ -0,0 +1,7 @@
val a = 10
<expr>val x = 1</expr>
// RESULT
// expression: val x = 1
// type: kotlin.Unit
@@ -74,6 +74,11 @@ public class HLExpressionTypeTestGenerated extends AbstractHLExpressionTypeTest
runTest("idea/idea-frontend-fir/testData/components/expressionType/intLiteral.kt");
}
@TestMetadata("property.kt")
public void testProperty() throws Exception {
runTest("idea/idea-frontend-fir/testData/components/expressionType/property.kt");
}
@TestMetadata("returnExpression.kt")
public void testReturnExpression() throws Exception {
runTest("idea/idea-frontend-fir/testData/components/expressionType/returnExpression.kt");