1+ load ("@bazel_features//:features.bzl" , "bazel_features" )
12load ("@io_bazel_rules_scala//scala:jars_to_labels.bzl" , "JarsToLabelsInfo" )
23load ("//scala/settings:stamp_settings.bzl" , "StampScalaImport" )
34load (
@@ -68,7 +69,7 @@ def _scala_import_impl(ctx):
6869 ]
6970
7071def _new_java_info (ctx , jar , stamped_jar ):
71- return JavaInfo (
72+ kwargs = dict (
7273 output_jar = jar ,
7374 compile_jar = stamped_jar ,
7475 exports = [target [JavaInfo ] for target in ctx .attr .exports ],
@@ -78,6 +79,13 @@ def _new_java_info(ctx, jar, stamped_jar):
7879 neverlink = ctx .attr .neverlink ,
7980 )
8081
82+ # The JavaInfo constructor's add_exports and add_opens flags were added in Bazel 7:
83+ # https://github.com/bazelbuild/bazel/issues/20033
84+ if bazel_features .java .java_info_constructor_module_flags :
85+ kwargs ["add_exports" ] = ctx .attr .add_exports
86+ kwargs ["add_opens" ] = ctx .attr .add_opens
87+ return JavaInfo (** kwargs )
88+
8189def _add_labels_of_current_code_jars (code_jars , label , jars2labels ):
8290 for jar in code_jars .to_list ():
8391 jars2labels [jar .path ] = label
@@ -148,6 +156,9 @@ scala_import = rule(
148156 "java_compile_toolchain" : attr .label (
149157 default = Label ("@bazel_tools//tools/jdk:current_java_toolchain" ),
150158 ),
151- },
159+ } | ({
160+ "add_exports" : attr .string_list (),
161+ "add_opens" : attr .string_list (),
162+ } if bazel_features .java .java_info_constructor_module_flags else {}),
152163 toolchains = ["@bazel_tools//tools/jdk:toolchain_type" ],
153164)
0 commit comments