Skip to content

Commit dd684e0

Browse files
committed
fail hard on EOL Scala 3 minor
1 parent 61f9800 commit dd684e0

File tree

8 files changed

+117
-64
lines changed

8 files changed

+117
-64
lines changed

build.sbt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,6 @@ lazy val interfaces = project
3333
props.put("scala212", scala212)
3434
props.put("scala213", scala213)
3535
props.put("scala33", scala33)
36-
props.put("scala35", scala35)
37-
props.put("scala36", scala36)
3836
props.put("scala37", scala37)
3937
props.put("scala3LTS", scala3LTS)
4038
props.put("scala3Next", scala3Next)

project/Dependencies.scala

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ object Dependencies {
88
val scala212 = sys.props.getOrElse("scala212.nightly", "2.12.20")
99
val scala213 = sys.props.getOrElse("scala213.nightly", "2.13.16") // remove 2.13.14 hack in RuleSuite when bumping
1010
val scala33 = "3.3.6"
11-
val scala35 = "3.5.2"
12-
val scala36 = "3.6.4"
1311
val scala37 = "3.7.0"
1412
val scala3LTS = scala33
1513
val scala3Next = sys.props.getOrElse("scala3.nightly", scala37)

project/ScalafixBuild.scala

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,13 @@ 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 = {
37-
val jdk = System.getProperty("java.specification.version").toDouble
38-
val scala3Versions =
39-
// Scala 3.5 will never support JDK 23
40-
if (jdk >= 23) Seq(scala33, scala36, scala37)
41-
else Seq(scala33, scala35, scala36, scala37)
42-
(coreScalaVersions ++ scala3Versions :+ scala3Next).distinct
43-
}
36+
lazy val cliScalaVersions = Seq(
37+
scala212,
38+
scala213,
39+
scala33,
40+
scala37,
41+
scala3Next
42+
).distinct
4443
lazy val cliScalaVersionsWithTargets: Seq[(String, TargetAxis)] =
4544
cliScalaVersions.map(sv => (sv, TargetAxis(sv))) ++
4645
Seq(scala213, scala212).flatMap { sv =>
@@ -146,8 +145,6 @@ object ScalafixBuild extends AutoPlugin with GhpagesKeys {
146145
"scala212" -> scala212,
147146
"scala213" -> scala213,
148147
"scala33" -> scala33,
149-
"scala35" -> scala35,
150-
"scala36" -> scala36,
151148
"scala37" -> scala37,
152149
"scala3LTS" -> scala3LTS,
153150
"scala3Next" -> scala3Next,
@@ -245,7 +242,6 @@ object ScalafixBuild extends AutoPlugin with GhpagesKeys {
245242

246243
private val PreviousScalaVersion: Map[String, Option[String]] = Map(
247244
scala33 -> Some("3.3.5"),
248-
scala36 -> Some("3.6.3"),
249245
scala37 -> None
250246
)
251247

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,13 @@ final class ScalafixImpl extends Scalafix {
3737
override def scala33(): String =
3838
Versions.scala33
3939
override def scala35(): String =
40-
Versions.scala35
40+
throw new java.lang.UnsupportedOperationException(
41+
"Scala 3.5 is no longer supported; the final version supporting it is Scalafix 0.14.x"
42+
)
4143
override def scala36(): String =
42-
Versions.scala36
44+
throw new java.lang.UnsupportedOperationException(
45+
"Scala 3.6 is no longer supported; the final version supporting it is Scalafix 0.14.x"
46+
)
4347
override def scala37(): String =
4448
Versions.scala37
4549
override def scala3LTS(): String =

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

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -75,14 +75,10 @@ public interface Scalafix {
7575
*/
7676
String scala33();
7777

78-
/**
79-
* The Scala 3.5 version in {@link #supportedScalaVersions()}
80-
*/
78+
@Deprecated
8179
String scala35();
8280

83-
/**
84-
* The Scala 3.6 version in {@link #supportedScalaVersions()}
85-
*/
81+
@Deprecated
8682
String scala36();
8783

8884
/**
@@ -151,18 +147,17 @@ static Scalafix fetchAndClassloadInstance(String requestedScalaVersion, List<Rep
151147
} else if (requestedScalaMajorMinorOrMajorVersion.equals("2.13") ||
152148
requestedScalaMajorMinorOrMajorVersion.equals("2")) {
153149
scalaVersionKey = "scala213";
154-
} else if (requestedScalaMajorMinorOrMajorVersion.equals("3.0") ||
155-
requestedScalaMajorMinorOrMajorVersion.equals("3.1") ||
156-
requestedScalaMajorMinorOrMajorVersion.equals("3.2") ||
157-
requestedScalaMajorMinorOrMajorVersion.equals("3.3")) {
150+
} else if (requestedScalaMajorMinorOrMajorVersion.equals("3.3")) {
158151
scalaVersionKey = "scala33";
159-
} else if (requestedScalaMajorMinorOrMajorVersion.equals("3.5")) {
160-
scalaVersionKey = "scala35";
161-
} else if (requestedScalaMajorMinorOrMajorVersion.equals("3.6")) {
162-
scalaVersionKey = "scala36";
163152
} else if (requestedScalaMajorMinorOrMajorVersion.equals("3.7")) {
164153
scalaVersionKey = "scala37";
165-
} else if (requestedScalaMajorMinorOrMajorVersion.startsWith("3")) {
154+
} else if (requestedScalaMajorMinorOrMajorVersion.startsWith("3") &&
155+
!requestedScalaMajorMinorOrMajorVersion.equals("3.0") &&
156+
!requestedScalaMajorMinorOrMajorVersion.equals("3.1") &&
157+
!requestedScalaMajorMinorOrMajorVersion.equals("3.2") &&
158+
!requestedScalaMajorMinorOrMajorVersion.equals("3.4") &&
159+
!requestedScalaMajorMinorOrMajorVersion.equals("3.5") &&
160+
!requestedScalaMajorMinorOrMajorVersion.equals("3.6")) {
166161
scalaVersionKey = "scala3Next";
167162
} else {
168163
throw new IllegalArgumentException("Unsupported scala version " + requestedScalaVersion);

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

Lines changed: 18 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,6 @@ class ScalafixSuite extends AnyFunSuite {
4646
assert(api.scala212() == Versions.scala212)
4747
assert(api.scala213() == Versions.scala213)
4848
assert(api.scala33() == Versions.scala33)
49-
assert(api.scala35() == Versions.scala35)
50-
assert(api.scala36() == Versions.scala36)
5149
assert(api.scala37() == Versions.scala37)
5250
assert(api.scala3LTS() == Versions.scala3LTS)
5351
assert(api.scala3Next() == Versions.scala3Next)
@@ -60,15 +58,27 @@ class ScalafixSuite extends AnyFunSuite {
6058
assert(help.contains("Usage: scalafix"))
6159
}
6260

63-
test("fail to classload Scala 2.11 with full version") {
61+
test("fail to classload EOL versions") {
6462
assertThrows[IllegalArgumentException](
65-
Scalafix.fetchAndClassloadInstance("2.11.0", repositories)
63+
Scalafix.fetchAndClassloadInstance("2.11", repositories)
6664
)
67-
}
68-
69-
test("fail to classload Scala 2.11 with minor version") {
7065
assertThrows[IllegalArgumentException](
71-
Scalafix.fetchAndClassloadInstance("2.11", repositories)
66+
Scalafix.fetchAndClassloadInstance("3.0", repositories)
67+
)
68+
assertThrows[IllegalArgumentException](
69+
Scalafix.fetchAndClassloadInstance("3.1", repositories)
70+
)
71+
assertThrows[IllegalArgumentException](
72+
Scalafix.fetchAndClassloadInstance("3.2", repositories)
73+
)
74+
assertThrows[IllegalArgumentException](
75+
Scalafix.fetchAndClassloadInstance("3.4", repositories)
76+
)
77+
assertThrows[IllegalArgumentException](
78+
Scalafix.fetchAndClassloadInstance("3.5", repositories)
79+
)
80+
assertThrows[IllegalArgumentException](
81+
Scalafix.fetchAndClassloadInstance("3.6", repositories)
7282
)
7383
}
7484

@@ -99,16 +109,6 @@ class ScalafixSuite extends AnyFunSuite {
99109
assert(scalafixAPI.scalaVersion() == Versions.scala213)
100110
}
101111

102-
test("classload Scala 3 LTS with full pre-LTS version") {
103-
val scalafixAPI = Scalafix.fetchAndClassloadInstance("3.0.0", repositories)
104-
assert(scalafixAPI.scalaVersion() == Versions.scala3LTS)
105-
}
106-
107-
test("classload Scala 3 LTS with major.minor pre-LTS version") {
108-
val scalafixAPI = Scalafix.fetchAndClassloadInstance("3.2", repositories)
109-
assert(scalafixAPI.scalaVersion() == Versions.scala3LTS)
110-
}
111-
112112
test("classload Scala 3 LTS with full LTS version") {
113113
val scalafixAPI = Scalafix.fetchAndClassloadInstance("3.3.4", repositories)
114114
assert(scalafixAPI.scalaVersion() == Versions.scala3LTS)
@@ -119,18 +119,6 @@ class ScalafixSuite extends AnyFunSuite {
119119
assert(scalafixAPI.scalaVersion() == Versions.scala3LTS)
120120
}
121121

122-
test("classload Scala 3.5 with full version") {
123-
if (jdk >= 23) cancel("Scala 3.5 is not supported on JDK23+")
124-
val scalafixAPI = Scalafix.fetchAndClassloadInstance("3.5.2", repositories)
125-
assert(scalafixAPI.scalaVersion() == Versions.scala35)
126-
}
127-
128-
test("classload Scala 3.5 with major.minor version") {
129-
if (jdk >= 23) cancel("Scala 3.5 is not supported on JDK23+")
130-
val scalafixAPI = Scalafix.fetchAndClassloadInstance("3.5", repositories)
131-
assert(scalafixAPI.scalaVersion() == Versions.scala35)
132-
}
133-
134122
test("classload Scala 3 Next with full version") {
135123
val scalafixAPI = Scalafix.fetchAndClassloadInstance("3.7.0", repositories)
136124
assert(scalafixAPI.scalaVersion() == Versions.scala3Next)
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
package scalafix.tests.versions
2+
3+
import scala.jdk.CollectionConverters._
4+
5+
import org.scalatest.funsuite.AnyFunSuite
6+
import scalafix.Versions
7+
import scalafix.interfaces.ScalafixVersions
8+
import scalafix.tests.BuildInfo
9+
10+
/**
11+
* This test require interfaces & versions to be packaged. `packageBin` is done
12+
* automatically as part of `sbt integrationX / test`, so make sure to run that
13+
* once if you want to run the test with testOnly or through BSP.
14+
*/
15+
class ScalafixVersionsImplSuite extends AnyFunSuite {
16+
17+
lazy val versions: ScalafixVersions =
18+
ScalafixVersions.get(BuildInfo.versionsJars.map(_.toURL).asJava)
19+
20+
test("scalafixVersion") {
21+
assert(versions.scalafixVersion() == Versions.version)
22+
}
23+
24+
test("fail to get 2.11 with full version") {
25+
assertThrows[IllegalArgumentException](
26+
versions.cliScalaVersion("2.11.0")
27+
)
28+
}
29+
30+
test("fail to get 2.11 with minor version") {
31+
assertThrows[IllegalArgumentException](
32+
versions.cliScalaVersion("2.11")
33+
)
34+
}
35+
36+
test("get 2.12 with full version") {
37+
assert(versions.cliScalaVersion("2.12.20") == Versions.scala212)
38+
}
39+
40+
test("get 2.12 with major.minor version") {
41+
assert(versions.cliScalaVersion("2.12") == Versions.scala212)
42+
}
43+
44+
test("get 2.13 with full version") {
45+
assert(versions.cliScalaVersion("2.13.15") == Versions.scala213)
46+
}
47+
48+
test("get 2.13 with major.minor version") {
49+
assert(versions.cliScalaVersion("2.13") == Versions.scala213)
50+
}
51+
52+
test("get 2.13 with major version") {
53+
assert(versions.cliScalaVersion("2") == Versions.scala213)
54+
}
55+
56+
test("get 3LTS with full LTS version") {
57+
assert(versions.cliScalaVersion("3.3.4") == Versions.scala3LTS)
58+
}
59+
60+
test("get 3LTS with major.minor LTS version") {
61+
assert(versions.cliScalaVersion("3.3") == Versions.scala3LTS)
62+
}
63+
64+
test("get 3Next with full version") {
65+
assert(versions.cliScalaVersion("3.7.0") == Versions.scala3Next)
66+
}
67+
68+
test("get 3Next with major.minor version") {
69+
assert(versions.cliScalaVersion("3.7") == Versions.scala3Next)
70+
}
71+
72+
test("get 3Next with major version") {
73+
assert(versions.cliScalaVersion("3") == Versions.scala3Next)
74+
}
75+
76+
}

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@ class InterfacesPropertiesSuite extends AnyFunSuite with BeforeAndAfterAll {
2626
check("scala212", Versions.scala212)
2727
check("scala213", Versions.scala213)
2828
check("scala33", Versions.scala33)
29-
check("scala35", Versions.scala35)
30-
check("scala36", Versions.scala36)
3129
check("scala37", Versions.scala37)
3230
check("scala3LTS", Versions.scala3LTS)
3331
check("scala3Next", Versions.scala3Next)

0 commit comments

Comments
 (0)