Skip to content

Commit ca2ed27

Browse files
authored
Scala 3 minimal support (#1355)
* Add minimal support for Scala 3 * Add Scala 3 example workspace
1 parent e1abf93 commit ca2ed27

File tree

16 files changed

+702
-168
lines changed

16 files changed

+702
-168
lines changed

examples/scala3/BUILD

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
load("@io_bazel_rules_scala//scala:scala.bzl", "scala_binary", "scala_library")
2+
3+
scala_library(
4+
name = "lib",
5+
srcs = ["Hello.scala"],
6+
deps = [],
7+
)
8+
9+
scala_binary(
10+
name = "main",
11+
srcs = ["Main.scala"],
12+
main_class = "hello",
13+
deps = [":lib"],
14+
)

examples/scala3/Hello.scala

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package examples.scala3
2+
3+
class Hello:
4+
def hello: String = "Hello"

examples/scala3/Main.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import examples.scala3.Hello
2+
3+
@main def hello = println((new Hello).hello)

examples/scala3/WORKSPACE

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
workspace(name = "specs2_junit_repositories")
2+
3+
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
4+
5+
skylib_version = "1.0.3"
6+
7+
http_archive(
8+
name = "bazel_skylib",
9+
sha256 = "1c531376ac7e5a180e0237938a2536de0c54d93f5c278634818e0efc952dd56c",
10+
type = "tar.gz",
11+
url = "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/{}/bazel-skylib-{}.tar.gz".format(skylib_version, skylib_version),
12+
)
13+
14+
local_repository(
15+
name = "io_bazel_rules_scala",
16+
path = "../..",
17+
)
18+
19+
load("@io_bazel_rules_scala//:scala_config.bzl", "scala_config")
20+
21+
scala_config(scala_version = "3.1.0")
22+
23+
load("@io_bazel_rules_scala//scala:scala.bzl", "scala_repositories")
24+
25+
scala_repositories()
26+
27+
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains")
28+
29+
rules_proto_dependencies()
30+
31+
rules_proto_toolchains()
32+
33+
load("@io_bazel_rules_scala//scala:toolchains.bzl", "scala_register_toolchains")
34+
35+
scala_register_toolchains()

scala/BUILD

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
load("@rules_java//java:defs.bzl", "java_import", "java_library")
22
load("//scala:scala_toolchain.bzl", "scala_toolchain")
33
load("//scala:providers.bzl", "declare_deps_provider")
4+
load("@io_bazel_rules_scala_config//:config.bzl", "SCALA_MAJOR_VERSION")
45

56
toolchain_type(
67
name = "toolchain_type",
@@ -68,8 +69,12 @@ declare_deps_provider(
6869
deps = [
6970
"@io_bazel_rules_scala_scala_compiler",
7071
"@io_bazel_rules_scala_scala_library",
71-
"@io_bazel_rules_scala_scala_reflect",
72-
],
72+
] + (["@io_bazel_rules_scala_scala_reflect"] if SCALA_MAJOR_VERSION.startswith("2") else [
73+
"@io_bazel_rules_scala_scala_interfaces",
74+
"@io_bazel_rules_scala_scala_tasty_core",
75+
"@io_bazel_rules_scala_scala_asm",
76+
"@io_bazel_rules_scala_scala_library_2",
77+
]),
7378
)
7479

7580
declare_deps_provider(
@@ -78,8 +83,9 @@ declare_deps_provider(
7883
visibility = ["//visibility:public"],
7984
deps = [
8085
"@io_bazel_rules_scala_scala_library",
81-
"@io_bazel_rules_scala_scala_reflect",
82-
],
86+
] + (["@io_bazel_rules_scala_scala_reflect"] if SCALA_MAJOR_VERSION.startswith("2") else [
87+
"@io_bazel_rules_scala_scala_library_2",
88+
]),
8389
)
8490

8591
declare_deps_provider(
@@ -88,8 +94,9 @@ declare_deps_provider(
8894
visibility = ["//visibility:public"],
8995
deps = [
9096
"@io_bazel_rules_scala_scala_library",
91-
"@io_bazel_rules_scala_scala_reflect",
92-
],
97+
] + (["@io_bazel_rules_scala_scala_reflect"] if SCALA_MAJOR_VERSION.startswith("2") else [
98+
"@io_bazel_rules_scala_scala_library_2",
99+
]),
93100
)
94101

95102
declare_deps_provider(

scala/private/macros/scala_repositories.bzl

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ load(
44
_default_maven_server_urls = "default_maven_server_urls",
55
)
66
load("//third_party/repositories:repositories.bzl", "repositories")
7+
load("@io_bazel_rules_scala_config//:config.bzl", "SCALA_MAJOR_VERSION")
78

89
def rules_scala_setup():
910
if not native.existing_rule("bazel_skylib"):
@@ -41,6 +42,27 @@ def rules_scala_setup():
4142
],
4243
)
4344

