From cd13648906f58f93b4228158b9a126e6b8492027 Mon Sep 17 00:00:00 2001 From: Toshiaki Kameyama Date: Thu, 14 Feb 2019 10:34:40 +0900 Subject: [PATCH] Object literal can be converted to lambda: report if "return" is only one and is in the last statement #KT-29763 Fixed --- .../ObjectLiteralToLambdaIntention.kt | 4 +++- .../inspectionData/expected.xml | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ObjectLiteralToLambdaIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ObjectLiteralToLambdaIntention.kt index 597e3abe338..e4cdb5d1b44 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/ObjectLiteralToLambdaIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ObjectLiteralToLambdaIntention.kt @@ -51,7 +51,9 @@ import org.jetbrains.kotlin.types.KotlinType class ObjectLiteralToLambdaInspection : IntentionBasedInspection(ObjectLiteralToLambdaIntention::class) { override fun problemHighlightType(element: KtObjectLiteralExpression): ProblemHighlightType { val (_, baseType, singleFunction) = extractData(element) ?: return super.problemHighlightType(element) - if (singleFunction.bodyExpression?.anyDescendantOfType { true } == true) return ProblemHighlightType.INFORMATION + val bodyBlock = singleFunction.bodyBlockExpression + val lastStatement = bodyBlock?.statements?.lastOrNull() + if (bodyBlock?.anyDescendantOfType { it != lastStatement } == true) return ProblemHighlightType.INFORMATION val valueArgument = element.parent as? KtValueArgument val call = valueArgument?.getStrictParentOfType() diff --git a/idea/testData/intentions/objectLiteralToLambda/inspectionData/expected.xml b/idea/testData/intentions/objectLiteralToLambda/inspectionData/expected.xml index 479e451a371..748c5002ceb 100644 --- a/idea/testData/intentions/objectLiteralToLambda/inspectionData/expected.xml +++ b/idea/testData/intentions/objectLiteralToLambda/inspectionData/expected.xml @@ -1,4 +1,22 @@ + + StatementAndReturn.kt + 8 + light_idea_test_case + + Convert object literal to lambda + Convert to lambda + + + + SingleReturn.kt + 8 + light_idea_test_case + + Convert object literal to lambda + Convert to lambda + + Simple.kt 6