@@ -25,11 +25,28 @@ load(
25
25
_utils = "utils" ,
26
26
)
27
27
28
- def _get_associates (ctx , associates ):
28
+ def _collect_associates (ctx , toolchains , associate ):
29
+ """Collects the associate jars from the provided dependency and returns
30
+ them as a depset.
31
+
32
+ There are two outcomes for this marco:
33
+ 1. When `experimental_strict_associate_dependencies` is enabled and the tag override has not been provided, only the
34
+ direct java_output compile jars will be collected for each associate target.
35
+ 2. When `experimental_strict_associate_dependencies` is disabled, the complete transitive set of compile jars will
36
+ be collected for each assoicate target.
37
+ """
38
+ jars_depset = None
39
+ if (toolchains .kt .experimental_strict_associate_dependencies and
40
+ "kt_experimental_strict_associate_dependencies_incompatible" not in ctx .attr .tags ):
41
+ jars_depset = depset (direct = [a .compile_jar for a in associate [JavaInfo ].java_outputs ])
42
+ else :
43
+ jars_depset = depset (transitive = [associate [JavaInfo ].compile_jars ])
44
+ return jars_depset
45
+
46
+ def _get_associates (ctx , toolchains , associates ):
29
47
"""Creates a struct of associates meta data"""
30
48
if not associates :
31
49
return struct (
32
- targets = [],
33
50
module_name = _utils .derive_module_name (ctx ),
34
51
jars = depset (),
35
52
)
@@ -39,7 +56,7 @@ def _get_associates(ctx, associates):
39
56
jars = []
40
57
module_names = []
41
58
for a in associates :
42
- jars .append (depset ( transitive = [ a [ JavaInfo ]. compile_jars , a [ _KtJvmInfo ]. module_jars ] ))
59
+ jars .append (_collect_associates ( ctx = ctx , toolchains = toolchains , associate = a ))
43
60
module_names .append (a [_KtJvmInfo ].module_name )
44
61
module_names = list (_sets .copy_of (module_names ))
45
62
0 commit comments