Skip to content

Commit 95f5b3f

Browse files
committed
build with and test against Scala 3.6.2
Keep building for Scala 3.5 until the next minor version for backward compatibility.
1 parent 6365c36 commit 95f5b3f

File tree

10 files changed

+92
-11
lines changed

10 files changed

+92
-11
lines changed

build.sbt

+4-1
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,11 @@ lazy val interfaces = project
3030
props.put("scalafixVersion", version.value)
3131
props.put("scalafixStableVersion", stableVersion.value)
3232
props.put("scalametaVersion", scalametaV)
33-
props.put("scala213", scala213)
3433
props.put("scala212", scala212)
34+
props.put("scala213", scala213)
35+
props.put("scala33", scala33)
36+
props.put("scala35", scala35)
37+
props.put("scala36", scala36)
3538
props.put("scala3LTS", scala3LTS)
3639
props.put("scala3Next", scala3Next)
3740
val out =

project/Dependencies.scala

+5-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,11 @@ import sbt._
77
object Dependencies {
88
val scala212 = sys.props.getOrElse("scala212.nightly", "2.12.20")
99
val scala213 = sys.props.getOrElse("scala213.nightly", "2.13.15")
10-
val scala3Next = sys.props.getOrElse("scala3.nightly", "3.5.2")
11-
val scala3LTS = "3.3.4"
10+
val scala33 = "3.3.4"
11+
val scala35 = "3.5.2"
12+
val scala36 = "3.6.2"
13+
val scala3LTS = scala33
14+
val scala3Next = sys.props.getOrElse("scala3.nightly", scala36)
1215

1316
val bijectionCoreV = "0.9.8"
1417
val collectionCompatV = "2.12.0"

project/Mima.scala

+4-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@ object Mima {
99
ProblemFilters.exclude[Problem]("scalafix.internal.*"),
1010
ProblemFilters.exclude[Problem]("scala.meta.internal.*"),
1111
// Exceptions
12-
ProblemFilters.exclude[DirectMissingMethodProblem]("scalafix.v0.Signature#Self.syntax")
12+
ProblemFilters.exclude[DirectMissingMethodProblem]("scalafix.v0.Signature#Self.syntax"),
13+
ProblemFilters.exclude[ReversedMissingMethodProblem]("scalafix.interfaces.Scalafix.scala33"),
14+
ProblemFilters.exclude[ReversedMissingMethodProblem]("scalafix.interfaces.Scalafix.scala35"),
15+
ProblemFilters.exclude[ReversedMissingMethodProblem]("scalafix.interfaces.Scalafix.scala36")
1316
)
1417
}
1518
}

project/ScalafixBuild.scala

