From 85ff979bd4079e3b6924148efcffea726ab517ce Mon Sep 17 00:00:00 2001 From: Mikhail Zarechenskiy Date: Mon, 9 Sep 2019 03:29:28 +0300 Subject: [PATCH] Use `PARTIAL` mode in analyzer to provide lambda return value hints It only uses `isUsedAsResultOfLambda` (so, CFA) and don't have to resolve bodies fully --- .../kotlin/idea/parameterInfo/LambdaReturnValueHints.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/parameterInfo/LambdaReturnValueHints.kt b/idea/src/org/jetbrains/kotlin/idea/parameterInfo/LambdaReturnValueHints.kt index 60b7f11f1a1..3dc88762d05 100644 --- a/idea/src/org/jetbrains/kotlin/idea/parameterInfo/LambdaReturnValueHints.kt +++ b/idea/src/org/jetbrains/kotlin/idea/parameterInfo/LambdaReturnValueHints.kt @@ -14,6 +14,7 @@ import org.jetbrains.kotlin.psi.psiUtil.getParentOfType import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType import org.jetbrains.kotlin.psi.psiUtil.startOffset import org.jetbrains.kotlin.resolve.bindingContextUtil.isUsedAsResultOfLambda +import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode fun provideLambdaReturnValueHints(expression: KtExpression): List { if (expression is KtWhenExpression || expression is KtBlockExpression) { @@ -42,7 +43,7 @@ fun provideLambdaReturnValueHints(expression: KtExpression): List { return emptyList() } - val bindingContext = expression.analyze() + val bindingContext = expression.analyze(BodyResolveMode.PARTIAL_WITH_CFA) if (expression.isUsedAsResultOfLambda(bindingContext)) { val lambdaName = getNameOfFunctionThatTakesLambda(expression) ?: "lambda" return listOf(InlayInfo("$TYPE_INFO_PREFIX^$lambdaName", expression.startOffset))