Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ktlint: Formatting does not converge when line is long and formatted code needs a trailing comma #1689

Open
chokoswitch opened this issue Apr 27, 2023 · 1 comment

Comments

@chokoswitch
Copy link

I originally filed this to ktlint at pinterest/ktlint#1979 but it seems like it's likely a spotless issue. So copying in from there.

Expected Behavior

Code formats

Observed Behavior

Failure with trailing-comma-on-call-site

Steps to Reproduce

      errorprone {
        excludedPaths.set(".*com.google.protobuf.util.*|.*org.curioswitch.common.protobuf.json.test.*")
      }

If this line is too long based on editorconfig values, then it is supposed to reformat to split lines and have a trailing comma

      errorprone {
        excludedPaths.set(
          ".*com.google.protobuf.util.*|.*org.curioswitch.common.protobuf.json.test.*",
        )
      }

However, instead it gives an error

Step 'ktlint' found problem in 'build.gradle.kts':
Error on line: 64, column: 1
rule: trailing-comma-on-call-site
Missing trailing comma before ")"

It seems it is only applying the line length change without the trailing comma change. The error message is highly confusing too, because there is no expectation for a trailing comma in the original one-line code, only in the intermediate reformatted version.

We can see it in curioswitch/protobuf-jackson#14, running spotlessApply in this repo with the change will still fail with that error message instead of reformatting.

If manually reformatting, then it passes. Had no idea where the error is, I guess the line number is also wrong, referring to the intermediate reformatted version and not the original?

Your Environment

  • Version of ktlint used:
    Default in gradle-spotless-plugin
  • Relevant parts of the .editorconfig settings
    max_line_length = 100
  • Name and version (or code for custom task) of integration used (Gradle plugin, Maven plugin, command line, custom Gradle task):
    gradle-spotless-plugin: 6.18.0
  • Version of Gradle used (if applicable): 7.3.3
  • Operating System and version: Mac OS X 13.2.1
@Goooler
Copy link
Member

Goooler commented Feb 27, 2024

@chokoswitch Can you try with the latest Spotless + Ktlint?

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

No branches or pull requests

3 participants