Skip to content

Commit 3212d69

Browse files
committed
Add Scala 3.8
1 parent 66c183c commit 3212d69

4 files changed

Lines changed: 145 additions & 68 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ public final class DummyPlugin extends JavaPlugin {
152152
## Compiling
153153
It's a [maven](https://maven.apache.org/) project, so just run `mvn package` and you're good to go.
154154
The jar file will be built at `./ScalaLoader/target/ScalaLoader-<version>.jar`
155-
Note that while ScalaLoader can run on Java 8, it requires JDK-21 to compile.
155+
Note that while ScalaLoader can run on Java 8, it requires JDK-26 to compile.
156156

157157
### Pre-built plugin jar file?
158158
Available on [SpigotMC](https://www.spigotmc.org/resources/scalaloader.59568/).

Scala3Example/src/main/scala/xyz/janboerman/scalaloader/example/scala3/ExamplePlugin.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package xyz.janboerman.scalaloader.example.scala3
33
import xyz.janboerman.scalaloader.plugin.description.{Scala, ScalaVersion}
44
import xyz.janboerman.scalaloader.paper.plugin.ScalaPlugin
55

6-
@Scala(version = ScalaVersion.v3_6_2)
6+
@Scala(version = ScalaVersion.v3_8_3)
77
object ExamplePlugin extends ScalaPlugin {
88

99
override def onEnable(): Unit =

ScalaLoader-Common/src/main/java/xyz/janboerman/scalaloader/plugin/description/ScalaVersion.java

Lines changed: 44 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ public enum ScalaVersion {
3434
v2_12_18("2.12.18"),
3535
v2_12_19("2.12.19"),
3636
v2_12_20("2.12.20"),
37+
v2_12_21("2.12.21"),
3738

3839
//2.13.x
3940
v2_13_0("2.13.0"),
@@ -53,6 +54,8 @@ public enum ScalaVersion {
5354
v2_13_14("2.13.14"),
5455
v2_13_15("2.13.15"),
5556
v2_13_16("2.13.16"),
57+
v2_13_17("2.13.17"),
58+
v2_13_18("2.13.18"),
5659

5760
//3.0.x
5861
v3_0_0("3.0.0"),
@@ -75,6 +78,10 @@ public enum ScalaVersion {
7578
v3_3_1("3.3.1"),
7679
v3_3_2("3.3.2", false),
7780
v3_3_3("3.3.3"),
81+
v3_3_4("3.3.4"),
82+
v3_3_5("3.3.5"),
83+
v3_3_6("3.3.6"),
84+
v3_3_7("3.3.7"),
7885

7986
//3.4.x
8087
v3_4_0("3.4.0"),
@@ -96,7 +103,16 @@ public enum ScalaVersion {
96103

97104
//3.7.x
98105
v3_7_0("3.7.0"),
99-
v3_7_1("3.7.1");
106+
v3_7_1("3.7.1"),
107+
v3_7_2("3.7.2"),
108+
v3_7_3("3.7.3"),
109+
v3_7_4("3.7.4"),
110+
111+
//3.8.x
112+
v3_8_0("3.8.0", false), //https://www.scala-lang.org/blog/post-mortem-3.8.0.html
113+
v3_8_1("3.8.1"),
114+
v3_8_2("3.8.2"),
115+
v3_8_3("3.8.3");
100116

101117
// When adding new entries here, don't forget to update ScalaHashes.
102118

@@ -135,14 +151,27 @@ private static Map<String, String> urls(String scalaVersion) {
135151
mapEntry(PluginScalaVersion.SCALA2_LIBRARY_URL, mavenCentralSearchScalaLibrary(scalaVersion))
136152
);
137153
} else if (scalaVersion.startsWith("3.")) {
138-
return mapOf(
139-
mapEntry(PluginScalaVersion.SCALA2_LIBRARY_URL, mavenCentralSearchScalaLibrary(latest_2_13.getVersion())),
140-
mapEntry(PluginScalaVersion.SCALA2_REFLECT_URL, mavenCentralSearchScalaReflect(latest_2_13.getVersion())),
141-
mapEntry(PluginScalaVersion.SCALA3_LIBRARY_URL, mavenCentralScala3LibraryAdditions(scalaVersion)),
142-
mapEntry(PluginScalaVersion.TASTY_CORE_URL, mavenCentralScala3TastyCoreAdditions(scalaVersion))
143-
);
144-
//TODO if Scala 3 ever stops depending on Scala 2.13, then we need to update this code!
145-
//TODO as of Scala 3.4, the standard library might get new additions. we need to check whether this logic still works then.
154+
String[] majorMinorPatch = scalaVersion.split("\\.");
155+
int major = Integer.parseInt(majorMinorPatch[0]);
156+
int minor = Integer.parseInt(majorMinorPatch[1]);
157+
int patch = Integer.parseInt(majorMinorPatch[2]);
158+
assert major == 3;
159+
if (minor < 8) {
160+
// Logic for Scala 3.0 to 3.7:
161+
return mapOf(
162+
mapEntry(PluginScalaVersion.SCALA2_LIBRARY_URL, mavenCentralSearchScalaLibrary(latest_2_13.getVersion())),
163+
mapEntry(PluginScalaVersion.SCALA2_REFLECT_URL, mavenCentralSearchScalaReflect(latest_2_13.getVersion())),
164+
mapEntry(PluginScalaVersion.SCALA3_LIBRARY_URL, mavenCentralScala3LibraryAdditions(scalaVersion)),
165+
mapEntry(PluginScalaVersion.TASTY_CORE_URL, mavenCentralScala3TastyCoreAdditions(scalaVersion))
166+
);
167+
} else {
168+
// Logic for Scala 3.8 onwards:
169+
return mapOf(
170+
mapEntry(PluginScalaVersion.SCALA3_LIBRARY_URL, mavenCentralScala3Library(scalaVersion)),
171+
mapEntry(PluginScalaVersion.TASTY_CORE_URL, mavenCentralScala3TastyCoreAdditions(scalaVersion))
172+
);
173+
}
174+
// TODO could there be a change of artifacts *again* in the future?
146175
} else {
147176
assert false : "Scala 4 not yet supported";
148177
return null;
@@ -239,6 +268,7 @@ private static String mavenCentralScala3LibraryAdditions(String scalaVersion) {
239268
if ("3.0.0".equals(scalaVersion)) {
240269
return "https://search.maven.org/remotecontent?filepath=org/scala-lang/scala3-library_" + scalaVersion + "-nonbootstrapped/" + scalaVersion + "/scala3-library_" + scalaVersion + "-nonbootstrapped-" + scalaVersion + ".jar";
241270
} else {
271+
// Scala 3.1.x - 3.7.x:
242272
return "https://search.maven.org/remotecontent?filepath=org/scala-lang/scala3-library_3/" + scalaVersion + "/scala3-library_3-" + scalaVersion + ".jar";
243273
}
244274
}
@@ -251,6 +281,11 @@ private static String mavenCentralScala3TastyCoreAdditions(String scalaVersion)
251281
}
252282
}
253283

284+
private static String mavenCentralScala3Library(String scalaVersion) {
285+
// For Scala 3.8 onwards:
286+
return "https://repo1.maven.org/maven2/org/scala-lang/scala-library/" + scalaVersion + "/scala-library-" + scalaVersion + ".jar";
287+
}
288+
254289
//other possible artifacts:
255290
// scala3-staging
256291
// scala3-tasty-inspector

0 commit comments

Comments
 (0)