History

scripts: generate_rust_analyzer: add missing macros deps

The macros crate has depended on std and proc_macro since its introduction in commit 1fbde52bde73 ("rust: add `macros` crate"). These dependencies were omitted from commit 8c4555ccc55c ("scripts: add `generate_rust_analyzer.py`") resulting in missing go-to-definition and autocomplete, and false-positive warnings emitted from rust-analyzer such as: [{ "resource": "/Users/tamird/src/linux/rust/macros/module.rs", "owner": "_generated_diagnostic_collection_name_#1", "code": { "value": "non_snake_case", "target": { "$mid": 1, "path": "/rustc/", "scheme": "https", "authority": "doc.rust-lang.org", "query": "search=non_snake_case" } }, "severity": 4, "message": "Variable `None` should have snake_case name, e.g. `none`", "source": "rust-analyzer", "startLineNumber": 123, "startColumn": 17, "endLineNumber": 123, "endColumn": 21 }] Add the missing dependencies to improve the developer experience. [ Fiona had a different approach (thanks!) at: https://lore.kernel.org/rust-for-linux/20241205115438.234221-1-me@kloenk.dev/ But Tamir and Fiona agreed to this one. - Miguel ]

Tamir Duberstein committed 1 year ago

Commit 2e0f91a1 parent 5daa0c31 file · +21 −9Browse files

Unified · Split

scripts/generate_rust_analyzer.py+21−9
@@ -57,14 +57,26 @@ def generate_crates(srctree, objtree, sysroot_src, external_src, cfgs): · 56 unmodified lines
57 crates_indexes[display_name] = len(crates)57 crates_indexes[display_name] = len(crates)
58 crates.append(crate)58 crates.append(crate)
59 59
60 # First, the ones in `rust/` since they are a bit special.60 def append_sysroot_crate(
61 append_crate(61 display_name,
62 "core",62 deps,
63 sysroot_src / "core" / "src" / "lib.rs",63 cfg=[],
64 [],64 ):
65 cfg=crates_cfgs.get("core", []),65 append_crate(
66 is_workspace_member=False,66 display_name,
67 )67 sysroot_src / display_name / "src" / "lib.rs",
68 deps,
69 cfg,
70 is_workspace_member=False,
71 )
72
73 # NB: sysroot crates reexport items from one another so setting up our transitive dependencies
74 # here is important for ensuring that rust-analyzer can resolve symbols. The sources of truth
75 # for this dependency graph are `(sysroot_src / crate / "Cargo.toml" for crate in crates)`.
76 append_sysroot_crate("core", [], cfg=crates_cfgs.get("core", []))
77 append_sysroot_crate("alloc", ["core"])
78 append_sysroot_crate("std", ["alloc", "core"])
79 append_sysroot_crate("proc_macro", ["core", "std"])
68 80
69 append_crate(81 append_crate(
70 "compiler_builtins",82 "compiler_builtins",
@@ -75,7 +87,7 @@ def generate_crates(srctree, objtree, sysroot_src, external_src, cfgs): · 4 unmodified lines
75 append_crate(87 append_crate(
76 "macros",88 "macros",
77 srctree / "rust" / "macros" / "lib.rs",89 srctree / "rust" / "macros" / "lib.rs",
78 [],90 ["std", "proc_macro"],
79 is_proc_macro=True,91 is_proc_macro=True,
80 )92 )
81 93