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 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
|
||||
|
||||
+5
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user