You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
cargo-bazel: fix binary targets of proc-macro crates using wrong dep attribute (#3975)
## Problem
When a crate has both a `rust_proc_macro` library target and
`rust_binary` targets (e.g. development utilities shipped alongside the
proc-macro), `make_rust_binary` unconditionally places the library in
`deps`. However, rules_rust validates that proc-macro libraries must
appear in `proc_macro_deps`, not `deps`. This causes analysis failures
for any such crate.
## Solution
In `make_rust_binary`, detect whether the crate's library target is a
proc-macro by checking if `Rule::ProcMacro(_)` is present in
`krate.targets`. If it is, insert the library label into
`proc_macro_deps` instead of `deps`.
## Testing
- `binary_of_proc_macro_crate_uses_proc_macro_deps`: verifies that the
generated `rust_binary` has the `proc-macr`o lib in `proc_macro_deps`
and not in `deps`.
---------
Signed-off-by: Thomas Lam <thomaslam@canva.com>
0 commit comments