From 3292137acba6c6a2a9d9824eda84e54e4b812c12 Mon Sep 17 00:00:00 2001 From: Toshiaki Kameyama Date: Thu, 7 Jun 2018 07:06:17 +0300 Subject: [PATCH] "Convert lambda to anonymous function": Don't suggest in inline function So #KT-24792 Fixed --- .../idea/intentions/LambdaToAnonymousFunctionIntention.kt | 2 ++ .../lambdaToAnonymousFunction/inInlineFunction.kt | 7 +++++++ .../kotlin/idea/intentions/IntentionTestGenerated.java | 5 +++++ 3 files changed, 14 insertions(+) create mode 100644 idea/testData/intentions/lambdaToAnonymousFunction/inInlineFunction.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/LambdaToAnonymousFunctionIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/LambdaToAnonymousFunctionIntention.kt index 78c0abcac4d..f92d9f92694 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/LambdaToAnonymousFunctionIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/LambdaToAnonymousFunctionIntention.kt @@ -15,6 +15,7 @@ import org.jetbrains.kotlin.idea.core.replaced import org.jetbrains.kotlin.idea.intentions.branchedTransformations.BranchedFoldingUtils import org.jetbrains.kotlin.idea.search.usagesSearch.descriptor import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers +import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.collectDescendantsOfType import org.jetbrains.kotlin.psi.psiUtil.endOffset @@ -32,6 +33,7 @@ class LambdaToAnonymousFunctionIntention : SelfTargetingIntention() == null) return false + if (element.getStrictParentOfType()?.hasModifier(KtTokens.INLINE_KEYWORD) == true) return false val descriptor = element.functionLiteral.descriptor as? AnonymousFunctionDescriptor ?: return false if (descriptor.valueParameters.any { it.name.isSpecial }) return false val lastElement = element.functionLiteral.arrow ?: element.functionLiteral.lBrace diff --git a/idea/testData/intentions/lambdaToAnonymousFunction/inInlineFunction.kt b/idea/testData/intentions/lambdaToAnonymousFunction/inInlineFunction.kt new file mode 100644 index 00000000000..7d012b06269 --- /dev/null +++ b/idea/testData/intentions/lambdaToAnonymousFunction/inInlineFunction.kt @@ -0,0 +1,7 @@ +// IS_APPLICABLE: false + +inline fun test() { + foo { "" } +} + +fun foo(f: (Int) -> String) {} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java index 284a4334a46..2c4b189fe20 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java @@ -9767,6 +9767,11 @@ public class IntentionTestGenerated extends AbstractIntentionTest { runTest("idea/testData/intentions/lambdaToAnonymousFunction/implicitParameterName.kt"); } + @TestMetadata("inInlineFunction.kt") + public void testInInlineFunction() throws Exception { + runTest("idea/testData/intentions/lambdaToAnonymousFunction/inInlineFunction.kt"); + } + @TestMetadata("incorrectOffset.kt") public void testIncorrectOffset() throws Exception { runTest("idea/testData/intentions/lambdaToAnonymousFunction/incorrectOffset.kt");