45+
ARTIFACT_IDS = [
46+
"io_bazel_rules_scala_scala_library",
47+
"io_bazel_rules_scala_scala_compiler",
48+
"io_bazel_rules_scala_scala_reflect",
49+
"io_bazel_rules_scala_scalatest",
50+
"io_bazel_rules_scala_scalactic",
51+
"io_bazel_rules_scala_scala_xml",
52+
"io_bazel_rules_scala_scala_parser_combinators",
53+
] if SCALA_MAJOR_VERSION.startswith("2") else [
54+
"io_bazel_rules_scala_scala_library",
55+
"io_bazel_rules_scala_scala_compiler",
56+
"io_bazel_rules_scala_scala_interfaces",
57+
"io_bazel_rules_scala_scala_tasty_core",
58+
"io_bazel_rules_scala_scala_asm",
59+
"io_bazel_rules_scala_scalatest",
60+
"io_bazel_rules_scala_scalactic",
61+
"io_bazel_rules_scala_scala_xml",
62+
"io_bazel_rules_scala_scala_parser_combinators",
63+
"io_bazel_rules_scala_scala_library_2",
64+
]
65+
4466
def scala_repositories(
4567
maven_servers = _default_maven_server_urls(),
4668
overriden_artifacts = {},
@@ -52,15 +74,7 @@ def scala_repositories(
5274

5375
if load_jar_deps:
5476
repositories(
55-
for_artifact_ids = [
56-
"io_bazel_rules_scala_scala_library",
57-
"io_bazel_rules_scala_scala_compiler",
58-
"io_bazel_rules_scala_scala_reflect",
59-
"io_bazel_rules_scala_scalatest",
60-
"io_bazel_rules_scala_scalactic",
61-
"io_bazel_rules_scala_scala_xml",
62-
"io_bazel_rules_scala_scala_parser_combinators",
63-
],
77+
for_artifact_ids = ARTIFACT_IDS,
6478
maven_servers = maven_servers,
6579
fetch_sources = fetch_sources,
6680
overriden_artifacts = overriden_artifacts,

src/java/io/bazel/rulesscala/scalac/BUILD

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
load("@rules_java//java:defs.bzl", "java_binary", "java_test")
2+
load("@io_bazel_rules_scala_config//:config.bzl", "SCALA_MAJOR_VERSION")
23

34
java_binary(
45
name = "scalac",
@@ -9,7 +10,7 @@ java_binary(
910
"-source 1.8",
1011
"-target 1.8",
1112
],
12-
main_class = "io.bazel.rulesscala.scalac.ScalacWorker",
13+
main_class = "io.bazel.rulesscala.scalac.ScalacWorker" if SCALA_MAJOR_VERSION.startswith("2") else "io.bazel.rulesscala.scalac.ScalacWorker3",
1314
visibility = ["//visibility:public"],
1415
deps = [
1516
"//scala/private/toolchain_deps:scala_compile_classpath",
@@ -23,12 +24,11 @@ java_binary(
2324

2425
filegroup(
2526
name = "scalac_files",
26-
srcs = [
27-
"CompileOptions.java",
27+
srcs = ["CompileOptions.java"] + ([
28+
"ScalacWorker.java",
2829
"ProtoReporter.java",
2930
"ReportableMainClass.java",
30-
"ScalacWorker.java",
31-
],
31+
] if SCALA_MAJOR_VERSION.startswith("2") else ["ScalacWorker3.java"]),
3232
visibility = ["//visibility:public"],
3333
)
3434

0 commit comments

Comments
 (0)