Reorganize Android Lint plugins into kt_plugin_map
PiperOrigin-RevId: 513387322
Change-Id: I6473afc246071c175d164177a54dc3856c777d5b
diff --git a/kotlin/common.bzl b/kotlin/common.bzl
index 4d7dd56..2d8e01f 100644
--- a/kotlin/common.bzl
+++ b/kotlin/common.bzl
@@ -380,15 +380,23 @@
return result
def _kt_plugins_map(
+ android_lint_singlejar_plugins = depset(),
+ android_lint_libjar_plugin_infos = [],
java_plugin_infos = [],
kt_compiler_plugin_infos = []):
"""A struct containing all the plugin types understood by rules_kotlin.
Args:
- java_plugin_infos: (list[JavaPluginInfo])
- kt_compiler_plugin_infos: (list[KtCompilerPluginInfo])
+ android_lint_singlejar_plugins: (depset[File]) Android Lint checkers.
+ Each JAR is self-contained and should be loaded in an isolated classloader.
+ android_lint_libjar_plugin_infos: (list[JavaInfo]) Android Lint checkers.
+ All infos share transitive dependencies and should be loaded in a combined classloader.
+ java_plugin_infos: (list[JavaPluginInfo])
+ kt_compiler_plugin_infos: (list[KtCompilerPluginInfo])
"""
return struct(
+ android_lint_singlejar_plugins = android_lint_singlejar_plugins,
+ android_lint_libjar_plugin_infos = android_lint_libjar_plugin_infos,
java_plugin_infos = java_plugin_infos,
kt_compiler_plugin_infos = kt_compiler_plugin_infos,
)
@@ -768,8 +776,6 @@
codegen_output_java_infos = [],
),
exported_plugins = [],
- android_lint_plugins = [],
- android_lint_rules_jars = depset(), # Depset with standalone Android Lint rules Jars
javacopts = [],
kotlincopts = [],
compile_jdeps = depset(),
@@ -1008,12 +1014,6 @@
lint_flags.append("--disable")
lint_flags.append(",".join(disable_lint_checks))
- # TODO: Support Android Lint plugins coming from plugins and exported_plugins attributes
- android_lint_plugins_jars = depset(
- order = "preorder",
- transitive = [plugin_classpaths] + [dep.transitive_runtime_jars for dep in android_lint_plugins],
- )
-
android_lint_out = lint_actions.run_lint_on_library(
ctx,
runner = kt_toolchain.android_lint_runner,
@@ -1026,8 +1026,14 @@
resource_files = resource_files,
baseline_file = androidlint_toolchains.get_baseline(ctx),
config = kt_toolchain.android_lint_config,
- android_lint_plugins_depset = android_lint_plugins_jars,
- android_lint_rules = android_lint_rules_jars,
+ android_lint_plugins_depset = depset(
+ order = "preorder",
+ transitive = [plugin_classpaths] + [
+ dep.transitive_runtime_jars
+ for dep in plugins.android_lint_libjar_plugin_infos
+ ],
+ ),
+ android_lint_rules = plugins.android_lint_singlejar_plugins,
lint_flags = lint_flags,
extra_input_depsets = [p.processor_data for p in java_plugin_datas],
testonly = testonly,
diff --git a/kotlin/jvm_compile.bzl b/kotlin/jvm_compile.bzl
index 8b03781..78d96c8 100644
--- a/kotlin/jvm_compile.bzl
+++ b/kotlin/jvm_compile.bzl
@@ -150,8 +150,6 @@
return common.kt_jvm_library(
ctx,
- android_lint_plugins = [p[JavaInfo] for p in android_lint_plugins],
- android_lint_rules_jars = android_lint_rules_jars,
classpath_resources = classpath_resources,
common_srcs = common_srcs,
coverage_srcs = coverage_srcs,
@@ -173,7 +171,13 @@
output = output,
output_srcjar = output_srcjar,
plugins = common.kt_plugins_map(
- java_plugin_infos = [plugin[JavaPluginInfo] for plugin in plugins if (JavaPluginInfo in plugin)],
+ android_lint_singlejar_plugins = android_lint_rules_jars,
+ android_lint_libjar_plugin_infos = [p[JavaInfo] for p in android_lint_plugins],
+ java_plugin_infos = [
+ plugin[JavaPluginInfo]
+ for plugin in plugins
+ if (JavaPluginInfo in plugin)
+ ],
kt_compiler_plugin_infos =
kt_traverse_exports.expand_compiler_plugins(deps).to_list() + [
plugin[KtCompilerPluginInfo]