+13-2
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,14 @@ object ScalafixBuild extends AutoPlugin with GhpagesKeys {
3333

3434
// https://github.com/scalameta/scalameta/issues/2485
3535
lazy val coreScalaVersions = Seq(scala212, scala213)
36-
lazy val cliScalaVersions = Seq(scala212, scala213, scala3LTS, scala3Next)
36+
lazy val cliScalaVersions = Seq(
37+
scala212,
38+
scala213,
39+
scala33,
40+
scala35,
41+
scala36,
42+
scala3Next
43+
).distinct
3744
lazy val cliScalaVersionsWithTargets: Seq[(String, TargetAxis)] =
3845
cliScalaVersions.map(sv => (sv, TargetAxis(sv))) ++
3946
Seq(scala213, scala212).flatMap { sv =>
@@ -138,6 +145,9 @@ object ScalafixBuild extends AutoPlugin with GhpagesKeys {
138145
"supportedScalaVersions" -> cliScalaVersions,
139146
"scala212" -> scala212,
140147
"scala213" -> scala213,
148+
"scala33" -> scala33,
149+
"scala35" -> scala35,
150+
"scala36" -> scala36,
141151
"scala3LTS" -> scala3LTS,
142152
"scala3Next" -> scala3Next,
143153
sbtVersion
@@ -231,7 +241,8 @@ object ScalafixBuild extends AutoPlugin with GhpagesKeys {
231241
)
232242

233243
private val PreviousScalaVersion: Map[String, String] = Map(
234-
"3.5.2" -> "3.5.1"
244+
"3.5.2" -> "3.5.1",
245+
"3.6.2" -> "3.5.1"
235246
)
236247

237248
override def buildSettings: Seq[Setting[_]] = List(

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

+6
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,12 @@ final class ScalafixImpl extends Scalafix {
3434
Versions.scala212
3535
override def scala213(): String =
3636
Versions.scala213
37+
override def scala33(): String =
38+
Versions.scala33
39+
override def scala35(): String =
40+
Versions.scala35
41+
override def scala36(): String =
42+
Versions.scala36
3743
override def scala3LTS(): String =
3844
Versions.scala3LTS
3945
override def scala3Next(): String =

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

+20-1
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,21 @@ public interface Scalafix {
7070
*/
7171
String scala213();
7272

73+
/**
74+
* The Scala 3.3 version in {@link #supportedScalaVersions()}
75+
*/
76+
String scala33();
77+
78+
/**
79+
* The Scala 3.5 version in {@link #supportedScalaVersions()}
80+
*/
81+
String scala35();
82+
83+
/**
84+
* The Scala 3.6 version in {@link #supportedScalaVersions()}
85+
*/
86+
String scala36();
87+
7388
/**
7489
* The Scala 3 LTS version in {@link #supportedScalaVersions()}
7590
*/
@@ -135,7 +150,11 @@ static Scalafix fetchAndClassloadInstance(String requestedScalaVersion, List<Rep
135150
requestedScalaMajorMinorOrMajorVersion.equals("3.1") ||
136151
requestedScalaMajorMinorOrMajorVersion.equals("3.2") ||
137152
requestedScalaMajorMinorOrMajorVersion.equals("3.3")) {
138-
scalaVersionKey = "scala3LTS";
153+
scalaVersionKey = "scala33";
154+
} else if (requestedScalaMajorMinorOrMajorVersion.equals("3.5")) {
155+
scalaVersionKey = "scala35";
156+
} else if (requestedScalaMajorMinorOrMajorVersion.equals("3.6")) {
157+
scalaVersionKey = "scala36";
139158
} else if (requestedScalaMajorMinorOrMajorVersion.startsWith("3")) {
140159
scalaVersionKey = "scala3Next";
141160
} else {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/*
2+
rules = ExplicitResultTypes
3+
ExplicitResultTypes.skipSimpleDefinitions = false
4+
*/
5+
package test.explicitResultTypes
6+
7+
trait Order[T]:
8+
extension (values: Seq[T]) def toSorted: Seq[T] = ???
9+
def compare(x: T, y: T): Int
10+
11+
given listOrdering: [T: Order as elementOrder] => Order[List[T]]:
12+
def compare(x: List[T], y: List[T]) = elementOrder.compare(x.head, y.head)

scalafix-tests/integration/src/test/scala/scalafix/tests/interfaces/ScalafixSuite.scala

+17-4
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ class ScalafixSuite extends AnyFunSuite {
4343
assert(api.scalametaVersion() == Versions.scalameta)
4444
assert(api.scala212() == Versions.scala212)
4545
assert(api.scala213() == Versions.scala213)
46+
assert(api.scala33() == Versions.scala33)
47+
assert(api.scala35() == Versions.scala35)
48+
assert(api.scala36() == Versions.scala36)
4649
assert(api.scala3LTS() == Versions.scala3LTS)
4750
assert(api.scala3Next() == Versions.scala3Next)
4851
assert(
@@ -113,13 +116,23 @@ class ScalafixSuite extends AnyFunSuite {
113116
assert(scalafixAPI.scalaVersion() == Versions.scala3LTS)
114117
}
115118

116-
test("classload Scala 3 Next with full post-LTS version") {
117-
val scalafixAPI = Scalafix.fetchAndClassloadInstance("3.4.0", repositories)
118-
assert(scalafixAPI.scalaVersion() == Versions.scala3Next)
119+
test("classload Scala 3.5 with full version") {
120+
val scalafixAPI = Scalafix.fetchAndClassloadInstance("3.5.2", repositories)
121+
assert(scalafixAPI.scalaVersion() == Versions.scala35)
119122
}
120123

121-
test("classload Scala 3 Next with major.minor post-LTS version") {
124+
test("classload Scala 3.5 with major.minor version") {
122125
val scalafixAPI = Scalafix.fetchAndClassloadInstance("3.5", repositories)
126+
assert(scalafixAPI.scalaVersion() == Versions.scala35)
127+
}
128+
129+
test("classload Scala 3 Next with full version") {
130+
val scalafixAPI = Scalafix.fetchAndClassloadInstance("3.6.2", repositories)
131+
assert(scalafixAPI.scalaVersion() == Versions.scala3Next)
132+
}
133+
134+
test("classload Scala 3 Next with major.minor version") {
135+
val scalafixAPI = Scalafix.fetchAndClassloadInstance("3.6", repositories)
123136
assert(scalafixAPI.scalaVersion() == Versions.scala3Next)
124137
}
125138

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package test.explicitResultTypes
2+
3+
trait Order[T]:
4+
extension (values: Seq[T]) def toSorted: Seq[T] = ???
5+
def compare(x: T, y: T): Int
6+
7+
given listOrdering: [T: Order as elementOrder] => Order[List[T]]:
8+
def compare(x: List[T], y: List[T]): Int = elementOrder.compare(x.head, y.head)

scalafix-tests/unit/src/test/scala/scalafix/tests/cli/InterfacesPropertiesSuite.scala

+3
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ class InterfacesPropertiesSuite extends AnyFunSuite with BeforeAndAfterAll {
2525
check("scalametaVersion", Versions.scalameta)
2626
check("scala212", Versions.scala212)
2727
check("scala213", Versions.scala213)
28+
check("scala33", Versions.scala33)
29+
check("scala35", Versions.scala35)
30+
check("scala36", Versions.scala36)
2831
check("scala3LTS", Versions.scala3LTS)
2932
check("scala3Next", Versions.scala3Next)
3033

0 commit comments

Comments
 (0)