aboutsummaryrefslogtreecommitdiff
path: root/project/Build.scala
diff options
context:
space:
mode:
authorFelix Mulder <felix.mulder@gmail.com>2016-11-03 11:44:27 +0100
committerGuillaume Martres <smarter@ubuntu.com>2016-11-22 01:35:07 +0100
commit5c293d0c51ca393b721d3588baacc29965157027 (patch)
treebc371751d08c5d8696b83a58ae26d73e46f395e9 /project/Build.scala
parent7879d0f3f98cec6e3198e1f12902888ab281553b (diff)
downloaddotty-5c293d0c51ca393b721d3588baacc29965157027.tar.gz
dotty-5c293d0c51ca393b721d3588baacc29965157027.tar.bz2
dotty-5c293d0c51ca393b721d3588baacc29965157027.zip
Add `repl` command
Diffstat (limited to 'project/Build.scala')
-rw-r--r--project/Build.scala29
1 files changed, 23 insertions, 6 deletions
diff --git a/project/Build.scala b/project/Build.scala
index 68ca8a1d1..caf79be37 100644
--- a/project/Build.scala
+++ b/project/Build.scala
@@ -1,5 +1,6 @@
import sbt.Keys._
import sbt._
+import complete.DefaultParsers._
import java.io.{ RandomAccessFile, File }
import java.nio.channels.FileLock
import scala.reflect.io.Path
@@ -26,7 +27,12 @@ object DottyBuild extends Build {
// "-XX:+HeapDumpOnOutOfMemoryError", "-Xmx1g", "-Xss2m"
)
- lazy val packageAll = taskKey[Unit]("Package everything needed to run tests")
+ // Packages all subprojects to their jars
+ lazy val packageAll =
+ taskKey[Map[String, String]]("Package everything needed to run tests")
+
+ // Spawns a repl with the correct classpath
+ lazy val repl = inputKey[Unit]("run the REPL with correct classpath")
override def settings: Seq[Setting[_]] = {
super.settings ++ Seq(
@@ -68,6 +74,7 @@ object DottyBuild extends Build {
dependsOn(`dotty-library`).
dependsOn(`dotty-interfaces`).
settings(
+ addCommandAlias("repl", "dotty-compiler/repl") ++
addCommandAlias(
"partest",
";packageAll" +
@@ -151,14 +158,24 @@ object DottyBuild extends Build {
// enable improved incremental compilation algorithm
incOptions := incOptions.value.withNameHashing(true),
-
+ // packageAll packages all and then returns a map with the abs location
packageAll := {
- val p1 = (packageBin in (`dotty-interfaces`, Compile)).value
- val p2 = (packageBin in Compile).value
- val p3 = (packageBin in (`dotty-library`, Compile)).value
- val p4 = (packageBin in Test).value
+ Map(
+ "dotty-interfaces" -> (packageBin in (`dotty-interfaces`, Compile)).value,
+ "dotty-compiler" -> (packageBin in Compile).value,
+ "dotty-library" -> (packageBin in (`dotty-library`, Compile)).value,
+ "dotty-compiler-test" -> (packageBin in Test).value
+ ) map { case (k, v) => (k, v.getAbsolutePath) }
},
+ repl := Def.inputTaskDyn {
+ val args: Seq[String] = spaceDelimited("<arg>").parsed
+ val dottyLib = packageAll.value("dotty-library")
+ (runMain in Compile).toTask(
+ s" dotty.tools.dotc.repl.Main -classpath $dottyLib " + args.mkString(" ")
+ )
+ }.evaluated,
+
// enable verbose exception messages for JUnit
testOptions in Test += Tests.Argument(
TestFrameworks.JUnit, "-a", "-v",