From 4c5c305a7f1933ed23a743157d38e47d81d65ade Mon Sep 17 00:00:00 2001 From: Paul Dingemans Date: Sat, 3 Feb 2024 16:13:26 +0100 Subject: [PATCH] Ignore function which is returned as result in a function body (#2526) Closes #2521 --- .../rules/BlankLineBeforeDeclarationRule.kt | 5 ++++- .../rules/BlankLineBeforeDeclarationRuleTest.kt | 13 +++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/ktlint-ruleset-standard/src/main/kotlin/com/pinterest/ktlint/ruleset/standard/rules/BlankLineBeforeDeclarationRule.kt b/ktlint-ruleset-standard/src/main/kotlin/com/pinterest/ktlint/ruleset/standard/rules/BlankLineBeforeDeclarationRule.kt index e7a5475a60..b43a56ee07 100644 --- a/ktlint-ruleset-standard/src/main/kotlin/com/pinterest/ktlint/ruleset/standard/rules/BlankLineBeforeDeclarationRule.kt +++ b/ktlint-ruleset-standard/src/main/kotlin/com/pinterest/ktlint/ruleset/standard/rules/BlankLineBeforeDeclarationRule.kt @@ -12,6 +12,7 @@ import com.pinterest.ktlint.rule.engine.core.api.ElementType.OBJECT_DECLARATION import com.pinterest.ktlint.rule.engine.core.api.ElementType.OBJECT_LITERAL import com.pinterest.ktlint.rule.engine.core.api.ElementType.PROPERTY import com.pinterest.ktlint.rule.engine.core.api.ElementType.PROPERTY_ACCESSOR +import com.pinterest.ktlint.rule.engine.core.api.ElementType.RETURN_KEYWORD import com.pinterest.ktlint.rule.engine.core.api.ElementType.WHEN import com.pinterest.ktlint.rule.engine.core.api.Rule import com.pinterest.ktlint.rule.engine.core.api.RuleId @@ -120,7 +121,9 @@ public class BlankLineBeforeDeclarationRule : return } - if (node.elementType == FUN && node.prevCodeSibling()?.elementType == EQ) { + if (node.elementType == FUN && + (node.prevCodeSibling()?.elementType == EQ || node.prevCodeSibling()?.elementType == RETURN_KEYWORD) + ) { // Allow: // val foo = // fun(): String { diff --git a/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/rules/BlankLineBeforeDeclarationRuleTest.kt b/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/rules/BlankLineBeforeDeclarationRuleTest.kt index 180da58b9d..e85a1a9094 100644 --- a/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/rules/BlankLineBeforeDeclarationRuleTest.kt +++ b/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/rules/BlankLineBeforeDeclarationRuleTest.kt @@ -493,4 +493,17 @@ class BlankLineBeforeDeclarationRuleTest { """.trimIndent() blankLineBeforeDeclarationRuleAssertThat(code).hasNoLintViolations() } + + @Test + fun `Issue 2521 - Given a function returning a function in a block body`() { + val code = + """ + fun foo(bar: Int): (Int) -> Int { + return fun(baz: Int): Int { + return bar + baz + } + } + """.trimIndent() + blankLineBeforeDeclarationRuleAssertThat(code).hasNoLintViolations() + } }