Skip to content

Commit 7fc48c4

Browse files
authored
build and test against scala 3.9.0 (new LTS) (#2498)
- Keep a Scala 3 Next reference for backward compat, matching Scala 3 LTS until 3.10.0 is out. - Keep building (unpublished/unused) core3 & reflect3 with Scala 3.3 for now, as it's unclear if/when we will need to use the latest LTS.
1 parent 2001283 commit 7fc48c4

16 files changed

Lines changed: 43 additions & 38 deletions

File tree

bin/test-release.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ version=$1
55

66
scala212=2.12.21
77
scala213=2.13.18
8-
scala3LTS=3.3.8
9-
scala3Next=3.8.4
8+
scala3LTS=3.9.0
9+
scala3Next=3.9.0
1010

1111
cs resolve \
1212
ch.epfl.scala:scalafix-interfaces:$version \

build.sbt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ lazy val interfaces = project
3838
props.put("scala36", scala36)
3939
props.put("scala37", scala37)
4040
props.put("scala38", scala38)
41+
props.put("scala39", scala39)
4142
props.put("scala3LTS", scala3LTS)
4243
props.put("scala3Next", scala3Next)
4344
val out =
@@ -99,7 +100,7 @@ lazy val core3 = project
99100
.settings(
100101
noPublishAndNoMima,
101102
buildInfoSettingsForCore,
102-
scalaVersion := scala3LTS,
103+
scalaVersion := scala33,
103104
libraryDependencies ++= Seq(
104105
googleDiff,
105106
metaconfig
@@ -163,7 +164,7 @@ lazy val reflect3 = project
163164
.settings(
164165
isFullCrossVersion,
165166
noPublishAndNoMima,
166-
scalaVersion := scala3LTS,
167+
scalaVersion := scala33,
167168
libraryDependencies ++= Seq(
168169
// CrossVersion.for3Use2_13 would only lookup a binary version artifact, but this is published with full version
169170
semanticdbScalacCore

docs/users/installation.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Scalafix is tested to work with:
99

1010
* **macOS, Linux or Windows**
1111
* **Java LTS (8, 11, 17, 21 or 25)**
12-
* **Scala @SCALA212@, @SCALA213@, @SCALA3LTS@ LTS or @SCALA3NEXT@**
12+
* **Scala @SCALA212@, @SCALA213@, @SCALA3LTS@ LTS**
1313

1414
Note that other setups may work, but could result in unexpected behavior.
1515

@@ -84,7 +84,7 @@ in 2.13.x or 3.x). To fix both problems, add the following settings to `build.sb
8484
*/
8585
inThisBuild(
8686
List(
87-
scalaVersion := "@SCALA212@", // @SCALA213@, @SCALA3LTS@ or @SCALA3NEXT@
87+
scalaVersion := "@SCALA212@", // @SCALA213@, @SCALA3LTS@
8888
+ semanticdbEnabled := true, // enable SemanticDB
8989
+ semanticdbVersion := scalafixSemanticdb.revision // only required for Scala 2.x
9090
)
@@ -107,7 +107,7 @@ in 2.13.x or 3.x). To fix both problems, add the following settings to `build.sb
107107
* https://www.scala-sbt.org/1.x/docs/sbt-1.3-Release-Notes.html#SemanticDB+support
108108
*/
109109
lazy val myproject = project.settings(
110-
scalaVersion := "@SCALA212@", // @SCALA213@, @SCALA3LTS@ or @SCALA3NEXT@
110+
scalaVersion := "@SCALA212@", // @SCALA213@, @SCALA3LTS@
111111
+ semanticdbEnabled := true, // enable SemanticDB
112112
+ semanticdbVersion := scalafixSemanticdb.revision, // only required for Scala 2.x
113113
+ scalacOptions += {

project/Dependencies.scala

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,12 @@ object Dependencies {
1313
val scala36 = "3.6.4"
1414
val scala37 = "3.7.4"
1515
val scala38 = "3.8.4"
16-
val scala3LTS = scala33
17-
val scala3Next = sys.props.getOrElse("scala3.nightly", scala38)
16+
val scala39 = "3.9.0"
17+
val scala3LTS = scala39
18+
val scala3Next = sys.props.getOrElse("scala3.nightly", scala39)
1819

1920
val scala2Versions = Seq(scala212, scala213)
20-
val scala3Versions = Seq(scala33, scala35, scala36, scala37, scala38)
21+
val scala3Versions = Seq(scala33, scala35, scala36, scala37, scala38, scala39)
2122

2223
val bijectionCoreV = "0.9.8"
2324
val collectionCompatV = "2.14.0"

project/Mima.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ object Mima {
88
Seq(
99
ProblemFilters.exclude[Problem]("scalafix.internal.*"),
1010
ProblemFilters.exclude[Problem]("scala.meta.internal.*"),
11+
ProblemFilters.exclude[ReversedMissingMethodProblem]("scalafix.interfaces.Scalafix.scala39"),
1112
// private[scalafix], so not callable by clients, but package-private in Scala compiles to a public method that MiMa still sees.
1213
// Its symbol table parameter moved from scala.meta.internal.symtab.SymbolTable to scalafix.internal.symtab.SymbolTable; both are internal types.
1314
ProblemFilters.exclude[IncompatibleMethTypeProblem]("scalafix.testkit.RuleTest.fromPath")

project/ScalafixBuild.scala

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ object ScalafixBuild extends AutoPlugin with GhpagesKeys {
3434
lazy val cliScalaVersions = {
3535
val unsupportedVersions: Set[String] =
3636
if (Properties.isJavaAtLeast("25")) Set(scala212, scala35, scala36)
37-
else if (!Properties.isJavaAtLeast("17")) Set(scala38)
37+
else if (!Properties.isJavaAtLeast("17"))
38+
Set(scala38, scala39, scala3Next)
3839
else Set.empty
3940
(coreScalaVersions ++ scala3Versions).filterNot(unsupportedVersions)
4041
}
@@ -147,6 +148,7 @@ object ScalafixBuild extends AutoPlugin with GhpagesKeys {
147148
"scala36" -> scala36,
148149
"scala37" -> scala37,
149150
"scala38" -> scala38,
151+
"scala39" -> scala39,
150152
"scala3LTS" -> scala3LTS,
151153
"scala3Next" -> scala3Next,
152154
sbtVersion
@@ -239,6 +241,7 @@ object ScalafixBuild extends AutoPlugin with GhpagesKeys {
239241
)
240242

241243
private val PreviousScalaVersion: Map[String, Option[String]] = Map(
244+
"3.9.0" -> None
242245
)
243246

244247
override def buildSettings: Seq[Setting[_]] = List(
@@ -305,7 +308,7 @@ object ScalafixBuild extends AutoPlugin with GhpagesKeys {
305308
Compile / unmanagedSourceDirectories ++= {
306309
val dir = (Compile / sourceDirectory).value
307310
scalaVersion.value match {
308-
case `scala3LTS` => Seq(dir / "scala-3lts")
311+
case `scala33` => Seq(dir / "scala-3.3")
309312
case `scala3Next` => Seq(dir / "scala-3next")
310313
case _ => Nil
311314
}

scalafix-cli/src/main/scala/scalafix/internal/interfaces/ScalafixImpl.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ final class ScalafixImpl extends Scalafix {
4444
Versions.scala37
4545
override def scala38(): String =
4646
Versions.scala38
47+
override def scala39(): String =
48+
Versions.scala39
4749
override def scala3LTS(): String =
4850
Versions.scala3LTS
4951
override def scala3Next(): String =

scalafix-interfaces/src/main/java/scalafix/interfaces/Scalafix.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,11 @@ public interface Scalafix {
9595
*/
9696
String scala38();
9797

98+
/**
99+
* The Scala 3.9 version in {@link #supportedScalaVersions()}
100+
*/
101+
String scala39();
102+
98103
/**
99104
* The Scala 3 LTS version in {@link #supportedScalaVersions()}
100105
*/
@@ -169,6 +174,8 @@ static Scalafix fetchAndClassloadInstance(String requestedScalaVersion, List<Rep
169174
scalaVersionKey = "scala37";
170175
} else if (requestedScalaMajorMinorOrMajorVersion.equals("3.8")) {
171176
scalaVersionKey = "scala38";
177+
} else if (requestedScalaMajorMinorOrMajorVersion.equals("3.9")) {
178+
scalaVersionKey = "scala39";
172179
} else if (requestedScalaMajorMinorOrMajorVersion.startsWith("3")) {
173180
scalaVersionKey = "scala3Next";
174181
} else {

scalafix-tests/input/src/main/scala-3lts/test/explicitResultTypes/BeforeScala3_4.scala renamed to scalafix-tests/input/src/main/scala-3.3/test/explicitResultTypes/BeforeScala3_4.scala

File renamed without changes.

scalafix-tests/input/src/main/scala-3lts/test/explicitResultTypes/EnumerationValue.scala renamed to scalafix-tests/input/src/main/scala-3.3/test/explicitResultTypes/EnumerationValue.scala

File renamed without changes.

0 commit comments

Comments
 (0)