Uh oh!
There was an error while loading. Please reload this page.
bugfix: reorder import in GJF using Google Style - #1680
Conversation
big-andy-coates
commented
Apr 19, 2023
Thanks for fixing @simschla!
Is is worth raising a new bug to track this secondary issue? |
simschla
commented
Apr 19, 2023
I think it's worth keeping in mind (and as such raise an issue for that) - but I'm not very at home in that part of the code, so maybe @nedtwigg should weigh in here whenever he finds the time. |
simschla
commented
Apr 19, 2023
BTW @big-andy-coates are you OK with me using your "problem file" in |
big-andy-coates
commented
Apr 20, 2023
Yep, no worries - its OSS anyway |
nedtwigg
commented
May 17, 2023
Thanks very much for reporting your issue @big-andy-coates, and thanks for tracking down the very subtle cause @simschla. As for ignoring the The real "problem" here is (until recently) we don't actually respect AOSP style when using gjf to do imports. But that has been our behavior for so long that it's essentially a regression for existing users. If we wanted to respect style when doing GJF import order, we would have to add a second flag for import style, e.g. |
nedtwigg
commented
May 24, 2023
Released in |
bjrke
commented
May 31, 2023
we adapted 6.18 and the new import order inherited from google-java-format since it perfectly works with the gjf plugin of IntelliJ which also changed its import order with the update. |
@bjrke I think you misunderstood. the As of now, you can upgrade to |
bjrke
commented
Jun 19, 2023
are there any plans (different issue or PR) to introduce such a possibility? For the moment we just don't upgrade, but in the long term it would be very useful to have this. |
simschla
commented
Jun 19, 2023
@bjrke AFAIK, there is nothing planned (yet). I suggest you create an Issue describing what the changes are, that you are proposing. Adding them to the API should be quite straightforward, and I'll gladly implement it as soon as I have some time to spare. (Or maybe someone from the community or yourself is willing to step-in in the meantime?) |
This MR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.diffplug.spotless:spotless-maven-plugin](https://github.com/diffplug/spotless) | build | minor | `2.38.0` -> `2.39.0` | | [io.quarkus:quarkus-maven-plugin](https://github.com/quarkusio/quarkus) | build | patch | `3.3.0` -> `3.3.1` | | [io.quarkus:quarkus-universe-bom](https://github.com/quarkusio/quarkus-platform) | import | patch | `3.3.0` -> `3.3.1` | --- ### Release Notes <details> <summary>diffplug/spotless</summary> ### [`v2.39.0`](https://github.com/diffplug/spotless/blob/HEAD/CHANGES.md#​2390---2023-05-24) ##### Added - `Jvm.Support` now accepts `-SNAPSHOT` versions, treated as the non`-SNAPSHOT`. ([#​1583](diffplug/spotless#1583)) - Support Rome as a formatter for JavaScript and TypeScript code. Adds a new `rome` step to `javascript` and `typescript` formatter configurations. ([#​1663](diffplug/spotless#1663)) - Add semantics-aware Java import ordering (i.e. sort by package, then class, then member). ([#​522](diffplug/spotless#522)) ##### Fixed - Fixed a regression which changed the import sorting order in `googleJavaFormat` introduced in `2.38.0`. ([#​1680](diffplug/spotless#1680)) - Equo-based formatters now work on platforms unsupported by Eclipse such as PowerPC (fixes [durian-swt#​20](diffplug/durian-swt#20)) - When P2 download fails, indicate the responsible formatter. ([#​1698](diffplug/spotless#1698)) ##### Changes - Equo-based formatters now download metadata to `~/.m2/repository/dev/equo/p2-data` rather than `~/.equo`, and for CI machines without a home directory the p2 data goes to `$GRADLE_USER_HOME/caches/p2-data`. ([#​1714](diffplug/spotless#1714)) - Bump default `googleJavaFormat` version to latest `1.16.0` -> `1.17.0`. ([#​1710](diffplug/spotless#1710)) - Bump default `ktfmt` version to latest `0.43` -> `0.44`. ([#​1691](diffplug/spotless#1691)) - Bump default `ktlint` version to latest `0.48.2` -> `0.49.1`. ([#​1696](diffplug/spotless#1696)) - Dropped support for `ktlint 0.46.x` following our policy of supporting two breaking changes at a time. - Bump default `sortpom` version to latest `3.0.0` -> `3.2.1`. ([#​1675](diffplug/spotless#1675)) </details> <details> <summary>quarkusio/quarkus</summary> ### [`v3.3.1`](quarkusio/quarkus@3.3.0...3.3.1) [Compare Source](quarkusio/quarkus@3.3.0...3.3.1) </details> <details> <summary>quarkusio/quarkus-platform</summary> ### [`v3.3.1`](quarkusio/quarkus-platform@3.3.0...3.3.1) [Compare Source](quarkusio/quarkus-platform@3.3.0...3.3.1) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever MR is behind base branch, or you tick the rebase/retry checkbox. 👻 **Immortal**: This MR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box --- This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC4yNC4wIiwidXBkYXRlZEluVmVyIjoiMzQuMjQuMCJ9-->
This fixes#1679.
In the origin GJF reflection code (before #1630), we used to call
reorderImports(String)which internally expanded toreorderImports(String, Style.GOOGLE)no matter what style the user had configured.The report in #1679 uses the
AOSPstyle, so the code after #1630 calledreorderImports(String, Style.AOSP)(instead of thereorderImports(String)(which is an alias forreorderImports(String, Style.GOOGLE)).Changing that, resolves the issue. (This PR)
@nedtwigg Underlying, however, is another issue: Calling the actual
reorderImports(String, Style.AOSP)on the example file results in a Situation where spotless reorders imports even though they are in theformatting:offandformatting:onsection of the file. You can see that if you change thecheckIssue1679()test method, to only include the formatters (toggleOffOnPair.in(), gjf, toggleOffOnPair.out()). I did not investigate that further, but could be that there is a general issue with those toggles in the import section?