scalafix icon indicating copy to clipboard operation
scalafix copied to clipboard

Official support for writing community rules in Scala 3

Open bjaglin opened this issue 1 year ago • 1 comments
trafficstars

Spin-off from https://github.com/scalacenter/scalafix/issues/1680 / https://github.com/scalacenter/scalafix/pull/2034

  • Publish core_3 without using it internally
    • [ ] Wait for scalameta
      • [x] https://github.com/scalameta/scalameta/issues/2485
        • [x] https://github.com/scalameta/scalameta/pull/3939
        • [x] https://github.com/scalameta/scalameta/pull/3347
      • [ ] https://github.com/scalameta/scalameta/issues/4146
      • [ ] https://github.com/scalameta/scalameta/issues/4145 ?
    • [ ] Consider our options for https://github.com/scalacenter/scalafix/issues/1949
    • [ ] Find a way to test community rules built against core3 (custom cli/testkit artifact?)
    • [ ] Publish core with Scala LTS as a patch release (or a minor release in RC if nothing was found for the point above)
  • Prepare community rules to have artifacts built against core_3 ready ahead of the last step
    • [ ] Go through the listed community rules and make sure Scala Steward rolls out the change
    • [ ] Advocate for community rules to cross-compile to scala 3 by updating https://github.com/scalacenter/scalafix.g8 & examples in the docs (use scala center twitter account?)
    • [ ] Instead of testing Scala 3 targets with Scala 2.12, test Scala 2.13 targets with Scala 3 in https://github.com/scalacenter/scalafix.g8 since that's what cli3 will take by default
    • [ ] Update testkit scripted accordingly
  • Backward compatible reflect3 (source rules written against 2.13 applied by scala-steward on scala 3 projects should continue working)
    • If compilation with dotty fails, try compilation with 2.13 compiler against a core3 overlaid with the compat-metaconfig-macro containing Scala2 macros
  • Publish a pure Scala 3 cli_3
    • [ ] Make error actionnable when _3 artifacts are not found for community rules (fallback will no longer works as core_3 is not binary compatible with core_2.13)
    • [ ] Remove advertised usage of for3Use2_13 in local rules docs https://github.com/scalacenter/scalafix/pull/2221
    • [ ] Publish cli_3 against core_3 & reflect_3 in a minor (breaking-signalling) release

bjaglin avatar Aug 21 '24 12:08 bjaglin