-
Notifications
You must be signed in to change notification settings - Fork 463
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
bugfix: reorder import in GJF using Google Style #1680
Conversation
Thanks for fixing @simschla!
Is is worth raising a new bug to track this secondary issue? |
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. |
BTW @big-andy-coates are you OK with me using your "problem file" in |
Yep, no worries - its OSS anyway |
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. |
Released in |
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 |
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. |
@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
AOSP
style, 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:off
andformatting:on
section 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?