bazelbuild / rules_rust

Rust rules for Bazel
https://bazelbuild.github.io/rules_rust/
Apache License 2.0
623 stars 398 forks source link

Updated rust-analyzer to use repo vs generated files as crate roots #2717

Open UebelAndre opened 2 days ago

UebelAndre commented 2 days ago

This change updates the rust_analyzer_aspect to attempt to match generated crate root sources to srcs inputs and use the the path of the source file in place of the generated path. The generated path is then added to sources.include_dirs for compatibility. The impact of this can be seen in the following diff of the @rules_rust//:rust-project.json file:

--- rust-project.old.json   2024-06-28 09:00:51
+++ rust-project.json   2024-06-28 09:04:43
@@ -821,10 +821,16 @@
         },
         {
             "display_name": "libgensrc_with_crate_root",
-            "root_module": "/private/var/tmp/_bazel_user/76282c66b0dfe3c5cb9a230bdc913a52/execroot/rules_rust/bazel-out/darwin_arm64-fastbuild/bin/test/generated_inputs/lib.rs",
+            "root_module": "test/generated_inputs/lib.rs",
             "edition": "2018",
             "deps": [],
             "is_workspace_member": true,
+            "source": {
+                "include_dirs": [
+                    "/private/var/tmp/_bazel_user/76282c66b0dfe3c5cb9a230bdc913a52/execroot/rules_rust/bazel-out/darwin_arm64-fastbuild/bin/test/generated_inputs"
+                ],
+                "exclude_dirs": []
+            },
             "cfg": [
                 "test",
                 "debug_assertions"
@@ -850,10 +856,16 @@
...
...
...

closes https://github.com/bazelbuild/rules_rust/issues/2716