Skip to content

fix(deps): update dependency com.pinterest.ktlint:ktlint-ruleset-standard to v0.50.0 - #1829

Closed
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/com.pinterest.ktlint-ktlint-ruleset-standard-0.x
Closed

fix(deps): update dependency com.pinterest.ktlint:ktlint-ruleset-standard to v0.50.0#1829
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/com.pinterest.ktlint-ktlint-ruleset-standard-0.x

Conversation

@renovate

@renovate renovate Bot commented Sep 28, 2023

Copy link
Copy Markdown
Contributor

Mend Renovate

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
com.pinterest.ktlint:ktlint-ruleset-standard 0.49.0 -> 0.50.0 age adoption passing confidence
com.pinterest.ktlint:ktlint-ruleset-standard 0.48.0 -> 0.50.0 age adoption passing confidence

⚠ Dependency Lookup Warnings ⚠

Warnings were logged while processing this repo. Please check the Dependency Dashboard for more information.


Release Notes

pinterest/ktlint (com.pinterest.ktlint:ktlint-ruleset-standard)

v0.50.0

Compare Source

Deprecation of ktlint-enable and ktlint-disable directives

The ktlint-disable and ktlint-enable directives are no longer supported. Ktlint rules can now only be suppressed using the @Suppress or @SuppressWarnings annotations. A new rule, internal:ktlint-suppression, is provided to replace the directives with annotations.

API consumers do not need to provide this rule, but it does no harm when done.

The internal:ktlint-suppression rule can not be disabled via the .editorconfig nor via @Suppress or @SuppressWarnings annotations.

Custom Rule Providers need to prepare for Kotlin 1.9

