Tweak import macro bootstrap to trick rust analyzer aspect (#1179)
Co-authored-by: UebelAndre <github@uebelandre.com>
diff --git a/rust/private/transitions.bzl b/rust/private/transitions.bzl
index f502163..23336f4 100644
--- a/rust/private/transitions.bzl
+++ b/rust/private/transitions.bzl
@@ -46,18 +46,19 @@
outputs = ["@rules_rust//rust/settings:use_real_import_macro"],
)
-def _with_import_macro_bootstrapping_mode_impl(ctx):
- target = ctx.attr.target[0]
- return [target[rust_common.crate_info], target[rust_common.dep_info]]
+def _alias_with_import_macro_bootstrapping_mode_impl(ctx):
+ actual = ctx.attr.actual[0]
+ return [actual[rust_common.crate_info], actual[rust_common.dep_info]]
-with_import_macro_bootstrapping_mode = rule(
- implementation = _with_import_macro_bootstrapping_mode_impl,
+alias_with_import_macro_bootstrapping_mode = rule(
+ implementation = _alias_with_import_macro_bootstrapping_mode_impl,
+ doc = "Alias-like rule to build the `actual` with `use_real_import_macro` setting disabled. Not to be used outside of the import macro bootstrap.",
attrs = {
- "target": attr.label(
+ # Using `actual` so tooling such as rust analyzer aspect traverses the target.
+ "actual": attr.label(
+ doc = "The target this alias refers to.",
cfg = import_macro_dep_bootstrap_transition,
- allow_single_file = True,
mandatory = True,
- executable = False,
),
"_allowlist_function_transition": attr.label(
default = Label("//tools/allowlists/function_transition_allowlist"),
diff --git a/util/import/BUILD.bazel b/util/import/BUILD.bazel
index 96580fb..f6c9d5f 100644
--- a/util/import/BUILD.bazel
+++ b/util/import/BUILD.bazel
@@ -1,11 +1,11 @@
load("//rust:defs.bzl", "rust_library", "rust_proc_macro", "rust_test")
# buildifier: disable=bzl-visibility
-load("//rust/private:transitions.bzl", "with_import_macro_bootstrapping_mode")
+load("//rust/private:transitions.bzl", "alias_with_import_macro_bootstrapping_mode")
-with_import_macro_bootstrapping_mode(
+alias_with_import_macro_bootstrapping_mode(
name = "import_macro",
- target = "import_macro_impl",
+ actual = ":import_macro_impl",
)
rust_proc_macro(