[K2] isUsedAsExpression analysis

This commit is contained in:
Kristoffer Andersen
2022-08-01 17:46:54 +02:00
committed by teamcity
parent d9701c71b7
commit f765457e51
673 changed files with 11862 additions and 10 deletions
@@ -15,11 +15,9 @@ import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
import org.jetbrains.kotlin.analysis.utils.printer.parentOfType
import org.jetbrains.kotlin.cfg.WhenChecker
import org.jetbrains.kotlin.diagnostics.WhenMissingCase
import org.jetbrains.kotlin.psi.KtDeclaration
import org.jetbrains.kotlin.psi.KtNamedFunction
import org.jetbrains.kotlin.psi.KtReturnExpression
import org.jetbrains.kotlin.psi.KtWhenExpression
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.bindingContextUtil.isUsedAsExpression
internal class KtFe10ExpressionInfoProvider(
override val analysisSession: KtFe10AnalysisSession
@@ -40,4 +38,9 @@ internal class KtFe10ExpressionInfoProvider(
val bindingContext = analysisContext.analyze(whenExpression)
return WhenChecker.getMissingCases(whenExpression, bindingContext)
}
override fun isUsedAsExpression(expression: KtExpression): Boolean {
val bindingContext = analysisContext.analyze(expression)
return expression.isUsedAsExpression(bindingContext)
}
}
@@ -184,6 +184,12 @@ public class Fe10IdeNormalAnalysisSourceModuleHLExpressionTypeTestGenerated exte
runTest("analysis/analysis-api/testData/components/expressionTypeProvider/expressionType/returnExpression.kt");
}
@Test
@TestMetadata("singleExpressionLambdaBody.kt")
public void testSingleExpressionLambdaBody() throws Exception {
runTest("analysis/analysis-api/testData/components/expressionTypeProvider/expressionType/singleExpressionLambdaBody.kt");
}
@Test
@TestMetadata("smartcast_asCallArg.kt")
public void testSmartcast_asCallArg() throws Exception {