Skip to content

Commit 79b833e

Browse files
tamirdgregkh
authored andcommitted
scripts: generate_rust_analyzer: add missing macros deps
[ Upstream commit 2e0f91a ] The macros crate has depended on std and proc_macro since its introduction in commit 1fbde52 ("rust: add `macros` crate"). These dependencies were omitted from commit 8c4555c ("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 ] Fixes: 8c4555c ("scripts: add `generate_rust_analyzer.py`") Reviewed-by: Fiona Behrens <me@kloenk.dev> Diagnosed-by: Chayim Refael Friedman <chayimfr@gmail.com> Link: rust-lang/rust-analyzer#17759 (comment) Signed-off-by: Tamir Duberstein <tamird@gmail.com> Tested-by: Andreas Hindborg <a.hindborg@kernel.org> Link: https://lore.kernel.org/r/20250210-rust-analyzer-macros-core-dep-v3-1-45eb4836f218@gmail.com [ Removed `return`. Changed tag name. Added Link. Slightly reworded. - Miguel ] Signed-off-by: Miguel Ojeda <ojeda@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
1 parent 2b6bd87 commit 79b833e

1 file changed

Lines changed: 21 additions & 9 deletions

File tree

scripts/generate_rust_analyzer.py

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,26 @@ def append_crate(display_name, root_module, deps, cfg=[], is_workspace_member=Tr
4949
}
5050
})
5151

52-
# First, the ones in `rust/` since they are a bit special.
53-
append_crate(
54-
"core",
55-
sysroot_src / "core" / "src" / "lib.rs",
56-
[],
57-
cfg=crates_cfgs.get("core", []),
58-
is_workspace_member=False,
59-
)
52+
def append_sysroot_crate(
53+
display_name,
54+
deps,
55+
cfg=[],
56+
):
57+
append_crate(
58+
display_name,
59+
sysroot_src / display_name / "src" / "lib.rs",
60+
deps,
61+
cfg,
62+
is_workspace_member=False,
63+
)
64+
65+
# NB: sysroot crates reexport items from one another so setting up our transitive dependencies
66+
# here is important for ensuring that rust-analyzer can resolve symbols. The sources of truth
67+
# for this dependency graph are `(sysroot_src / crate / "Cargo.toml" for crate in crates)`.
68+
append_sysroot_crate("core", [], cfg=crates_cfgs.get("core", []))
69+
append_sysroot_crate("alloc", ["core"])
70+
append_sysroot_crate("std", ["alloc", "core"])
71+
append_sysroot_crate("proc_macro", ["core", "std"])
6072

6173
append_crate(
6274
"compiler_builtins",
@@ -67,7 +79,7 @@ def append_crate(display_name, root_module, deps, cfg=[], is_workspace_member=Tr
6779
append_crate(
6880
"macros",
6981
srctree / "rust" / "macros" / "lib.rs",
70-
[],
82+
["std", "proc_macro"],
7183
is_proc_macro=True,
7284
)
7385
crates[-1]["proc_macro_dylib_path"] = f"{objtree}/rust/libmacros.so"

0 commit comments

Comments
 (0)