github pinterest/ktlint 1.0.0

latest releases: 1.4.1, 1.4.0, 1.3.1...
14 months ago

💔 Breaking changes

  • Update and align Maven coordinates - #2195, by @paul-dingemans
    Be sure to update Maven coordinates below, to get latest changes!

    Old Maven coordinates New Maven coordinates
    com.pinterest.ktlint com.pinterest.ktlint.ktlint-cli
    com.pinterest.ktlint.ktlint-reporter-baseline com.pinterest.ktlint.ktlint-cli-reporter-baseline
    com.pinterest.ktlint.ktlint-reporter-checkstyle com.pinterest.ktlint.ktlint-cli-reporter-checkstyle
    com.pinterest.ktlint.ktlint-cli-reporter com.pinterest.ktlint.ktlint-cli-reporter-core
    com.pinterest.ktlint.ktlint-reporter-format com.pinterest.ktlint.ktlint-cli-reporter-format
    com.pinterest.ktlint.ktlint-reporter-html com.pinterest.ktlint.ktlint-cli-reporter-html
    com.pinterest.ktlint.ktlint-reporter-json com.pinterest.ktlint.ktlint-cli-reporter-json
    com.pinterest.ktlint.ktlint-reporter-plain com.pinterest.ktlint.ktlint-cli-reporter-plain
    com.pinterest.ktlint.ktlint-reporter-plain-summary com.pinterest.ktlint.ktlint-cli-reporter-plain-summary
    com.pinterest.ktlint.ktlint-reporter-sarif com.pinterest.ktlint.ktlint-cli-reporter-sarif
  • Add binary compatibility validator - #2131, by @mateuszkwiecinski

  • Replace kotlin public data classes with Poko compiler plugin generated ones - #2136, by @mateuszkwiecinski
    As a part of public API stabilization, data classes are no longer used in the public API. As of that, functions like copy() or componentN() (used for destructuring declarations) are not available anymore.

  • Promote experimental rules - #2218, by @paul-dingemans
    The rules below have been promoted to non-experimental rules:

  • Fix statement-wrapping and align rule classes - #2178, by @paul-dingemans
    Rule class MultilineExpressionWrapping has been renamed to MultilineExpressionWrappingRule. Rule class StatementWrapping has been renamed to StatementWrappingRule. RULE_ID constants below are moved to a different Java class at compile time. Each rule provided by Ktlint is to be accompanied by a RULE_ID constant that can be used in the VisitorModifier.RunAfter. Filenames did not comply with standard that it should end with Rule suffix.

    RULE ID Old Java class name New Java class name
    FUNCTION_EXPRESSION_BODY_RULE_ID FunctionExpressionBodyKt FunctionExpressionBodyRuleKt
    FUNCTION_LITERAL_RULE_ID FunctionLiteralKt FunctionLiteralRuleKt
    MULTILINE_EXPRESSION_WRAPPING_RULE_ID MultilineExpressionWrappingKt MultilineExpressionWrappingRuleKt
    NO_BLANK_LINE_IN_LIST_RULE_ID NoBlankLineInListKt NoBlankLineInListRuleKt
    NO_EMPTY_FILE_RULE_ID (not applicable) NoEmptyFileRuleKt
  • Update to Kotlin 1.9 & remove TreeCopyHandler extension - #2113, by @paul-dingemans
    Class org.jetbrains.kotlin.com.intellij.treeCopyHandler is no longer registered as extension point for the compiler as this is not supported in Kotlin 1.9. Please test your custom rules. In case of unexpected exceptions during formatting of code, see #2044 for possible remediation.

🆕 Features

  • Change default code style to ktlint_official - #2144, by @paul-dingemans

  • Add new experimental rule class-signature - #2119, by @paul-dingemans

  • Add new experimental rule function-expression-body - #2151, by @paul-dingemans

  • Add new experimental rule chain-method-continuation - #2088, by @atulgpt

  • Add new experimental rule function-literal - #2137, by @paul-dingemans

  • Add new experimental rule function-type-modifier-spacing rule - #2216, by @t-kameyama

  • Define EditorConfigOverride for dynamically loaded ruleset - #2194, by @paul-dingemans
    The EditorConfigOverride parameter of the KtlintRuleEngine can be defined using the factory method EditorConfigOverride.from(vararg properties: Pair<EditorConfigProperty<*>, *>). This requires the EditorConfigProperty's to be available at compile time. Some common EditorConfigProperty's are defined in ktlint-rule-engine-core which is loaded as transitive dependency of ktlint-rule-engine and as of that are available at compile.
    If an EditorConfigProperty is defined in a Rule that is only provided via a runtime dependency, it gets a bit more complicated. The ktlint-api-consumer example has now been updated to show how the EditorConfigProperty can be retrieved from the Rule.

  • Move wrapping on semicolon from wrapping rule to statement-wrapping rule - #2222, by @paul-dingemans

🔧 Fixes

📦 Dependencies

  • Update dependency org.codehaus.janino:janino to v3.1.10 - #2110, by @renovate[bot]

  • Update dependency com.google.jimfs:jimfs to v1.3.0 - #2112, by @renovate[bot]

  • Update dependency org.junit.jupiter:junit-jupiter to v5.10.0 - #2148, by @renovate[bot]

  • Update dependency io.github.oshai:kotlin-logging-jvm to v5.1.0 - #2174, by @renovate[bot]

  • Update dependency dev.drewhamilton.poko:poko-gradle-plugin to v0.15.0 - #2173, by @renovate[bot]

  • Update plugin org.gradle.toolchains.foojay-resolver-convention to v0.7.0 - #2187, by @renovate[bot]

  • Update dependency gradle to v8.3 - #2186, by @renovate[bot]

  • Update kotlin monorepo to v1.9.10 - #2197, by @renovate[bot]

  • Update dependency info.picocli:picocli to v4.7.5 - #2215, by @renovate[bot]

  • Update dependency org.jetbrains.dokka:dokka-gradle-plugin to v1.9.0 - #2221, by @renovate[bot]

  • Update dependency org.slf4j:slf4j-simple to v2.0.9 - #2224, by @renovate[bot]

💬 Other

Don't miss a new ktlint release

NewReleases is sending notifications on new releases.