Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ jobs:
- uses: coursier/setup-action@v1
with:
apps: sbt
jvm: zulu:17 # for scala 3.8+
- run: ./bin/scalafmt --test
- run: sbt "dogfoodScalafixInterfaces; scalafixAll --check"
mima:
Expand All @@ -55,4 +56,5 @@ jobs:
- uses: coursier/setup-action@v1
with:
apps: sbt
jvm: zulu:17 # for scala 3.8+
- run: sbt versionPolicyCheck
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
- uses: coursier/setup-action@v1
with:
apps: sbt
jvm: temurin:8
jvm: temurin:17 # TODO: check the bytecode format for scala <3.8
- uses: olafurpg/setup-gpg@v3
- name: Check that major or minor was bumped upon compatibility breakage
if: startsWith(github.ref, 'refs/tags/v')
Expand Down
2 changes: 1 addition & 1 deletion bin/test-release.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ version=$1
scala212=2.12.20
scala213=2.13.17
scala3LTS=3.3.7
scala3Next=3.7.4
scala3Next=3.8.0

cs resolve \
ch.epfl.scala:scalafix-interfaces:$version \
Expand Down
1 change: 1 addition & 0 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ lazy val interfaces = project
props.put("scala35", scala35)
props.put("scala36", scala36)
props.put("scala37", scala37)
props.put("scala38", scala38)
props.put("scala3LTS", scala3LTS)
props.put("scala3Next", scala3Next)
val out =
Expand Down
3 changes: 2 additions & 1 deletion project/Dependencies.scala
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,9 @@ object Dependencies {
val scala35 = "3.5.2"
val scala36 = "3.6.4"
val scala37 = "3.7.4"
val scala38 = "3.8.0-RC1"
val scala3LTS = scala33
val scala3Next = sys.props.getOrElse("scala3.nightly", scala37)
val scala3Next = sys.props.getOrElse("scala3.nightly", scala38)

val bijectionCoreV = "0.9.8"
val collectionCompatV = "2.14.0"
Expand Down
3 changes: 2 additions & 1 deletion project/Mima.scala
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@ object Mima {
// See https://github.com/lightbend/mima
Seq(
ProblemFilters.exclude[Problem]("scalafix.internal.*"),
ProblemFilters.exclude[Problem]("scala.meta.internal.*")
ProblemFilters.exclude[Problem]("scala.meta.internal.*"),
// Exceptions
ProblemFilters.exclude[ReversedMissingMethodProblem]("scalafix.interfaces.Scalafix.scala38")
)
}
}
24 changes: 18 additions & 6 deletions project/ScalafixBuild.scala
Original file line number Diff line number Diff line change
Expand Up @@ -34,16 +34,17 @@ object ScalafixBuild extends AutoPlugin with GhpagesKeys {
// https://github.com/scalameta/scalameta/issues/2485
lazy val coreScalaVersions = Seq(scala212, scala213)
lazy val cliScalaVersions = {
val scala3Versions = Seq(scala33, scala35, scala36, scala37)
val scala3Versions = Seq(scala33, scala35, scala36, scala37, scala38)
val jdk = System.getProperty("java.specification.version").toDouble
val unsupportedVersions =
if (jdk >= 25) Seq(scala212, scala35, scala36)
else if (jdk < 17) Seq(scala38)
else Nil
(coreScalaVersions ++ scala3Versions :+ scala3Next)
.diff(unsupportedVersions)
}
lazy val cliScalaVersionsWithTargets: Seq[(String, TargetAxis)] =
cliScalaVersions.map(sv => (sv, TargetAxis(sv))) ++
cliScalaVersions.map(sv => (sv, TargetAxis(sv))) ++ {
cliScalaVersions.intersect(Seq(scala213, scala212)).flatMap { sv =>
def previousVersions(scalaVersion: String): Seq[String] = {
val split = scalaVersion.split('.')
Expand All @@ -66,6 +67,10 @@ object ScalafixBuild extends AutoPlugin with GhpagesKeys {
(scala3Next, TargetAxis(scala213)),
(scala3Next, TargetAxis(scala3LTS))
)
}.filter { case (sv, target) =>
val jdk = System.getProperty("java.specification.version").toDouble
jdk >= 17 || (sv != scala38 && target.scalaVersion != scala38)
}

lazy val publishLocalTransitive =
taskKey[Unit]("Run publishLocal on this project and its dependencies")
Expand All @@ -85,16 +90,21 @@ object ScalafixBuild extends AutoPlugin with GhpagesKeys {
scalaVersion.value.startsWith("2.12")
}
lazy val warnUnused = Def.setting {
if (isScala3.value)
val minor = scalaVersion.value.split('.')(1).toInt
if (isScala3.value && minor >= 7)
Seq("-Wunused:all")
else if (isScala3.value)
Seq(
"-Wunused:all",
"-Wunused:unsafe-warn-patvars" // only needed for <3.7.0
"-Wunused:unsafe-warn-patvars"
)
else if (isScala213.value) Seq("-Wunused")
else Seq("-Ywarn-unused")
}
lazy val targetJvm = Def.setting {
if (isScala3.value) Seq("-release:8")
val minor = scalaVersion.value.split('.')(1).toInt
if (isScala3.value && minor >= 8) Seq("-release:17")
else if (isScala3.value) Seq("-release:8")
else if (isScala213.value) Seq("-release", "8")
else Seq("-target:jvm-1.8")
}
Expand Down Expand Up @@ -150,6 +160,7 @@ object ScalafixBuild extends AutoPlugin with GhpagesKeys {
"scala35" -> scala35,
"scala36" -> scala36,
"scala37" -> scala37,
"scala38" -> scala38,
"scala3LTS" -> scala3LTS,
"scala3Next" -> scala3Next,
sbtVersion
Expand Down Expand Up @@ -241,7 +252,8 @@ object ScalafixBuild extends AutoPlugin with GhpagesKeys {
)

private val PreviousScalaVersion: Map[String, Option[String]] = Map(
scala37 -> Some("3.7.3")
scala37 -> Some("3.7.3"),
scala38 -> None
)

override def buildSettings: Seq[Setting[_]] = List(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ final class ScalafixImpl extends Scalafix {
Versions.scala36
override def scala37(): String =
Versions.scala37
override def scala38(): String =
Versions.scala38
override def scala3LTS(): String =
Versions.scala3LTS
override def scala3Next(): String =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,11 @@ public interface Scalafix {
*/
String scala37();

/**
* The Scala 3.8 version in {@link #supportedScalaVersions()}
*/
String scala38();

/**
* The Scala 3 LTS version in {@link #supportedScalaVersions()}
*/
Expand Down Expand Up @@ -162,6 +167,8 @@ static Scalafix fetchAndClassloadInstance(String requestedScalaVersion, List<Rep
scalaVersionKey = "scala36";
} else if (requestedScalaMajorMinorOrMajorVersion.equals("3.7")) {
scalaVersionKey = "scala37";
} else if (requestedScalaMajorMinorOrMajorVersion.equals("3.8")) {
scalaVersionKey = "scala38";
} else if (requestedScalaMajorMinorOrMajorVersion.startsWith("3")) {
scalaVersionKey = "scala3Next";
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ class ScalafixSuite extends AnyFunSuite {
assert(api.scala35() == Versions.scala35)
assert(api.scala36() == Versions.scala36)
assert(api.scala37() == Versions.scala37)
assert(api.scala38() == Versions.scala38)
assert(api.scala3LTS() == Versions.scala3LTS)
assert(api.scala3Next() == Versions.scala3Next)
assert(
Expand Down Expand Up @@ -134,12 +135,12 @@ class ScalafixSuite extends AnyFunSuite {
}

test("classload Scala 3 Next with full version") {
val scalafixAPI = Scalafix.fetchAndClassloadInstance("3.7.0", repositories)
val scalafixAPI = Scalafix.fetchAndClassloadInstance("3.8.0", repositories)
assert(scalafixAPI.scalaVersion() == Versions.scala3Next)
}

test("classload Scala 3 Next with major.minor version") {
val scalafixAPI = Scalafix.fetchAndClassloadInstance("3.7", repositories)
val scalafixAPI = Scalafix.fetchAndClassloadInstance("3.8", repositories)
assert(scalafixAPI.scalaVersion() == Versions.scala3Next)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ class InterfacesPropertiesSuite extends AnyFunSuite with BeforeAndAfterAll {
check("scala35", Versions.scala35)
check("scala36", Versions.scala36)
check("scala37", Versions.scala37)
check("scala38", Versions.scala38)
check("scala3LTS", Versions.scala3LTS)
check("scala3Next", Versions.scala3Next)

Expand Down
Loading