In this folder we track all the found incompatibilities between Scala 2.13 and Scala 3.0.
Each incompatibility lives in its own subfolder and sbt subproject. It is described by:
- a short
README.md
detailing the origin, the compiler message, the related documentation, the related issues and PRs... - a
src/main/scala-2.13
source directory that must compile in Scala 2.13 but not in Scala 3.0 - a proposed solution under
src/main/scala/
that must compile with Scala 2.13 and Scala 3.0
The sbt <incompat>/test
task ensures both that the scala-2.13
sources do not compile and that the scala
sources compile with Scala 3.0. It will help us maintain an up-to-date view of the incompatibilities because, as Scala 3.0 progresses towards the release, we expect some of these incompatibilites to be solved at the compiler side.
The implicitView
incompatibility is different because it is a runtime incompatibility, meaning that the code compiles but the runtime behavior change. In this case the implicitView/test
task checks that the scala-2.13
runtime behavior is wrong and that the scala
runtime behavior is correct.
The sbt incompat-30
project is an aggregate of all the incompatibility projects. You can check all the incompatibilities by running incompat-30/test
.
This set of incompatibilities will be used to track the progress of the migration guide and migration tooling.
The Incompatibility Table shows the status of those incomaptibility:
- Does it produce a feature or deprecation warning in 2.13?
- Do we have a Scala 3.0 migration rewrite?
- Do we have a Scalafix rule to handle it?