FIR IDE: add support of FirStatement in getKtExpressionType
This commit is contained in:
+2
-5
@@ -7,10 +7,7 @@ package org.jetbrains.kotlin.idea.frontend.api.fir.components
|
|||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
|
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.*
|
||||||
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.psi
|
import org.jetbrains.kotlin.fir.psi
|
||||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||||
@@ -44,7 +41,7 @@ internal class KtFirExpressionTypeProvider(
|
|||||||
when (val fir = expression.getOrBuildFir(firResolveState)) {
|
when (val fir = expression.getOrBuildFir(firResolveState)) {
|
||||||
is FirExpression -> fir.typeRef.coneType.asKtType()
|
is FirExpression -> fir.typeRef.coneType.asKtType()
|
||||||
is FirNamedReference -> fir.getReferencedElementType().asKtType()
|
is FirNamedReference -> fir.getReferencedElementType().asKtType()
|
||||||
is FirLoop -> with(analysisSession) { builtinTypes.UNIT }
|
is FirStatement -> with(analysisSession) { builtinTypes.UNIT }
|
||||||
else -> error("Unexpected ${fir::class}")
|
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
|
||||||
|
|
||||||
+5
@@ -74,6 +74,11 @@ public class HLExpressionTypeTestGenerated extends AbstractHLExpressionTypeTest
|
|||||||
runTest("idea/idea-frontend-fir/testData/components/expressionType/intLiteral.kt");
|
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")
|
@TestMetadata("returnExpression.kt")
|
||||||
public void testReturnExpression() throws Exception {
|
public void testReturnExpression() throws Exception {
|
||||||
runTest("idea/idea-frontend-fir/testData/components/expressionType/returnExpression.kt");
|
runTest("idea/idea-frontend-fir/testData/components/expressionType/returnExpression.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user