From f4a637a72e1e5e3a64706778cb6dc341d543b29a Mon Sep 17 00:00:00 2001 From: Toshiaki Kameyama Date: Thu, 4 Oct 2018 18:38:52 +0900 Subject: [PATCH] "Convert object literal to lambda" inspection: report at INFORMATION level if object literal has 'return' #KT-27116 Fixed --- .../ObjectLiteralToLambdaIntention.kt | 49 +++++++------ .../inspectionData/expected.xml | 71 ------------------- 2 files changed, 28 insertions(+), 92 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ObjectLiteralToLambdaIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ObjectLiteralToLambdaIntention.kt index b003f7bcd41..d5d90e5ec6c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/ObjectLiteralToLambdaIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ObjectLiteralToLambdaIntention.kt @@ -16,6 +16,7 @@ package org.jetbrains.kotlin.idea.intentions +import com.intellij.codeInspection.ProblemHighlightType import com.intellij.openapi.editor.Editor import com.intellij.openapi.util.TextRange import com.intellij.psi.PsiComment @@ -48,7 +49,13 @@ import org.jetbrains.kotlin.resolve.scopes.receivers.ImplicitClassReceiver import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue import org.jetbrains.kotlin.types.KotlinType -class ObjectLiteralToLambdaInspection : IntentionBasedInspection(ObjectLiteralToLambdaIntention::class) +class ObjectLiteralToLambdaInspection : IntentionBasedInspection(ObjectLiteralToLambdaIntention::class) { + override fun problemHighlightType(element: KtObjectLiteralExpression): ProblemHighlightType { + val (_, _, singleFunction) = extractData(element) ?: return super.problemHighlightType(element) + if (singleFunction.bodyExpression?.anyDescendantOfType { true } == true) return ProblemHighlightType.INFORMATION + return super.problemHighlightType(element) + } +} class ObjectLiteralToLambdaIntention : SelfTargetingRangeIntention( KtObjectLiteralExpression::class.java, @@ -164,24 +171,24 @@ class ObjectLiteralToLambdaIntention : SelfTargetingRangeIntention - - 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 @@ -26,24 +8,6 @@ Convert to lambda - - ReturnNoValue.kt - 6 - light_idea_test_case - - Convert object literal to lambda - Convert to lambda - - - - ReturnNotLast.kt - 8 - light_idea_test_case - - Convert object literal to lambda - Convert to lambda - - ParametersNotUsed.kt 8 @@ -97,24 +61,6 @@ Convert to lambda - - ReturnsInWhen.kt - 8 - light_idea_test_case - - Convert object literal to lambda - Convert to lambda - - - - ReturnsInIf.kt - 8 - light_idea_test_case - - Convert object literal to lambda - Convert to lambda - - NotInRange2.kt 7 @@ -133,23 +79,6 @@ Convert to lambda - - QualifiedReturn.kt - 6 - light_idea_test_case - - Convert object literal to lambda - Convert to lambda - - - - SamAdapterNeededBecauseOfLabeledReturn.kt - 6 - light_idea_test_case - - Convert object literal to lambda - Convert to lambda - ThisReference.kt 12