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