diff --git a/ktlint-ruleset-standard/src/main/kotlin/com/pinterest/ktlint/ruleset/standard/IndentationRule.kt b/ktlint-ruleset-standard/src/main/kotlin/com/pinterest/ktlint/ruleset/standard/IndentationRule.kt index dd9c640b0c..38e0afaa08 100644 --- a/ktlint-ruleset-standard/src/main/kotlin/com/pinterest/ktlint/ruleset/standard/IndentationRule.kt +++ b/ktlint-ruleset-standard/src/main/kotlin/com/pinterest/ktlint/ruleset/standard/IndentationRule.kt @@ -69,6 +69,7 @@ import com.pinterest.ktlint.core.ast.isPartOfComment import com.pinterest.ktlint.core.ast.isWhiteSpace import com.pinterest.ktlint.core.ast.isWhiteSpaceWithNewline import com.pinterest.ktlint.core.ast.isWhiteSpaceWithoutNewline +import com.pinterest.ktlint.core.ast.lineNumber import com.pinterest.ktlint.core.ast.nextCodeSibling import com.pinterest.ktlint.core.ast.nextLeaf import com.pinterest.ktlint.core.ast.nextSibling @@ -446,7 +447,9 @@ public class IndentationRule : }) ?: return val nextSibling = n.treeNext if (!ctx.ignored.contains(p) && nextSibling != null) { - if (p.treeParent.elementType == PROPERTY_DELEGATE) { + if (p.treeParent.elementType == PROPERTY_DELEGATE && + p.treeParent?.lineNumber() != p.treeParent.prevCodeSibling()?.lineNumber() + ) { expectedIndent += 2 logger.trace { "$line: ++dot-qualified-expression in property delegate -> $expectedIndent" } ctx.ignored.add(p) diff --git a/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/IndentationRuleTest.kt b/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/IndentationRuleTest.kt index b3a976a9b8..8d95801da6 100644 --- a/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/IndentationRuleTest.kt +++ b/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/IndentationRuleTest.kt @@ -3047,6 +3047,16 @@ internal class IndentationRuleTest { .isFormattedAs(formattedCode) } + @Test + fun `Issue 1510 - Given a dot-qualified-expression as delegated property value starting on same line as previous code sibling`() { + val code = + """ + val locale: Locale by option + .default() + """.trimIndent() + indentationRuleAssertThat(code).hasNoLintViolations() + } + @Test fun `Issue 1340 - Given a dot-qualified-expression wrapped in a block as delegated property value`() { val code =