From 7c11dde2cf628e495a8fc64cdf210678c6317fbb Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Fri, 5 Mar 2021 19:08:15 +0100 Subject: [PATCH] FIR IDE: add support of FirStatement in getKtExpressionType --- .../api/fir/components/KtFirExpressionTypeProvider.kt | 7 ++----- .../testData/components/expressionType/property.kt | 7 +++++++ .../api/components/HLExpressionTypeTestGenerated.java | 5 +++++ 3 files changed, 14 insertions(+), 5 deletions(-) create mode 100644 idea/idea-frontend-fir/testData/components/expressionType/property.kt diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/components/KtFirExpressionTypeProvider.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/components/KtFirExpressionTypeProvider.kt index f2c785dcca5..4bf5c8831bb 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/components/KtFirExpressionTypeProvider.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/components/KtFirExpressionTypeProvider.kt @@ -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}") } } diff --git a/idea/idea-frontend-fir/testData/components/expressionType/property.kt b/idea/idea-frontend-fir/testData/components/expressionType/property.kt new file mode 100644 index 00000000000..827a6f9e6ae --- /dev/null +++ b/idea/idea-frontend-fir/testData/components/expressionType/property.kt @@ -0,0 +1,7 @@ +val a = 10 +val x = 1 +// RESULT + +// expression: val x = 1 +// type: kotlin.Unit + diff --git a/idea/idea-frontend-fir/tests/org/jetbrains/kotlin/idea/frontend/api/components/HLExpressionTypeTestGenerated.java b/idea/idea-frontend-fir/tests/org/jetbrains/kotlin/idea/frontend/api/components/HLExpressionTypeTestGenerated.java index 23d9c2e0621..990e3f686bc 100644 --- a/idea/idea-frontend-fir/tests/org/jetbrains/kotlin/idea/frontend/api/components/HLExpressionTypeTestGenerated.java +++ b/idea/idea-frontend-fir/tests/org/jetbrains/kotlin/idea/frontend/api/components/HLExpressionTypeTestGenerated.java @@ -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");