diff --git a/build.sbt b/build.sbt index 31c54f8..0693245 100755 --- a/build.sbt +++ b/build.sbt @@ -9,54 +9,68 @@ addCommandAlias( "ci-test", ";scalafmtCheckAll; scalafmtSbtCheck; +test; +publishLocal; sbt-exercise/scripted" ) + addCommandAlias("ci-docs", ";github; mdoc; headerCreateAll") addCommandAlias("ci-publish", ";github; ci-release") lazy val V = new { val cats: String = "2.7.0" - val collectioncompat: String = "2.6.0" + val catsEffect: String = "3.3.4" val github4s: String = "0.30.0" val http4s: String = "0.23.8" val runtime: String = "0.7.0" + val sbtIO = "1.6.0" val scala: String = "2.13.8" val scala212: String = "2.12.15" val scalacheck: String = "1.15.4" val scalacheckShapeless: String = "1.3.0" val scalamacros: String = "2.1.1" val scalariform: String = "0.2.10" - val scalatest: String = "3.2.10" + val scalatest: String = "3.2.11" + val scalaXml: String = "2.0.1" + val shapeless: String = "2.3.7" } lazy val definitions = (project in file("definitions")) .settings(name := "definitions") .settings( - crossScalaVersions := Seq(V.scala212, V.scala), + crossScalaVersions := Seq(V.scala, V.scala212), libraryDependencies ++= Seq( "org.typelevel" %% "cats-core" % V.cats, - "org.scalatest" %% "scalatest" % V.scalatest, "org.scalacheck" %% "scalacheck" % V.scalacheck, - "com.github.alexarchambault" %% "scalacheck-shapeless_1.15" % V.scalacheckShapeless - ) + "com.github.alexarchambault" %% "scalacheck-shapeless_1.15" % V.scalacheckShapeless, + "org.scalatest" %% "scalatest-core" % V.scalatest, + "com.chuusai" %% "shapeless" % V.shapeless + ), + dependencyOverrides += "org.scala-lang.modules" %% "scala-xml" % "1.3.0" ) lazy val compiler = (project in file("compiler")) .settings(name := "exercise-compiler") .settings( exportJars := true, - crossScalaVersions := Seq(V.scala212, V.scala), + crossScalaVersions := Seq(V.scala, V.scala212), scalacOptions -= "-Xfatal-warnings", libraryDependencies ++= Seq( "org.scala-exercises" %% "runtime" % V.runtime exclude ("org.scala-lang.modules", "scala-collection-compat"), - "org.scala-lang" % "scala-compiler" % scalaVersion.value, - "org.scala-lang.modules" %% "scala-collection-compat" % V.collectioncompat, - "org.typelevel" %% "cats-core" % V.cats % Compile, - "org.http4s" %% "http4s-blaze-client" % V.http4s, - "org.http4s" %% "http4s-circe" % V.http4s, - "com.47deg" %% "github4s" % V.github4s, - "org.scalariform" %% "scalariform" % V.scalariform, - "org.typelevel" %% "cats-laws" % V.cats % Test, - "org.scalatest" %% "scalatest" % V.scalatest % Test - ) + "org.scala-lang" % "scala-compiler" % scalaVersion.value, + "org.scala-lang.modules" %% "scala-xml" % V.scalaXml, + "org.typelevel" %% "cats-core" % V.cats % Compile, + "org.http4s" %% "http4s-blaze-client" % V.http4s, + "org.http4s" %% "http4s-client" % V.http4s, + "com.47deg" %% "github4s" % V.github4s, + "org.scalariform" %% "scalariform" % V.scalariform, + "org.typelevel" %% "cats-kernel" % V.cats, + "org.typelevel" %% "cats-laws" % V.cats % Test, + "org.typelevel" %% "cats-effect" % V.catsEffect, + "org.typelevel" %% "cats-effect-kernel" % V.catsEffect, + "org.scalatest" %% "scalatest-core" % V.scalatest % Test, + "org.scalatest" %% "scalatest" % V.scalatest % Test + ) ++ (if (scalaVersion.value == V.scala) + Seq("org.scala-lang" % "scala-reflect" % scalaVersion.value) + else Seq.empty), + dependencyOverrides += "org.scala-lang.modules" %% "scala-xml" % "1.3.0", + unusedCompileDependenciesFilter -= moduleFilter("org.scala-lang", "scala-compiler") ) .dependsOn(definitions) @@ -67,8 +81,26 @@ lazy val `sbt-exercise` = (project in file("sbt-exercise")) .settings( scalacOptions -= "-Xfatal-warnings", scalacOptions += "-Ypartial-unification", - libraryDependencies += "org.typelevel" %% "cats-core" % V.cats % Compile, - addCompilerPlugin("org.scalamacros" % "paradise" % V.scalamacros cross CrossVersion.full), + libraryDependencies ++= Seq( + "org.scala-sbt" %% "actions" % sbtVersion.value, + "org.scala-sbt" %% "collections" % sbtVersion.value, + "org.scala-sbt" % "compiler-interface" % sbtVersion.value, + "org.scala-sbt" %% "core-macros" % sbtVersion.value, + "org.scala-sbt" %% "io" % V.sbtIO, + "org.scala-sbt" %% "librarymanagement-core" % sbtVersion.value, + "org.scala-sbt" %% "main" % sbtVersion.value, + "org.scala-sbt" %% "main-settings" % sbtVersion.value, + "org.scala-sbt" % "sbt" % sbtVersion.value, + "org.scala-sbt" %% "task-system" % sbtVersion.value, + "org.scala-sbt" %% "util-logging" % sbtVersion.value, + "org.scala-sbt" %% "util-position" % sbtVersion.value, + "org.scala-sbt" %% "zinc-apiinfo" % sbtVersion.value, + "org.scala-sbt" %% "zinc-classpath" % sbtVersion.value, + "org.scala-sbt" %% "zinc-core" % sbtVersion.value, + "org.typelevel" %% "cats-core" % V.cats, + "org.typelevel" %% "cats-kernel" % V.cats + ), + dependencyOverrides += "org.scala-lang.modules" %% "scala-xml" % "1.3.0", // Leverage build info to populate compiler classpath-- compilerClasspath := { (compiler / Compile / fullClasspath) }.value, buildInfoObject := "Meta", diff --git a/compiler/src/main/scala/org/scalaexercises/exercises/compiler/Compiler.scala b/compiler/src/main/scala/org/scalaexercises/exercises/compiler/Compiler.scala index 27f2012..6c16998 100644 --- a/compiler/src/main/scala/org/scalaexercises/exercises/compiler/Compiler.scala +++ b/compiler/src/main/scala/org/scalaexercises/exercises/compiler/Compiler.scala @@ -290,8 +290,7 @@ case class Compiler() { val libraryAsDependency = s"${buildMetaInfo.organization}:${buildMetaInfo.name}_${buildMetaInfo.scalaVersion .substring(0, 4)}:${buildMetaInfo.version}" - List(libraryAsDependency) // :: buildMetaInfo.libraryDependencies.toList - // Evaluator can resolve transitive dependencies, the reason of only passing the library as a dependency + List(libraryAsDependency) } val (buildInfoTerm, buildInfoTree) = diff --git a/compiler/src/main/scala/org/scalaexercises/exercises/compiler/SourceTextExtraction.scala b/compiler/src/main/scala/org/scalaexercises/exercises/compiler/SourceTextExtraction.scala index 3c89a05..526cf50 100644 --- a/compiler/src/main/scala/org/scalaexercises/exercises/compiler/SourceTextExtraction.scala +++ b/compiler/src/main/scala/org/scalaexercises/exercises/compiler/SourceTextExtraction.scala @@ -21,7 +21,6 @@ import java.io.File import org.scalaexercises.exercises.compiler.CompilerSettings import scala.annotation.tailrec -import scala.collection.compat._ import scala.reflect.internal.util.BatchSourceFile import scala.tools.nsc._ import scala.tools.nsc.doc.{Settings => _, _} @@ -91,7 +90,7 @@ class SourceTextExtraction { val rawImports = extraction.imports val paths = rawImports.map(expandPath) - val imports = paths.groupBy(_._1).view.mapValues(_.map(_._2)).toMap + val imports = paths.groupBy(_._1).mapValues(_.map(_._2)).toMap val methods = extraction.methods.map(expandPath).map { case (k, v) => lazy val methodImports = k diff --git a/project/build.properties b/project/build.properties index 3161d21..203e3dc 100755 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=1.6.1 +sbt.version=1.6.1 \ No newline at end of file diff --git a/project/plugins.sbt b/project/plugins.sbt index a11878f..939a060 100755 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,10 +1,14 @@ -addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.10.0") -addSbtPlugin("org.scalameta" % "sbt-mdoc" % "2.2.24") -addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.6") -addSbtPlugin("com.github.sbt" % "sbt-ci-release" % "1.5.10") -addSbtPlugin("de.heikoseeberger" % "sbt-header" % "5.6.0") -addSbtPlugin("com.alejandrohdezma" % "sbt-github" % "0.11.2") -addSbtPlugin("com.alejandrohdezma" % "sbt-github-header" % "0.11.2") -addSbtPlugin("com.alejandrohdezma" % "sbt-github-mdoc" % "0.11.2") -addSbtPlugin("com.alejandrohdezma" % "sbt-remove-test-from-pom" % "0.1.0") -addSbtPlugin("io.github.davidgregory084" % "sbt-tpolecat" % "0.1.20") +addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.10.0") +addSbtPlugin("org.scalameta" % "sbt-mdoc" % "2.2.24") +addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.6") +addSbtPlugin("com.github.sbt" % "sbt-ci-release" % "1.5.10") +addSbtPlugin("de.heikoseeberger" % "sbt-header" % "5.6.0") +addSbtPlugin("com.alejandrohdezma" % "sbt-github" % "0.11.2") +addSbtPlugin("com.alejandrohdezma" % "sbt-github-header" % "0.11.2") +addSbtPlugin("com.alejandrohdezma" % "sbt-github-mdoc" % "0.11.2") +addSbtPlugin("com.alejandrohdezma" % "sbt-remove-test-from-pom" % "0.1.0") +addSbtPlugin("io.github.davidgregory084" % "sbt-tpolecat" % "0.1.20") +addSbtPlugin("ch.epfl.scala" % "sbt-missinglink" % "0.3.3") +addSbtPlugin("com.github.cb372" % "sbt-explicit-dependencies" % "0.2.16") + +libraryDependencies += "com.spotify" % "missinglink-core" % "0.2.5" diff --git a/sbt-exercise/src/sbt-test/sbt-exercise/basic/build.sbt b/sbt-exercise/src/sbt-test/sbt-exercise/basic/build.sbt index 252be70..9ddb18f 100644 --- a/sbt-exercise/src/sbt-test/sbt-exercise/basic/build.sbt +++ b/sbt-exercise/src/sbt-test/sbt-exercise/basic/build.sbt @@ -11,10 +11,11 @@ lazy val content = (project in file("content")) Resolver.defaultLocal ), libraryDependencies ++= Seq( - "org.scala-exercises" %% "runtime" % "0.6.0", + "org.scala-exercises" %% "runtime" % "0.7.0", "org.scala-exercises" %% "exercise-compiler" % pluginVersion changing (), "org.scala-exercises" %% "definitions" % pluginVersion changing () - ) + ), + dependencyOverrides += "org.scala-lang.modules" %% "scala-xml" % "2.0.1" ) lazy val contentInPackages = (project in file("contentinpackages")) @@ -26,10 +27,11 @@ lazy val contentInPackages = (project in file("contentinpackages")) Resolver.defaultLocal ), libraryDependencies ++= Seq( - "org.scala-exercises" %% "runtime" % "0.6.0", + "org.scala-exercises" %% "runtime" % "0.7.0", "org.scala-exercises" %% "exercise-compiler" % pluginVersion changing (), "org.scala-exercises" %% "definitions" % pluginVersion changing () - ) + ), + dependencyOverrides += "org.scala-lang.modules" %% "scala-xml" % "2.0.1" ) lazy val check = (project in file("check")) @@ -39,5 +41,6 @@ lazy val check = (project in file("check")) resolvers ++= Seq( Resolver.sonatypeRepo("snapshots"), Resolver.defaultLocal - ) + ), + dependencyOverrides += "org.scala-lang.modules" %% "scala-xml" % "2.0.1" ) diff --git a/sbt-exercise/src/sbt-test/sbt-exercise/scalariform/build.sbt b/sbt-exercise/src/sbt-test/sbt-exercise/scalariform/build.sbt index 2ccb721..42dba38 100644 --- a/sbt-exercise/src/sbt-test/sbt-exercise/scalariform/build.sbt +++ b/sbt-exercise/src/sbt-test/sbt-exercise/scalariform/build.sbt @@ -9,6 +9,7 @@ lazy val root = (project in file(".")) ), libraryDependencies ++= Seq( "org.scala-exercises" %% "exercise-compiler" % pluginVersion changing () - ) + ), + dependencyOverrides += "org.scala-lang.modules" %% "scala-xml" % "2.0.1" ) .enablePlugins(ExerciseCompilerPlugin)