From b247d94459de9f30ab43546cbfee3d6b2a4f69da Mon Sep 17 00:00:00 2001 From: Jaden Peterson Date: Fri, 27 Mar 2026 17:30:01 -0400 Subject: [PATCH] Allow extras to add toolchains Also made all extra keys optional. --- rules/scala.bzl | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/rules/scala.bzl b/rules/scala.bzl index ee082a10..b6bf8a52 100644 --- a/rules/scala.bzl +++ b/rules/scala.bzl @@ -216,7 +216,7 @@ _testing_private_attributes = { def _extras_attributes(extras): return { "_phase_providers": attr.label_list( - default = [pp for extra in extras for pp in extra["phase_providers"]], + default = [pp for extra in extras for pp in extra.get("phase_providers", [])], providers = [_ScalaRulePhase], ), } @@ -275,7 +275,7 @@ def make_scala_library(*extras): _library_attributes, _scala_toolchain_attributes, _extras_attributes(extras), - *[extra["attrs"] for extra in extras] + *[extra.get("attrs", {}) for extra in extras] ), cfg = _scala_incoming_transition, doc = "Compiles a Scala JVM library.", @@ -284,13 +284,13 @@ def make_scala_library(*extras): { "jar": "%{name}.jar", }, - *[extra["outputs"] for extra in extras] + *[extra.get("outputs", {}) for extra in extras] ), toolchains = [ "//rules/scala:toolchain_type", "//rules/scalafmt:toolchain_type", "@bazel_tools//tools/jdk:toolchain_type", - ], + ] + [toolchain for extra in extras for toolchain in extra.get("toolchains", [])], ) scala_library = make_scala_library() @@ -309,7 +309,7 @@ def make_scala_binary(*extras): ), }, _extras_attributes(extras), - *[extra["attrs"] for extra in extras] + *[extra.get("attrs", {}) for extra in extras] ), cfg = _scala_incoming_transition, doc = """ @@ -331,13 +331,13 @@ To run the program: `bazel run ` "jar": "%{name}.jar", "deploy_jar": "%{name}_deploy.jar", }, - *[extra["outputs"] for extra in extras] + *[extra.get("outputs", {}) for extra in extras] ), toolchains = [ "//rules/scala:toolchain_type", "//rules/scalafmt:toolchain_type", "@bazel_tools//tools/jdk:toolchain_type", - ], + ] + [toolchain for extra in extras for toolchain in extra.get("toolchains", [])], ) scala_binary = make_scala_binary() @@ -388,7 +388,7 @@ def make_scala_test(*extras): ), }, _extras_attributes(extras), - *[extra["attrs"] for extra in extras] + *[extra.get("attrs", {}) for extra in extras] ), cfg = _scala_incoming_transition, doc = """ @@ -408,14 +408,14 @@ To build and run a specific test: `bazel test --test_filter=