Skip to content

Latest commit

 

History

History
23 lines (15 loc) · 1.71 KB

File metadata and controls

23 lines (15 loc) · 1.71 KB

Description

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.

Motivation

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?