Skip to content

Conversation

@jtkiesel
Copy link
Contributor

@jtkiesel jtkiesel commented Jan 5, 2026

What changed with this PR:

Fixes breaking of parenthesized expressions to be more similar to the behavior of Prettier JavaScript/TypeScript.

Example

Input

class Example {

  void parenthesesWithLeadingAndTrailingBreak() {
    (aaaaaaaaaa +
      bbbbbbbbbb +
      cccccccccc +
      dddddddddd +
      eeeeeeeeee).ffffffffff();
    (aaaaaaaaaa +
      bbbbbbbbbb +
      cccccccccc +
      dddddddddd +
      eeeeeeeeee)::ffffffffff;

    aaaaaaaaaa = (bbbbbbbbbb && cccccccccc
      ? dddddddddd
      : eeeeeeeeee).ffffffffff();
    aaaaaaaaaa = (bbbbbbbbbb && cccccccccc
      ? dddddddddd
      : eeeeeeeeee)::ffffffffff;
    aaaaaaaaaa = (bbbbbbbbbb && cccccccccc
      ? dddddddddd
      : eeeeeeeeee)[ffffffffff];

    Aaaaaaaaaa aaaaaaaaaa = (bbbbbbbbbb && cccccccccc
      ? dddddddddd
      : eeeeeeeeee).ffffffffff();
    Aaaaaaaaaa aaaaaaaaaa = (bbbbbbbbbb && cccccccccc
      ? dddddddddd
      : eeeeeeeeee)::ffffffffff;
    Aaaaaaaaaa aaaaaaaaaa = (bbbbbbbbbb && cccccccccc
      ? dddddddddd
      : eeeeeeeeee)[ffffffffff];

    switch (a) {
      case Bbbbbbbbbb bbbbbbbbbb when (
        cccccccccc && dddddddddd && eeeeeeeeee
      ) -> ffffffffff;
    }

    return (
      aaaaaaaaaa &&
      bbbbbbbbbb &&
      cccccccccc &&
      dddddddddd &&
      eeeeeeeeee &&
      ffffffffff
    );
  }

  void parenthesesWithTrailingBreak() {
    (aaaaaaaaaa && bbbbbbbbbb && cccccccccc
      ? dddddddddd
      : eeeeeeeeee).ffffffffff();
    (aaaaaaaaaa && bbbbbbbbbb && cccccccccc
      ? dddddddddd
      : eeeeeeeeee)::ffffffffff;
    (aaaaaaaaaa && bbbbbbbbbb && cccccccccc
      ? dddddddddd
      : eeeeeeeeee)[ffffffffff];
  }

  void parenthesesWithoutBreak() {
    ((aaaaaaaaaa) ->
      bbbbbbbbbb && cccccccccc ? dddddddddd : eeeeeeeeee).ffffffffff();
    ((aaaaaaaaaa) ->
      bbbbbbbbbb && cccccccccc ? dddddddddd : eeeeeeeeee)::ffffffffff;
    ((aaaaaaaaaa) ->
      bbbbbbbbbb && cccccccccc ? dddddddddd : eeeeeeeeee)[ffffffffff];

    aaaaaaaaaa = ((bbbbbbbbbb) ->
      cccccccccc ? dddddddddd : eeeeeeeeee).ffffffffff();
    aaaaaaaaaa = ((bbbbbbbbbb) ->
      cccccccccc ? dddddddddd : eeeeeeeeee)::ffffffffff;
    aaaaaaaaaa = ((bbbbbbbbbb) ->
      cccccccccc ? dddddddddd : eeeeeeeeee)[ffffffffff];

    Aaaaaaaaaa aaaaaaaaaa = ((bbbbbbbbbb) ->
      cccccccccc ? dddddddddd : eeeeeeeeee).ffffffffff();
    Aaaaaaaaaa aaaaaaaaaa = ((bbbbbbbbbb) ->
      cccccccccc ? dddddddddd : eeeeeeeeee)::ffffffffff;
    Aaaaaaaaaa aaaaaaaaaa = ((bbbbbbbbbb) ->
      cccccccccc ? dddddddddd : eeeeeeeeee)[ffffffffff];
  }
}

Output

class Example {

