From def85e3ddc1444ee21e319e17f9252d830979be6 Mon Sep 17 00:00:00 2001 From: Alexandre Archambault Date: Wed, 6 Mar 2019 11:39:53 +0100 Subject: [PATCH] Add sbt-dotty test And take scalaModuleInfo.overrideScalaVersion into account. Also requires the loosened cross version application of the previous commit. --- .../sbtcoursier/ResolutionTasks.scala | 2 +- .../src/sbt-test/shared-1/dotty/LICENSE | 25 +++++++++++++++++++ .../src/sbt-test/shared-1/dotty/README.md | 1 + .../src/sbt-test/shared-1/dotty/build.sbt | 1 + .../shared-1/dotty/project/build.properties | 3 +++ .../shared-1/dotty/project/plugins.sbt | 2 ++ .../dotty/project/project/plugins.sbt | 13 ++++++++++ .../shared-1/dotty/src/main/scala/Main.scala | 16 ++++++++++++ .../dotty/src/main/scala/TraitParams.scala | 21 ++++++++++++++++ .../src/sbt-test/shared-1/dotty/test | 1 + .../sbtlmcoursier/LmCoursierPlugin.scala | 4 +-- 11 files changed, 86 insertions(+), 3 deletions(-) create mode 100644 modules/sbt-coursier/src/sbt-test/shared-1/dotty/LICENSE create mode 100644 modules/sbt-coursier/src/sbt-test/shared-1/dotty/README.md create mode 100644 modules/sbt-coursier/src/sbt-test/shared-1/dotty/build.sbt create mode 100644 modules/sbt-coursier/src/sbt-test/shared-1/dotty/project/build.properties create mode 100644 modules/sbt-coursier/src/sbt-test/shared-1/dotty/project/plugins.sbt create mode 100644 modules/sbt-coursier/src/sbt-test/shared-1/dotty/project/project/plugins.sbt create mode 100644 modules/sbt-coursier/src/sbt-test/shared-1/dotty/src/main/scala/Main.scala create mode 100644 modules/sbt-coursier/src/sbt-test/shared-1/dotty/src/main/scala/TraitParams.scala create mode 100644 modules/sbt-coursier/src/sbt-test/shared-1/dotty/test diff --git a/modules/sbt-coursier/src/main/scala/coursier/sbtcoursier/ResolutionTasks.scala b/modules/sbt-coursier/src/main/scala/coursier/sbtcoursier/ResolutionTasks.scala index da188a7cc..89adbbeb9 100644 --- a/modules/sbt-coursier/src/main/scala/coursier/sbtcoursier/ResolutionTasks.scala +++ b/modules/sbt-coursier/src/main/scala/coursier/sbtcoursier/ResolutionTasks.scala @@ -85,7 +85,7 @@ object ResolutionTasks { val (currentProject, fallbackDependencies, configGraphs) = currentProjectTask.value - val autoScalaLib = autoScalaLibrary.value + val autoScalaLib = autoScalaLibrary.value && scalaModuleInfo.value.forall(_.overrideScalaVersion) val resolvers = resolversTask.value diff --git a/modules/sbt-coursier/src/sbt-test/shared-1/dotty/LICENSE b/modules/sbt-coursier/src/sbt-test/shared-1/dotty/LICENSE new file mode 100644 index 000000000..728844ee3 --- /dev/null +++ b/modules/sbt-coursier/src/sbt-test/shared-1/dotty/LICENSE @@ -0,0 +1,25 @@ +Copyright (c) 2015 The dotty-example-project contributors. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + diff --git a/modules/sbt-coursier/src/sbt-test/shared-1/dotty/README.md b/modules/sbt-coursier/src/sbt-test/shared-1/dotty/README.md new file mode 100644 index 000000000..e476c5c1d --- /dev/null +++ b/modules/sbt-coursier/src/sbt-test/shared-1/dotty/README.md @@ -0,0 +1 @@ +Cut-n-pasted from https://github.com/lampepfl/dotty-example-project/tree/a753b14e281bbaa6c69f26298913ad6feba969c7 diff --git a/modules/sbt-coursier/src/sbt-test/shared-1/dotty/build.sbt b/modules/sbt-coursier/src/sbt-test/shared-1/dotty/build.sbt new file mode 100644 index 000000000..e38070b5e --- /dev/null +++ b/modules/sbt-coursier/src/sbt-test/shared-1/dotty/build.sbt @@ -0,0 +1 @@ +scalaVersion := "0.13.0-RC1" diff --git a/modules/sbt-coursier/src/sbt-test/shared-1/dotty/project/build.properties b/modules/sbt-coursier/src/sbt-test/shared-1/dotty/project/build.properties new file mode 100644 index 000000000..16dc090c5 --- /dev/null +++ b/modules/sbt-coursier/src/sbt-test/shared-1/dotty/project/build.properties @@ -0,0 +1,3 @@ +# sbt-coursier scripted tests: required, as we default to sbt 1.0.3, +# but sbt-dotty requires sbt >= 1.2.7 +sbt.version=1.2.7 diff --git a/modules/sbt-coursier/src/sbt-test/shared-1/dotty/project/plugins.sbt b/modules/sbt-coursier/src/sbt-test/shared-1/dotty/project/plugins.sbt new file mode 100644 index 000000000..115463586 --- /dev/null +++ b/modules/sbt-coursier/src/sbt-test/shared-1/dotty/project/plugins.sbt @@ -0,0 +1,2 @@ +addSbtPlugin("ch.epfl.lamp" % "sbt-dotty" % "0.3.0") +addSbtCoursier diff --git a/modules/sbt-coursier/src/sbt-test/shared-1/dotty/project/project/plugins.sbt b/modules/sbt-coursier/src/sbt-test/shared-1/dotty/project/project/plugins.sbt new file mode 100644 index 000000000..71a44ffd3 --- /dev/null +++ b/modules/sbt-coursier/src/sbt-test/shared-1/dotty/project/project/plugins.sbt @@ -0,0 +1,13 @@ +addSbtPlugin { + + val name = sys.props.getOrElse( + "plugin.name", + sys.error("plugin.name Java property not set") + ) + val version = sys.props.getOrElse( + "plugin.version", + sys.error("plugin.version Java property not set") + ) + + "io.get-coursier" % name % version +} \ No newline at end of file diff --git a/modules/sbt-coursier/src/sbt-test/shared-1/dotty/src/main/scala/Main.scala b/modules/sbt-coursier/src/sbt-test/shared-1/dotty/src/main/scala/Main.scala new file mode 100644 index 000000000..8a44ae4ef --- /dev/null +++ b/modules/sbt-coursier/src/sbt-test/shared-1/dotty/src/main/scala/Main.scala @@ -0,0 +1,16 @@ + +object Main { + + def main(args: Array[String]): Unit = { + + runExample("Trait Params")(TraitParams.test) + + } + + private def runExample(name: String)(f: => Unit) = { + println(Console.MAGENTA + s"$name example:" + Console.RESET) + f + println() + } + +} diff --git a/modules/sbt-coursier/src/sbt-test/shared-1/dotty/src/main/scala/TraitParams.scala b/modules/sbt-coursier/src/sbt-test/shared-1/dotty/src/main/scala/TraitParams.scala new file mode 100644 index 000000000..5d4409971 --- /dev/null +++ b/modules/sbt-coursier/src/sbt-test/shared-1/dotty/src/main/scala/TraitParams.scala @@ -0,0 +1,21 @@ +/** + * Trait Parameters: https://dotty.epfl.ch/docs/reference/other-new-features/trait-parameters.html + */ +object TraitParams { + + trait Base(val msg: String) + class A extends Base("Hello") + class B extends Base("Dotty!") + + // Union types only exist in Dotty, so there's no chance that this will accidentally be compiled with Scala 2 + private def printMessages(msgs: (A | B)*) = println(msgs.map(_.msg).mkString(" ")) + + def test: Unit = { + + printMessages(new A, new B) + + // Sanity check the classpath: this won't run if the dotty jar is not present. + val x: Int => Int = z => z + x(1) + } +} diff --git a/modules/sbt-coursier/src/sbt-test/shared-1/dotty/test b/modules/sbt-coursier/src/sbt-test/shared-1/dotty/test new file mode 100644 index 000000000..62ea636c1 --- /dev/null +++ b/modules/sbt-coursier/src/sbt-test/shared-1/dotty/test @@ -0,0 +1 @@ +> run diff --git a/modules/sbt-lm-coursier/src/main/scala/coursier/sbtlmcoursier/LmCoursierPlugin.scala b/modules/sbt-lm-coursier/src/main/scala/coursier/sbtlmcoursier/LmCoursierPlugin.scala index 9c5c1da1c..857871620 100644 --- a/modules/sbt-lm-coursier/src/main/scala/coursier/sbtlmcoursier/LmCoursierPlugin.scala +++ b/modules/sbt-lm-coursier/src/main/scala/coursier/sbtlmcoursier/LmCoursierPlugin.scala @@ -7,7 +7,7 @@ import coursier.sbtcoursiershared.SbtCoursierShared import sbt.{AutoPlugin, Classpaths, Def, Setting, Task, taskKey} import sbt.Project.inTask import sbt.KeyRanks.DTask -import sbt.Keys.{appConfiguration, autoScalaLibrary, classpathTypes, dependencyResolution, excludeDependencies, scalaBinaryVersion, scalaOrganization, scalaVersion, streams, updateClassifiers, updateSbtClassifiers} +import sbt.Keys.{appConfiguration, autoScalaLibrary, classpathTypes, dependencyResolution, excludeDependencies, scalaBinaryVersion, scalaModuleInfo, scalaOrganization, scalaVersion, streams, updateClassifiers, updateSbtClassifiers} import sbt.librarymanagement.DependencyResolution object LmCoursierPlugin extends AutoPlugin { @@ -84,7 +84,7 @@ object LmCoursierPlugin extends AutoPlugin { streams.value.log ) val fallbackDeps = coursierFallbackDependencies.value - val autoScalaLib = autoScalaLibrary.value + val autoScalaLib = autoScalaLibrary.value && scalaModuleInfo.value.forall(_.overrideScalaVersion) val profiles = mavenProfiles.value val authenticationByRepositoryId = coursierCredentials.value.mapValues(_.authentication)