From b7cb8f8c5d0e96aed81378f1440e094782855955 Mon Sep 17 00:00:00 2001 From: Toshiaki Kameyama Date: Thu, 17 Dec 2020 17:42:27 +0900 Subject: [PATCH] ArgumentListWrappingRule: fix false positive when max_line_length in EditorConfig is set (#1010) --- .../experimental/ArgumentListWrappingRule.kt | 2 +- .../ArgumentListWrappingRuleTest.kt | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/ktlint-ruleset-experimental/src/main/kotlin/com/pinterest/ktlint/ruleset/experimental/ArgumentListWrappingRule.kt b/ktlint-ruleset-experimental/src/main/kotlin/com/pinterest/ktlint/ruleset/experimental/ArgumentListWrappingRule.kt index 756933c1e7..ea0366b045 100644 --- a/ktlint-ruleset-experimental/src/main/kotlin/com/pinterest/ktlint/ruleset/experimental/ArgumentListWrappingRule.kt +++ b/ktlint-ruleset-experimental/src/main/kotlin/com/pinterest/ktlint/ruleset/experimental/ArgumentListWrappingRule.kt @@ -69,7 +69,7 @@ class ArgumentListWrappingRule : Rule("argument-list-wrapping") { val putArgumentsOnSeparateLines = node.textContainsIgnoringLambda('\n') || // max_line_length exceeded - maxLineLength > -1 && (node.column - 1 + node.textLength) > maxLineLength + maxLineLength > -1 && (node.column - 1 + node.textLength) > maxLineLength && !node.textContains('\n') if (putArgumentsOnSeparateLines) { // IDEA quirk: // generic< diff --git a/ktlint-ruleset-experimental/src/test/kotlin/com/pinterest/ktlint/ruleset/experimental/ArgumentListWrappingRuleTest.kt b/ktlint-ruleset-experimental/src/test/kotlin/com/pinterest/ktlint/ruleset/experimental/ArgumentListWrappingRuleTest.kt index b0252bff95..f6bcbbbf55 100644 --- a/ktlint-ruleset-experimental/src/test/kotlin/com/pinterest/ktlint/ruleset/experimental/ArgumentListWrappingRuleTest.kt +++ b/ktlint-ruleset-experimental/src/test/kotlin/com/pinterest/ktlint/ruleset/experimental/ArgumentListWrappingRuleTest.kt @@ -166,6 +166,32 @@ class ArgumentListWrappingRuleTest { ).isEmpty() } + @Test + fun testLambdaArgumentsAreIgnoredWithMaxLineLength() { + assertThat( + ArgumentListWrappingRule().lint( + """ + abstract class A(init: String.() -> Int) + class B : A({ + toInt() + toInt() + toInt() + toInt() + toInt() + toInt() + }) + + fun test(a: Any, b: (Any) -> Any) { + test(a = "1", b = { + it.toString() + }) + } + """.trimIndent(), + userData = mapOf("max_line_length" to "80") + ) + ).isEmpty() + } + @Test fun testFormatWithLambdaArguments() { assertThat(