  void parenthesesWithLeadingAndTrailingBreak() {
    (
      aaaaaaaaaa +
      bbbbbbbbbb +
      cccccccccc +
      dddddddddd +
      eeeeeeeeee
    ).ffffffffff();
    (
      aaaaaaaaaa +
      bbbbbbbbbb +
      cccccccccc +
      dddddddddd +
      eeeeeeeeee
    )::ffffffffff;

    aaaaaaaaaa = (
      bbbbbbbbbb && cccccccccc ? dddddddddd : eeeeeeeeee
    ).ffffffffff();
    aaaaaaaaaa = (
      bbbbbbbbbb && cccccccccc ? dddddddddd : eeeeeeeeee
    )::ffffffffff;
    aaaaaaaaaa = (
      bbbbbbbbbb && cccccccccc ? dddddddddd : eeeeeeeeee
    )[ffffffffff];

    Aaaaaaaaaa aaaaaaaaaa = (
      bbbbbbbbbb && cccccccccc ? dddddddddd : eeeeeeeeee
    ).ffffffffff();
    Aaaaaaaaaa aaaaaaaaaa = (
      bbbbbbbbbb && cccccccccc ? dddddddddd : eeeeeeeeee
    )::ffffffffff;
    Aaaaaaaaaa aaaaaaaaaa = (
      bbbbbbbbbb && cccccccccc ? dddddddddd : eeeeeeeeee
    )[ffffffffff];

    switch (a) {
      case Bbbbbbbbbb bbbbbbbbbb when (
        cccccccccc &&
        dddddddddd &&
        eeeeeeeeee
      ) -> ffffffffff;
    }

    return (
      aaaaaaaaaa &&
      bbbbbbbbbb &&
      cccccccccc &&
      dddddddddd &&
      eeeeeeeeee &&
      ffffffffff
    );
  }

  void parenthesesWithTrailingBreak() {
    (aaaaaaaaaa && bbbbbbbbbb && cccccccccc
      ? dddddddddd
      : eeeeeeeeee
    ).ffffffffff();
    (aaaaaaaaaa && bbbbbbbbbb && cccccccccc
      ? dddddddddd
      : eeeeeeeeee
    )::ffffffffff;
    (aaaaaaaaaa && bbbbbbbbbb && cccccccccc
      ? dddddddddd
      : eeeeeeeeee
    )[ffffffffff];
  }

  void parenthesesWithoutBreak() {
    (aaaaaaaaaa ->
      bbbbbbbbbb && cccccccccc ? dddddddddd : eeeeeeeeee).ffffffffff();
    (aaaaaaaaaa ->
      bbbbbbbbbb && cccccccccc ? dddddddddd : eeeeeeeeee)::ffffffffff;
    (aaaaaaaaaa ->
      bbbbbbbbbb && cccccccccc ? dddddddddd : eeeeeeeeee)[ffffffffff];

    aaaaaaaaaa = (bbbbbbbbbb ->
      cccccccccc ? dddddddddd : eeeeeeeeee).ffffffffff();
    aaaaaaaaaa = (bbbbbbbbbb ->
      cccccccccc ? dddddddddd : eeeeeeeeee)::ffffffffff;
    aaaaaaaaaa = (bbbbbbbbbb ->
      cccccccccc ? dddddddddd : eeeeeeeeee)[ffffffffff];

    Aaaaaaaaaa aaaaaaaaaa = (bbbbbbbbbb ->
      cccccccccc ? dddddddddd : eeeeeeeeee).ffffffffff();
    Aaaaaaaaaa aaaaaaaaaa = (bbbbbbbbbb ->
      cccccccccc ? dddddddddd : eeeeeeeeee)::ffffffffff;
    Aaaaaaaaaa aaaaaaaaaa = (bbbbbbbbbb ->
      cccccccccc ? dddddddddd : eeeeeeeeee)[ffffffffff];
  }
}

Relative issues or prs:

Closes #765

@jtkiesel jtkiesel marked this pull request as draft January 5, 2026 01:16
@jtkiesel jtkiesel force-pushed the fix/break-parenthesized-expressions branch 3 times, most recently from 033eda2 to 33fae02 Compare January 5, 2026 06:45
@jtkiesel jtkiesel force-pushed the fix/break-parenthesized-expressions branch from 33fae02 to 0ee7b1c Compare January 5, 2026 08:10
@jtkiesel jtkiesel marked this pull request as ready for review January 5, 2026 08:21
@jtkiesel jtkiesel merged commit 35e72f0 into jhipster:main Jan 6, 2026
6 checks passed
@jtkiesel jtkiesel deleted the fix/break-parenthesized-expressions branch January 6, 2026 01:43
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.

Ugly formatting of a method reference of an expression

1 participant