getkyo / kyo

Toolkit for Scala Development
https://getkyo.io
Apache License 2.0
527 stars 44 forks source link

Use Typelevel scalac-options #485

Closed steinybot closed 3 months ago

steinybot commented 3 months ago

Take 2.

Since starting this, the -Wunused:all option had been removed which makes things a bit easier.

FTR If we do need to ignore unused locals in a way that is compatible with Scala 2.12, 2.13 and 3 I think we can do this:

    /**
     * A way to ignore the unused warning that works in Scala 2.12, 2.13 and 3.
     */
    @elidable(ASSERTION)
    private[scheduler] def unused(a: => Any): Unit = {
        val _ = a
        ()
    }
fwbrasil commented 3 months ago

LGTM besides my comments + the merge conflict.

steinybot commented 3 months ago

Before:

sbt:kyoJVM> show scalacOptions
[info] kyo-cache / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] kyo-direct / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] kyo-core / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] kyo-scheduler-zio / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -release:11)
[info] kyo-stats-registry / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -release:11, -Xsource:3)
[info] kyo-tag / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] kyo-caliban / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] kyo-sttp / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] kyo-stats-otel / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] kyo-tapir / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] kyo-scheduler / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -release:11, -Xsource:3)
[info] kyo-zio / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] kyo-examples / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] kyo-bench / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] kyo-test / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[success] Total time: 0 s, completed 21/06/2024, 8:24:35 pm
sbt:kyoJVM> show Test/scalacOptions
[info] kyo-cache / Test / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] kyo-direct / Test / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] kyo-core / Test / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] kyo-scheduler-zio / Test / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -release:11)
[info] kyo-stats-registry / Test / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -release:11, -Xsource:3)
[info] kyo-tag / Test / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] kyo-caliban / Test / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] kyo-sttp / Test / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] kyo-stats-otel / Test / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] kyo-tapir / Test / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] kyo-scheduler / Test / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -release:11, -Xsource:3)
[info] kyo-zio / Test / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] kyo-examples / Test / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] kyo-bench / Test / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] kyo-test / Test / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] Test / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[success] Total time: 1 s, completed 21/06/2024, 8:24:37 pm
sbt:kyoJVM> ++2.13
[info] Setting Scala version to 2.13.14 on 5 projects.
[info] Excluded 23 projects, run ++ 2.13 -v for more details.
[info] Reapplying settings...
[info] set current project to kyoJVM (in build file:/Users/jason/src/kyo2/)
sbt:kyoJVM> show scalacOptions
[info] kyo-cache / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] kyo-direct / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] kyo-core / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] kyo-scheduler-zio / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -release:11, -Xsource:3)
[info] kyo-stats-registry / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -release:11, -Xsource:3)
[info] kyo-tag / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] kyo-caliban / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] kyo-sttp / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] kyo-stats-otel / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] kyo-tapir / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] kyo-scheduler / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -release:11, -Xsource:3)
[info] kyo-zio / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] kyo-examples / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] kyo-bench / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] kyo-test / scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[info] scalacOptions
[info]  List(-encoding, utf8, -feature, -unchecked, -deprecation, -Wvalue-discard, -language:strictEquality, -release:11)
[success] Total time: 0 s, completed 21/06/2024, 8:25:06 pm

(show Test/scalacOptions for 2.13 doesn't work)

After:

sbt:kyoJVM> show scalacOptions
[info] kyo-bench / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-scheduler-zio / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-stats-otel / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-stats-registry / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-test / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-tapir / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-core / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-zio / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-scheduler / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-direct / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-examples / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-caliban / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-tag / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-cache / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-sttp / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[success] Total time: 0 s, completed 21/06/2024, 8:45:31 pm
sbt:kyoJVM> show Test/scalacOptions
[info] kyo-bench / Test / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-scheduler-zio / Test / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-stats-otel / Test / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-stats-registry / Test / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-test / Test / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-tapir / Test / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-core / Test / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-zio / Test / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-scheduler / Test / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-direct / Test / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-examples / Test / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-caliban / Test / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-tag / Test / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-cache / Test / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-sttp / Test / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] Test / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[success] Total time: 1 s, completed 21/06/2024, 8:45:35 pm
sbt:kyoJVM> ++2.13
[info] Setting Scala version to 2.13.14 on 5 projects.
[info] Excluded 23 projects, run ++ 2.13 -v for more details.
[info] Reapplying settings...
[info] set current project to kyoJVM (in build file:/Users/jason/src/kyo/)
sbt:kyoJVM> show scalacOptions
[info] kyo-bench / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-scheduler-zio / scalacOptions
[info]  List(-release, 11, -Wvalue-discard, -unchecked, -encoding, utf8, -feature, -Xsource:3)
[info] kyo-stats-otel / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-stats-registry / scalacOptions
[info]  List(-release, 11, -Wvalue-discard, -unchecked, -encoding, utf8, -feature, -Xsource:3)
[info] kyo-test / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-tapir / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-core / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-zio / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-scheduler / scalacOptions
[info]  List(-release, 11, -Wvalue-discard, -unchecked, -encoding, utf8, -feature, -Xsource:3)
[info] kyo-direct / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-examples / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-caliban / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-tag / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-cache / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] kyo-sttp / scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[info] scalacOptions
[info]  List(-release, 11, -language:strictEquality, -deprecation, -Wvalue-discard, -unchecked, -encoding, utf8, -feature)
[success] Total time: 0 s, completed 21/06/2024, 8:45:41 pm

Changes: