@@ -20,6 +20,7 @@ load("//java/common/rules:java_helper.bzl", "helper")
2020load ("//java/common/rules:java_toolchain.bzl" , "JavaToolchainInfo" )
2121load (
2222 ":java_info.bzl" ,
23+ "JavaInfo" ,
2324 "JavaPluginInfo" ,
2425 "disable_plugin_info_annotation_processing" ,
2526 "java_info_for_compilation" ,
@@ -314,7 +315,36 @@ def compile(
314315 if uses_annotation_processing :
315316 generated_class_jar = _derive_output_file (ctx , output , name_suffix = "-gen" )
316317 generated_source_jar = _derive_output_file (ctx , output , name_suffix = "-gensrc" )
317- get_internal_java_common ().create_compilation_action (
318+
319+ direct_dep_jars_to_verify = []
320+ resolved_unused_deps_mode = "off"
321+ internal_common = get_internal_java_common ()
322+ is_unused_deps_supported = hasattr (internal_common , "is_unused_deps_supported" ) and internal_common .is_unused_deps_supported ()
323+
324+ if is_unused_deps_supported and not ctx .label .workspace_name :
325+ for package_config in java_toolchain ._package_configuration :
326+ matched = package_config .matches (package_config .package_specs , ctx .label )
327+ if matched :
328+ if hasattr (package_config , "unused_deps" ):
329+ resolved_unused_deps_mode = package_config .unused_deps
330+
331+ if resolved_unused_deps_mode == "error" and hasattr (ctx .attr , "deps" ):
332+ for dep in ctx .attr .deps :
333+ if JavaInfo in dep :
334+ if hasattr (dep [JavaInfo ], "java_outputs" ):
335+ for output_info in dep [JavaInfo ].java_outputs :
336+ compile_jar = output_info .compile_jar if output_info .compile_jar else output_info .class_jar
337+ if compile_jar :
338+ direct_dep_jars_to_verify .append (struct (
339+ jar = compile_jar ,
340+ label = str (dep .label ),
341+ ))
342+
343+ additional_kwargs = {}
344+ if is_unused_deps_supported :
345+ additional_kwargs ["direct_dep_jars_to_verify" ] = direct_dep_jars_to_verify
346+
347+ internal_common .create_compilation_action (
318348 ctx ,
319349 java_toolchain ,
320350 output ,
@@ -343,6 +373,7 @@ def compile(
343373 enable_direct_classpath ,
344374 annotation_processor_additional_inputs ,
345375 annotation_processor_additional_outputs ,
376+ ** additional_kwargs
346377 )
347378
348379 create_output_source_jar = len (source_files ) > 0 or source_jars != [output_source_jar ]
0 commit comments