diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000000..4ac590576188 --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +*.class +*.log + +# sbt specific +dist/* +target/ +lib_managed/ +src_managed/ +project/boot/ +project/plugins/project/ +project/local-plugins.sbt +.history + +# Scala-IDE specific +.scala_dependencies +.cache +.classpath +.project +.settings +bin/ + +# idea +.idea +.idea_modules diff --git a/build.sbt b/build.sbt index 8e84bd19c73e..1891b21058f7 100644 --- a/build.sbt +++ b/build.sbt @@ -1,13 +1,14 @@ + name := "dotty" -organization := "lamp" +scalaVersion in Global := "2.11.0-M7" -scalaVersion := "2.10.0" +version in Global := "0.1-SNAPSHOT" -scalaSource in Compile <<= baseDirectory / "src" +organization in Global := "org.scala-lang" -scalacOptions in Global ++= Seq("-feature", "-deprecation", "-language:_") +organizationName in Global := "LAMP/EPFL" -libraryDependencies <+= scalaVersion ( sv => "org.scala-lang" % "scala-reflect" % sv ) +organizationHomepage in Global := Some(url("http://lamp.epfl.ch")) -scalaSource in Test <<= baseDirectory / "test" \ No newline at end of file +homepage in Global := Some(url("http://scala-lang.org")) diff --git a/examples/hello.scala b/examples/hello.scala new file mode 100644 index 000000000000..87e0b1e5e5ca --- /dev/null +++ b/examples/hello.scala @@ -0,0 +1,5 @@ +package hello + +object world extends App { + println("hello dotty!") +} diff --git a/gitignore.SAMPLE b/gitignore.SAMPLE deleted file mode 100644 index 189e089d438e..000000000000 --- a/gitignore.SAMPLE +++ /dev/null @@ -1,5 +0,0 @@ -.idea -.idea_modules -.gitignore -target -project/local-plugins.sbt diff --git a/project/Build.scala b/project/Build.scala new file mode 100644 index 000000000000..a82fc3484b7b --- /dev/null +++ b/project/Build.scala @@ -0,0 +1,53 @@ +import sbt._ +import Keys._ +import Process._ + +object DottyBuild extends Build { + + val defaults = Defaults.defaultSettings ++ Seq( + // set sources to src/, tests to test/ and resources to resources/ + scalaSource in Compile := baseDirectory.value / "src", + javaSource in Compile := baseDirectory.value / "src", + scalaSource in Test := baseDirectory.value / "test", + javaSource in Test := baseDirectory.value / "test", + resourceDirectory in Compile := baseDirectory.value / "resources", + unmanagedSourceDirectories in Compile := Seq((scalaSource in Compile).value), + unmanagedSourceDirectories in Test := Seq((scalaSource in Test).value), + + // include sources in eclipse (downloads source code for all dependencies) + //http://stackoverflow.com/questions/10472840/how-to-attach-sources-to-sbt-managed-dependencies-in-scala-ide#answer-11683728 + com.typesafe.sbteclipse.plugin.EclipsePlugin.EclipseKeys.withSource := true, + + // to get Scala 2.11 + resolvers += Resolver.sonatypeRepo("releases"), + + // get reflect and xml onboard + libraryDependencies ++= Seq("org.scala-lang" % "scala-reflect" % scalaVersion.value, + "org.scala-lang.modules" %% "scala-xml" % "1.0.0-RC7"), + + // get junit onboard + libraryDependencies += "com.novocode" % "junit-interface" % "0.9" % "test", + + // scalac options + scalacOptions in Global ++= Seq("-feature", "-deprecation", "-language:_"), + + // Adjust classpath for running dotty + mainClass in (Compile, run) := Some("dotty.tools.dotc.Main"), + fork in run := true, + fork in Test := true, + // http://grokbase.com/t/gg/simple-build-tool/135ke5y90p/sbt-setting-jvm-boot-paramaters-for-scala + javaOptions <++= (managedClasspath in Runtime, packageBin in Compile) map { (attList, bin) => + // put the Scala {library, reflect, compiler} in the classpath + val path = for { + file <- attList.map(_.data) + path = file.getAbsolutePath + } yield "-Xbootclasspath/p:" + path + // dotty itself needs to be in the bootclasspath + val fullpath = ("-Xbootclasspath/a:" + bin) :: path.toList + // System.err.println("BOOTPATH: " + fullpath) + fullpath + } + ) + + lazy val dotty = Project(id = "dotty", base = file("."), settings = defaults) +} diff --git a/project/build.properties b/project/build.properties index 66ad72ce2eba..0974fce44da5 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=0.12.2 +sbt.version=0.13.0 diff --git a/project/plugins.sbt b/project/plugins.sbt index b6864b47bbbc..654570000877 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,3 +1,6 @@ // Add personal SBT plugins for IDEs, etc to `local-plugins.sbt` // // e.g. addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.1.0") + +// Scala IDE project file generator +addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.2.0") diff --git a/readme.md b/readme.md index c6ad8d0bc04b..b44bc2333425 100644 --- a/readme.md +++ b/readme.md @@ -1,4 +1,28 @@ dotty ===== -The experimental compiler for a Scala dialect based on DOT \ No newline at end of file +The experimental compiler for a Scala dialect based on DOT. + +### To get started: +``` + sbt compile + sbt run + sbt test +``` +At least half of the tests fail, we need to diagnose them. + + +### To use the Scala IDE: +``` + sbt eclipse +``` +Notes: + * You will need the Scala IDE for 2.11.0-M7 + * There are 2 spurious version incompatibility warnings + * To run dotty in Eclipse: + * Navigate to `dotty.tools.dotc.Main` + * `Run As...` > `Scala Application` + * then go to `Run Configurations` > `Main$` > `Classpath` > `Bootstrap entries`: + * add the Scala library (`Advanced...` > `Add library...` > `Scala library`) + * add the dotty classfiles (`Add projects...` > `[x] dotty`) + * then go to `Run Configurations` > `Main$` > `Arguments` and add `${project_loc}/examples/hello.scala`