Skip to content

Commit

Permalink
Make all older Scala versions work
Browse files Browse the repository at this point in the history
Previously, we cross published 2.12.13 and for older versions we used 2.12.12 due to changes to compiler API. This however did not work for the sbt plugin, which had the coursier resolve a wrong version for a transitive dependency. Now, we are using a more base reporting API, which should work for both 2.12.12- and 2.12.13+ versions. I previously haven't noticed that this is possible.

The couriser issue is coursier/coursier#1950
  • Loading branch information
tgodzik committed Mar 26, 2021
1 parent d58d4fe commit 03b17d5
Show file tree
Hide file tree
Showing 7 changed files with 22 additions and 46 deletions.
2 changes: 2 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ jobs:
java: [[email protected], [email protected]]
command:
- "'++2.11.12 test'"
# Test legacy Scala versions, where reporting API changed
- "'++2.12.12 test'"
- "'++2.12.13 test' scripted"
- "'++2.13.4 test'"
- "'++3.0.0-M3 test'"
Expand Down
15 changes: 1 addition & 14 deletions build.sbt
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
import sbt.librarymanagement.CrossVersion
import scala.collection.mutable

def scala212 = "2.12.13"
def scala212Legacy = "2.12.12"
def scala211 = "2.11.12"
def scala213 = "2.13.4"
def scala3 = List("3.0.0-RC1", "3.0.0-M3", "3.0.0-M2")
Expand Down Expand Up @@ -68,7 +66,7 @@ def crossSetting[A](
inThisBuild(
List(
scalaVersion := scala212,
crossScalaVersions := List(scala212, scala212Legacy, scala211, scala213) ::: scala3,
crossScalaVersions := List(scala212, scala211, scala213) ::: scala3,
organization := "org.scalameta",
licenses := Seq(
"Apache-2.0" -> url("http://www.apache.org/licenses/LICENSE-2.0")
Expand Down Expand Up @@ -118,13 +116,6 @@ val V = new {
val scalacheck = "1.15.2"
}

val crossVersionLegacy = Def.setting {
CrossVersion.binaryWith(
prefix = "",
suffix = if (scalaVersion.value == scala212Legacy) ".12" else ""
)
}

lazy val pprintVersion = Def.setting {
if (scalaVersion.value.startsWith("2.11")) "0.5.4"
else "0.6.0"
Expand Down Expand Up @@ -163,7 +154,6 @@ lazy val runtime = project
sharedSettings,
moduleName := "mdoc-runtime",
unmanagedSourceDirectories.in(Compile) ++= multiScalaDirectories("runtime").value,
crossVersion := crossVersionLegacy.value,
libraryDependencies ++= crossSetting(
scalaVersion.value,
if2 = List(
Expand All @@ -184,7 +174,6 @@ lazy val mdoc = project
.settings(
sharedSettings,
unmanagedSourceDirectories.in(Compile) ++= multiScalaDirectories("mdoc").value,
crossVersion := crossVersionLegacy.value,
moduleName := "mdoc",
mainClass in assembly := Some("mdoc.Main"),
assemblyJarName in assembly := "mdoc.jar",
Expand Down Expand Up @@ -342,7 +331,6 @@ lazy val plugin = project
managedResourceDirectories.in(Compile).value.head / "sbt-mdoc.properties"
val props = new java.util.Properties()
props.put("version", version.value)
props.put("scala212Legacy", scala212Legacy)
IO.write(props, "sbt-mdoc properties", out)
List(out)
},
Expand All @@ -366,7 +354,6 @@ lazy val js = project
.in(file("mdoc-js"))
.settings(
sharedSettings,
crossVersion := crossVersionLegacy.value,
crossScalaVersions --= scala3,
moduleName := "mdoc-js",
libraryDependencies ++=
Expand Down
1 change: 0 additions & 1 deletion mdoc-sbt/src/main/scala/mdoc/BuildInfo.scala
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import java.util.Properties
object BuildInfo {
def version: String =
props.getProperty("version", "0.8.0-SNAPSHOT")
def scala212Legacy: String = props.getProperty("scala212Legacy", "2.12.12")

private lazy val props: Properties = {
val props = new Properties()
Expand Down
11 changes: 1 addition & 10 deletions mdoc-sbt/src/main/scala/mdoc/MdocPlugin.scala
Original file line number Diff line number Diff line change
Expand Up @@ -66,13 +66,6 @@ object MdocPlugin extends AutoPlugin {
}
}

def compatibleScalaVersion = Def.setting {
scalaVersion.value.takeWhile(_ != '-').split('.').take(3).map(_.toInt) match {
case Array(2, 12, minor) if minor <= 12 => BuildInfo.scala212Legacy
case _ => scalaBinaryVersion.value
}
}

override def projectSettings: Seq[Def.Setting[_]] =
List(
mdocIn := baseDirectory.in(ThisBuild).value / "docs",
Expand All @@ -98,9 +91,7 @@ object MdocPlugin extends AutoPlugin {
val isJS = mdocJS.value.isDefined
if (mdocAutoDependency.value) {
val suffix = if (isJS) "-js" else ""
List(
"org.scalameta" % s"mdoc${suffix}_${compatibleScalaVersion.value}" % BuildInfo.version
)
List("org.scalameta" %% s"mdoc$suffix" % BuildInfo.version)
} else {
List()
}
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package mdoc.internal.markdown

import scala.tools.nsc.Settings
import scala.tools.nsc.reporters.Reporter
import scala.reflect.internal.util.Position
import scala.reflect.internal.util.NoPosition

trait VersionSpecificFilteringReporter extends Reporter { self: FilterStoreReporter =>
override def info0(pos: Position, msg: String, severity: Severity, force: Boolean): Unit = {
if (!infos.exists(info => pos != NoPosition && info.pos.point == pos.point))
add(pos, msg, severity)
}

override def hasErrors: Boolean = infos.exists(_.severity == ERROR)

override def hasWarnings: Boolean = infos.exists(_.severity == WARNING)

}

0 comments on commit 03b17d5

Please sign in to comment.