Skip to content

Commit 4079cf0

Browse files
committed
scripts: generate_rust_analyzer.py: drop "is_proc_macro": false
Add a dedicated `append_proc_macro_crate` function to reduce overloading in `append_crate`. This has the effect of removing `"is_proc_macro": false` from the output; this field is interpreted as false if absent[1] so this doesn't change the behavior of rust-analyzer. Use the `/` operator on `pathlib.Path` rather than directly crafting a string. This is consistent with all other path manipulation in this script. Link: https://github.com/rust-lang/rust-analyzer/blob/8d01570b5e812a49daa1f08404269f6ea5dd73a1/crates/project-model/src/project_json.rs#L372-L373 [1] Tested-by: Daniel Almeida <daniel.almeida@collabora.com> Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com> Reviewed-by: Trevor Gross <tmgross@umich.edu> Reviewed-by: Jesung Yang <y.j3ms.n@gmail.com> Tested-by: Jesung Yang <y.j3ms.n@gmail.com> Link: https://patch.msgid.link/20260122-rust-analyzer-types-v1-2-29cc2e91dcd5@kernel.org Signed-off-by: Tamir Duberstein <tamird@kernel.org>
1 parent e33d58e commit 4079cf0

1 file changed

Lines changed: 43 additions & 17 deletions

File tree

scripts/generate_rust_analyzer.py

Lines changed: 43 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -42,34 +42,65 @@ def build_crate(
4242
*,
4343
cfg,
4444
is_workspace_member,
45-
is_proc_macro,
4645
edition,
4746
):
4847
cfg = cfg if cfg is not None else []
4948
is_workspace_member = (
5049
is_workspace_member if is_workspace_member is not None else True
5150
)
52-
is_proc_macro = is_proc_macro if is_proc_macro is not None else False
5351
edition = edition if edition is not None else "2021"
54-
crate = {
52+
return {
5553
"display_name": display_name,
5654
"root_module": str(root_module),
5755
"is_workspace_member": is_workspace_member,
58-
"is_proc_macro": is_proc_macro,
5956
"deps": [{"crate": crates_indexes[dep], "name": dep} for dep in deps],
6057
"cfg": cfg,
6158
"edition": edition,
6259
"env": {
6360
"RUST_MODFILE": "This is only for rust-analyzer"
6461
}
6562
}
66-
if is_proc_macro:
67-
proc_macro_dylib_name = subprocess.check_output(
68-
[os.environ["RUSTC"], "--print", "file-names", "--crate-name", display_name, "--crate-type", "proc-macro", "-"],
63+
64+
def append_proc_macro_crate(
65+
display_name,
66+
root_module,
67+
deps,
68+
*,
69+
cfg=None,
70+
is_workspace_member=None,
71+
edition=None,
72+
):
73+
crate = build_crate(
74+
display_name,
75+
root_module,
76+
deps,
77+
cfg=cfg,
78+
is_workspace_member=is_workspace_member,
79+
edition=edition,
80+
)
81+
proc_macro_dylib_name = (
82+
subprocess.check_output(
83+
[
84+
os.environ["RUSTC"],
85+
"--print",
86+
"file-names",
87+
"--crate-name",
88+
display_name,
89+
"--crate-type",
90+
"proc-macro",
91+
"-",
92+
],
6993
stdin=subprocess.DEVNULL,
70-
).decode('utf-8').strip()
71-
crate["proc_macro_dylib_path"] = f"{objtree}/rust/{proc_macro_dylib_name}"
72-
return crate
94+
)
95+
.decode("utf-8")
96+
.strip()
97+
)
98+
proc_macro_crate = {
99+
**crate,
100+
"is_proc_macro": True,
101+
"proc_macro_dylib_path": str(objtree / "rust" / proc_macro_dylib_name),
102+
}
103+
return register_crate(proc_macro_crate)
73104

74105
def register_crate(crate):
75106
crates_indexes[crate["display_name"]] = len(crates)
@@ -82,7 +113,6 @@ def append_crate(
82113
*,
83114
cfg=None,
84115
is_workspace_member=None,
85-
is_proc_macro=None,
86116
edition=None,
87117
):
88118
return register_crate(
@@ -92,7 +122,6 @@ def append_crate(
92122
deps,
93123
cfg=cfg,
94124
is_workspace_member=is_workspace_member,
95-
is_proc_macro=is_proc_macro,
96125
edition=edition,
97126
)
98127
)
@@ -172,11 +201,10 @@ def append_sysroot_crate(
172201
cfg=crates_cfgs["syn"],
173202
)
174203

175-
append_crate(
204+
append_proc_macro_crate(
176205
"macros",
177206
srctree / "rust" / "macros" / "lib.rs",
178207
["std", "proc_macro", "proc_macro2", "quote", "syn"],
179-
is_proc_macro=True,
180208
)
181209

182210
append_crate(
@@ -185,12 +213,11 @@ def append_sysroot_crate(
185213
["core", "compiler_builtins"],
186214
)
187215

188-
append_crate(
216+
append_proc_macro_crate(
189217
"pin_init_internal",
190218
srctree / "rust" / "pin-init" / "internal" / "src" / "lib.rs",
191219
["std", "proc_macro", "proc_macro2", "quote", "syn"],
192220
cfg=["kernel"],
193-
is_proc_macro=True,
194221
)
195222

196223
append_crate(
@@ -216,7 +243,6 @@ def append_crate_with_generated(
216243
deps,
217244
cfg=cfg,
218245
is_workspace_member=True,
219-
is_proc_macro=False,
220246
edition=None,
221247
)
222248
crate["env"]["OBJTREE"] = str(objtree.resolve(True))

0 commit comments

Comments
 (0)