diff --git a/build.sbt b/build.sbt index 90d63ab78..e9448bcb4 100644 --- a/build.sbt +++ b/build.sbt @@ -98,7 +98,6 @@ def commonBaseSettings: Seq[Setting[_]] = Def.settings( (Compile / unmanagedSources / inputFileStamps).dependsOn(Compile / javafmtOnCompile).value, Test / unmanagedSources / inputFileStamps := (Test / unmanagedSources / inputFileStamps).dependsOn(Test / javafmtOnCompile).value, - crossScalaVersions := List(scala212, scala213), Test / publishArtifact := false, run / fork := true, ) @@ -112,8 +111,11 @@ def commonSettings: Seq[Setting[_]] = } } } -def utilCommonSettings: Seq[Setting[_]] = - baseSettings :+ (crossScalaVersions := (scala212 :: scala213 :: Nil)) + +def utilCommonSettings: Seq[Setting[_]] = Def.settings( + baseSettings, + crossScalaVersions := Seq(scala212, scala213, scala3) +) def minimalSettings: Seq[Setting[_]] = commonSettings ++ customCommands ++ @@ -261,7 +263,7 @@ val collectionProj = (project in file("util-collection")) .settings( name := "Collections", testedBaseSettings, - utilCommonSettings, + baseSettings, libraryDependencies ++= Seq(sjsonNewScalaJson.value), libraryDependencies ++= (CrossVersion.partialVersion(scalaVersion.value) match { case Some((2, major)) if major <= 12 => Seq() @@ -308,8 +310,7 @@ val logicProj = (project in file("internal") / "util-logic") // the analysis compiler phases and passed back to sbt. The API structures are defined in a simple // format from which Java sources are generated by the datatype generator Projproject lazy val utilInterface = (project in file("internal") / "util-interface").settings( - utilCommonSettings, - crossScalaVersions := List(scala212), + baseSettings, javaOnlySettings, crossPaths := false, autoScalaLibrary := false, @@ -334,7 +335,8 @@ lazy val utilPosition = (project in file("internal") / "util-position") utilMimaSettings, ) -lazy val utilCore = project.in(file("internal") / "util-core") +lazy val utilCore = project + .in(file("internal") / "util-core") .settings( utilCommonSettings, name := "Util Core", @@ -517,7 +519,6 @@ lazy val testingProj = (project in file("testing")) lazy val testAgentProj = (project in file("testing") / "agent") .settings( minimalSettings, - crossScalaVersions := Seq(baseScalaVersion), crossPaths := false, autoScalaLibrary := false, Compile / doc / javacOptions := Nil, @@ -607,7 +608,6 @@ lazy val scriptedSbtReduxProj = (project in file("scripted-sbt-redux")) .dependsOn(sbtProj % "compile;test->test", commandProj, utilLogging, utilScripted) .settings( baseSettings, - crossScalaVersions := Seq(baseScalaVersion), name := "Scripted sbt Redux", libraryDependencies ++= Seq(launcherInterface % "provided"), mimaSettings, @@ -619,7 +619,6 @@ lazy val scriptedSbtOldProj = (project in file("scripted-sbt-old")) .dependsOn(scriptedSbtReduxProj) .settings( baseSettings, - crossScalaVersions := Seq(baseScalaVersion), name := "Scripted sbt", mimaSettings, mimaBinaryIssueFilters ++= Seq( @@ -647,7 +646,6 @@ lazy val dependencyTreeProj = (project in file("dependency-tree")) .settings( sbtPlugin := true, baseSettings, - crossScalaVersions := Seq(baseScalaVersion), name := "sbt-dependency-tree", publishMavenStyle := true, // mimaSettings, @@ -805,7 +803,7 @@ lazy val commandProj = (project in file("main-command")) lazy val coreMacrosProj = (project in file("core-macros")) .dependsOn(collectionProj) .settings( - testedBaseSettings :+ (crossScalaVersions := (scala212 :: scala213 :: Nil)), + testedBaseSettings, name := "Core Macros", SettingKey[Boolean]("exportPipelining") := false, mimaSettings, @@ -976,7 +974,6 @@ lazy val sbtProj = (project in file("sbt-app")) if (scalaVersion.value == baseScalaVersion) version.value else version2_13.value }, - crossScalaVersions := Seq(baseScalaVersion), crossPaths := false, crossTarget := { target.value / scalaVersion.value }, javaOptions ++= Seq("-Xdebug", "-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"), @@ -1002,7 +999,6 @@ lazy val serverTestProj = (project in file("server-test")) .dependsOn(sbtProj % "compile->test", scriptedSbtReduxProj % "compile->test") .settings( testedBaseSettings, - crossScalaVersions := Seq(baseScalaVersion), bspEnabled := false, publish / skip := true, // make server tests serial @@ -1130,8 +1126,7 @@ lazy val sbtBig = (project in file(".big")) lazy val lowerUtils = (project in (file("internal") / "lower")) .aggregate(lowerUtilProjects.map(p => LocalProject(p.id)): _*) .settings( - publish / skip := true, - crossScalaVersions := Nil, + publish / skip := true ) lazy val upperModules = (project in (file("internal") / "upper")) @@ -1140,8 +1135,7 @@ lazy val upperModules = (project in (file("internal") / "upper")) diff Seq(bundledLauncherProj)).map(p => LocalProject(p.id)): _* ) .settings( - publish / skip := true, - crossScalaVersions := Nil, + publish / skip := true ) lazy val sbtIgnoredProblems = { @@ -1196,7 +1190,6 @@ lazy val vscodePlugin = (project in file("vscode-sbt-scala")) .settings( bspEnabled := false, crossPaths := false, - crossScalaVersions := Seq(baseScalaVersion), publish / skip := true, Compile / compile := { val _ = update.value @@ -1278,8 +1271,7 @@ def allProjects = // These need to be cross published to 2.12 and 2.13 for Zinc lazy val lowerUtilProjects = Seq( - collectionProj, - coreMacrosProj, + utilCore, utilCache, utilControl, utilInterface, diff --git a/internal/util-core/src/main/scala-2.13/sbt/internal/util/StringTypeTag.scala b/internal/util-core/src/main/scala-2/sbt/internal/util/appmacro/StringTypeTag.scala similarity index 91% rename from internal/util-core/src/main/scala-2.13/sbt/internal/util/StringTypeTag.scala rename to internal/util-core/src/main/scala-2/sbt/internal/util/appmacro/StringTypeTag.scala index d9abff119..ee7547ec7 100644 --- a/internal/util-core/src/main/scala-2.13/sbt/internal/util/StringTypeTag.scala +++ b/internal/util-core/src/main/scala-2/sbt/internal/util/appmacro/StringTypeTag.scala @@ -6,7 +6,7 @@ * Licensed under Apache License 2.0 (see LICENSE) */ -package sbt.internal.util +package sbt.internal.util.appmacro import scala.language.experimental.macros import scala.reflect.macros.blackbox @@ -33,6 +33,6 @@ object StringTypeTag { } val key = Literal(Constant(typeToString(tpe))) - q"new sbt.internal.util.StringTypeTag[$tpe]($key)" + q"new sbt.internal.util.appmacro.StringTypeTag[$tpe]($key)" } } diff --git a/internal/util-core/src/main/scala-3/sbt/internal/util/StringTypeTag.scala b/internal/util-core/src/main/scala-3/sbt/internal/util/appmacro/StringTypeTag.scala similarity index 96% rename from internal/util-core/src/main/scala-3/sbt/internal/util/StringTypeTag.scala rename to internal/util-core/src/main/scala-3/sbt/internal/util/appmacro/StringTypeTag.scala index 4cc8c2981..a144923a9 100644 --- a/internal/util-core/src/main/scala-3/sbt/internal/util/StringTypeTag.scala +++ b/internal/util-core/src/main/scala-3/sbt/internal/util/appmacro/StringTypeTag.scala @@ -5,7 +5,7 @@ * Licensed under Apache License 2.0 (see LICENSE) */ -package sbt.internal.util +package sbt.internal.util.appmacro final class StringTypeTag[A](val key: String): override def toString(): String = key diff --git a/internal/util-logging/src/main/scala/sbt/internal/util/ManagedLogger.scala b/internal/util-logging/src/main/scala/sbt/internal/util/ManagedLogger.scala index 3c9d90643..e0ca75aed 100644 --- a/internal/util-logging/src/main/scala/sbt/internal/util/ManagedLogger.scala +++ b/internal/util-logging/src/main/scala/sbt/internal/util/ManagedLogger.scala @@ -10,7 +10,7 @@ package sbt.internal.util import sbt.internal.util.codec.JsonProtocol._ import sbt.util._ import sjsonnew.JsonFormat -import sbt.internal.util.StringTypeTag +import sbt.internal.util.appmacro.StringTypeTag private[sbt] trait MiniLogger { def log[T](level: Level.Value, message: ObjectEvent[T]): Unit diff --git a/internal/util-logging/src/main/scala/sbt/util/LogExchange.scala b/internal/util-logging/src/main/scala/sbt/util/LogExchange.scala index 5d63b2418..7edd4d3ec 100644 --- a/internal/util-logging/src/main/scala/sbt/util/LogExchange.scala +++ b/internal/util-logging/src/main/scala/sbt/util/LogExchange.scala @@ -12,7 +12,7 @@ import org.apache.logging.log4j.core.layout.PatternLayout import org.apache.logging.log4j.core.{ LoggerContext => XLoggerContext } import org.apache.logging.log4j.{ LogManager => XLogManager } import sbt.internal.util.{ Appender, ManagedLogger, TraceEvent, SuccessEvent, Util } -import sbt.internal.util.StringTypeTag +import sbt.internal.util.appmacro.StringTypeTag import java.util.concurrent.ConcurrentHashMap import scala.collection.concurrent diff --git a/internal/util-logging/src/test/scala/LogExchangeSpec.scala b/internal/util-logging/src/test/scala/LogExchangeSpec.scala deleted file mode 100644 index 57dfbe03c..000000000 --- a/internal/util-logging/src/test/scala/LogExchangeSpec.scala +++ /dev/null @@ -1,44 +0,0 @@ -/* - * sbt - * Copyright 2011 - 2018, Lightbend, Inc. - * Copyright 2008 - 2010, Mark Harrah - * Licensed under Apache License 2.0 (see LICENSE) - */ - -package sbt.util - -import sbt.internal.util._ -import sbt.internal.util.appmacro.StringTypeTag -import org.scalatest.flatspec.AnyFlatSpec -import org.scalatest.matchers.should.Matchers - -class LogExchangeSpec extends AnyFlatSpec with Matchers { - import LogExchange._ - - checkTypeTag("stringTypeTagThrowable", stringTypeTagThrowable, StringTypeTag[Throwable]) - - checkTypeTag( - "stringTypeTagTraceEvent", - stringTypeTagTraceEvent, - StringTypeTag[TraceEvent] - ) - checkTypeTag( - "stringTypeTagSuccessEvent", - stringTypeTagSuccessEvent, - StringTypeTag[SuccessEvent] - ) - - private def checkTypeTag[A](name: String, inc: StringTypeTag[A], exp: StringTypeTag[A]): Unit = - s"LogExchange.$name" should s"match real StringTypeTag[$exp]" in { - val incomingString = inc.key - val expectedString = exp.key - if ((incomingString startsWith "scala.") || (expectedString startsWith "scala.")) { - // > historically [Scala] has been inconsistent whether `scala.` is included, or not - // > would it be hard to make the test accept either result? - // https://github.com/scala/community-builds/pull/758#issuecomment-409760633 - assert((incomingString stripPrefix "scala.") == (expectedString stripPrefix "scala.")) - } else { - assert(incomingString == expectedString) - } - } -} diff --git a/internal/util-logging/src/test/scala/ManagedLoggerSpec.scala b/internal/util-logging/src/test/scala/ManagedLoggerSpec.scala index b995b8621..4cc44fb29 100644 --- a/internal/util-logging/src/test/scala/ManagedLoggerSpec.scala +++ b/internal/util-logging/src/test/scala/ManagedLoggerSpec.scala @@ -92,7 +92,7 @@ class ManagedLoggerSpec extends AnyFlatSpec with Matchers { } { pool.submit(new Runnable { def run(): Unit = { - val stringTypeTag = StringTypeTag[List[Int]] + val stringTypeTag = implicitly[StringTypeTag[List[Int]]] val log = newLogger(s"foo$i") context.addAppender(s"foo$i", asyncStdout -> Level.Info) if (i % 100 == 0) {