In Kotlin 1.9 the extension points of the embedded kotlin compiler will change. Ktlint only uses the org.jetbrains.kotlin.com.intellij.treeCopyHandler extension point. This extension is not yet supported in 1.9, neither is it documented (#KT-58704). Without this extension point it might happen that your custom rules will throw exceptions during runtime. See #​1981.

In Ktlint, 7 out of 77 rules needed small and sometimes bigger changes to become independent of the extension point org.jetbrains.kotlin.com.intellij.treeCopyHandler. The impact on your custom rules may vary dependent on the way the autocorrect has been implemented. When manipulating ASTNodes there seems to be no impact. When, manipulating PsiElements, some functions consistently result in a runtime exception.

Based on the refactoring of the rules as provided by ktlint-ruleset-standard in Ktlint 0.49.x the suggested refactoring is as follows:

  • Replace LeafElement.replaceWithText(String) with LeafElement.rawReplaceWithText(String).
  • Replace PsiElement.addAfter(PsiElement, PsiElement) with AstNode.addChild(AstNode, AstNode). Note that this method inserts the new node (first) argument before the second argument node and as of that is not a simple replacement of the PsiElement.addAfter(PsiElement, PsiElement).
  • Replace PsiElement.replace(PsiElement) with a sequence of AstNode.addChild(AstNode, AstNode) and AstNode.removeChild(AstNode).

Be aware that your custom rules might use other functions which also throw exceptions when the extension point org.jetbrains.kotlin.com.intellij.treeCopyHandler is no longer supported.

In order to help you to analyse and fix the problems with your custom rules, ktlint temporarily supports to disable the extension point org.jetbrains.kotlin.com.intellij.treeCopyHandler using a flag. This flag is available in the Ktlint CLI and in the KtlintRuleEngine. By default, the extension point is enabled like it was in previous versions of ktlint.

At least you should analyse the problems by running your test suits by running ktlint and disabling the extension point. Next you can start with fixing and releasing the updated rules. All rules in this version of ktlint have already been refactored and are not dependent on the extension point anymore. In Ktlint CLI the flag is to be activated with parameter --disable-kotlin-extension-point. API Consumers that use the KtlintRuleEngine directly, have to set property enableKotlinCompilerExtensionPoint to false.

At this point in time, it is not yet decided what the next steps will be. Ktlint might drop the support of the extension points entirely. Or, if the extension point org.jetbrains.kotlin.com.intellij.treeCopyHandler is fully supported at the time that ktlint will be based on kotlin 1.9 it might be kept. In either case, the flag will be dropped in a next version of ktlint.

Added
  • Add new experimental rule binary-expression-wrapping. This rule wraps a binary expression in case the max line length is exceeded (#​1940)
  • Add flag to disable extension point org.jetbrains.kotlin.com.intellij.treeCopyHandler to analyse impact on custom rules #​1981
  • Add new experimental rule no-empty-file for all code styles. A kotlin (script) file may not be empty (#​1074)
  • Add new experimental rule statement-wrapping which ensures function, class, or other blocks statement body doesn't start or end at starting or ending braces of the block (#​1938). Note, although this rule is added in this release, it is never executed except in unit tests.
  • Add new experimental rule blank-line-before-declaration. This rule requires a blank line before class, function or property declarations (#​1939)
  • Wrap multiple statements on same line wrapping (#​1078)
  • Add new rule ktlint-suppression to replace the ktlint-disable and ktlint-enable directives with annotations. This rule can not be disabled via the .editorconfig (#​1947)
  • Inform user about using --format option of KtLint CLI when finding a violation that can be autocorrected (#​1071)
Removed
  • Code which was deprecated in 0.49.x is removed. Consult changelog of 0.49.x` released for more information. Summary of removed code:
Fixed
  • Do not flag a (potential) mutable extension property in case the getter is annotated or prefixed with a modifier property-naming (#​2024)
  • Do not merge an annotated expression body with the function signature even if it fits on a single line (#​2043)
  • Ignore property with name serialVersionUID in property-naming (#​2045)
  • Prevent incorrect reporting of violations in case a nullable function type reference exceeds the maximum line length parameter-list-wrapping (#​1324)
  • Prevent false negative on else branch when body contains only chained calls or binary expression (#​2057)
  • Fix indent when property value is wrapped to next line (#​2095)
Changed
  • Fix Java interoperability issues with RuleId and RuleSetId classes. Those classes were defined as value classes in 0.49.0 and 0.49.1. Although the classes were marked with @JvmInline it seems that it is not possible to uses those classes from Java base API Consumers like Spotless. The classes have now been replaced with data classes (#​2041)
  • Update dependency info.picocli:picocli to v4.7.4
  • Update dependency org.junit.jupiter:junit-jupiter to v5.9.3
  • Update Kotlin development version to 1.8.22 and Kotlin version to 1.8.22.
  • Update dependency io.github.detekt.sarif4k:sarif4k to v0.4.0
  • Update dependency org.jetbrains.dokka:dokka-gradle-plugin to v1.8.20
  • Run format up to 3 times in case formatting introduces changes which also can be autocorrected (#​2084)

v0.49.1

Compare Source

Added
Removed
Fixed
  • Store path of file containing a lint violation relative to the location of the baseline file itself (#​1962)
  • Print absolute path of file in lint violations when flag "--relative" is not specified in Ktlint CLI (#​1963)
  • Handle parameter --code-style=android_studio in Ktlint CLI identical to deprecated parameter --android (#​1982)
  • Prevent nullpointer exception (NPE) if class without body is followed by multiple blank lines until end of file no-consecutive-blank-lines (#​1987)
  • Allow to 'unset' the .editorconfig property ktlint_function_signature_rule_force_multiline_when_parameter_count_greater_or_equal_than when using ktlint_official code style function-signature (#​1977)
  • Prevent nullpointer exception (NPE) if or operator at start of line is followed by dot qualified expression indent (#​1993)
  • Fix indentation of multiline parameter list in function literal indent (#​1976)
  • Restrict indentation of closing quotes to ktlint_official code style to keep formatting of other code styles consistent with 0.48.x and before indent (#​1971)
  • Extract rule no-single-line-block-comment from comment-wrapping rule. The no-single-line-block-comment rule is added as experimental rule to the ktlint_official code style, but it can be enabled explicitly for the other code styles as well. (#​1980)
  • Clean-up unwanted logging dependencies (#​1998)
  • Fix directory traversal for patterns referring to paths outside of current working directory or any of it child directories (#​2002)
  • Prevent multiple expressions on same line separated by semicolon (#​1078)
Changed
  • Moved class Baseline from ktlint-cli to ktlint-cli-reporter-baseline so that Baseline functionality is reusable for API Consumers.

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate. View repository job log here.

@renovate
renovate Bot deleted the renovate/com.pinterest.ktlint-ktlint-ruleset-standard-0.x branch September 28, 2023 15:13
@renovate

renovate Bot commented Jul 22, 2025

Copy link
Copy Markdown
Contributor Author

Renovate Ignore Notification

Because you closed this PR without merging, Renovate will ignore this update (0.50.0). You will get a PR once a newer version is released. To ignore this dependency forever, add it to the ignoreDeps array of your Renovate config.

If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants