An example sbt project that compiles using Dotty
Clone or download
Pull request Compare This branch is 19 commits behind lampepfl:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Example sbt project that compiles using Dotty

Build Status


This is a normal sbt project, you can compile code with sbt compile and run it with sbt run, sbt console will start a Dotty REPL.

If compiling this example project fails, you probably have a global sbt plugin that does not work with dotty, try to disable all plugins in ~/.sbt/0.13/plugins and ~/.sbt/0.13.

IDE support

Dotty comes built-in with IDE support, to try it out see

Making a new Dotty project

The fastest way to start a new Dotty project is to use one of the following templates:

Using Dotty in an existing project

You will need to make the following adjustments to your build:


addSbtPlugin("ch.epfl.lamp" % "sbt-dotty" % "0.1.5")



Older versions of sbt are not supported, sbt 1.0 is not yet supported either.


Any version number that starts with 0. is automatically recognized as Dotty by the sbt-dotty plugin, you don't need to set up anything:

scalaVersion := "0.3.0-RC2"

Nightly builds

If the latest release of Dotty is missing a bugfix or feature you need, you may wish to use a nightly build. Look at the bottom of to find the version number for the latest nightly build. Alternatively, you can set scalaVersion := dottyLatestNightlyBuild.get to always use the latest nightly build of dotty.

Getting your project to compile with Dotty

When porting an existing project, it's a good idea to start out with the Scala 2 compatibility mode (note that this mode affects typechecking and thus may prevent some valid Dotty code from compiling) by adding to your build.sbt:

scalacOptions ++= { if (isDotty.value) Seq("-language:Scala2") else Nil }

Using the isDotty setting ensures that this option will only be set when compiling with Dotty.

A tool to port code from Scala 2.x to Dotty is currently in development at

If your build contains dependencies that have only been published for Scala 2.x, you may be able to get them to work on Dotty by replacing:

    libraryDependencies += "a" %% "b" % "c"


    libraryDependencies += ("a" %% "b" % "c").withDottyCompat()

This will have no effect when compiling with Scala 2.x, but when compiling with Dotty this will change the cross-version to a Scala 2.x one. This works because Dotty is currently retro-compatible with Scala 2.x.

NOTE: Dotty's retro-compatibility with Scala 2.x will be dropped before Dotty is released, you should not rely on it.


Feel free to come chat with us on the Dotty gitter!