lampepfl/dotty-example-project

Name: dotty-example-project

Owner: Programming Methods Laboratory EPFL

Description: An example sbt project that compiles using Dotty

Created: 2015-12-30 22:48:24.0

Updated: 2018-05-12 19:49:42.0

Pushed: 2018-05-06 11:06:49.0

Homepage: null

Size: 48

Language: Scala

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

Example sbt project that compiles using Dotty

Build Status

Usage

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/1.0/plugins and ~/.sbt/1.0.

IDE support

Dotty comes built-in with IDE support, to try it out see http://dotty.epfl.ch/docs/usage/ide-support.html

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:

project/plugins.sbt
btPlugin("ch.epfl.lamp" % "sbt-dotty" % "0.2.2")
project/build.properties
version=1.1.4

Older versions of sbt are not supported.

build.sbt

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:

aVersion := "0.8.0-RC1"
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 https://repo1.maven.org/maven2/ch/epfl/lamp/dotty_0.8/ 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:

acOptions ++= { 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 https://github.com/scalacenter/scalafix

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"

by:

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

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.

Discuss

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


This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.