Skip to content

Commit e33d58e

Browse files
committed
scripts: generate_rust_analyzer.py: extract {build,register}_crate
Extract helpers from `append_crate` to avoid the need to peek into `crates[-1]`. This improves readability. Change default parameters to `None` with true defaults applied in `build_crate` to avoid repeating the defaults in wrapper functions such as `append_crate`. Suggested-by: Trevor Gross <tmgross@umich.edu> Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com> Tested-by: Daniel Almeida <daniel.almeida@collabora.com> Reviewed-by: Fiona Behrens <me@kloenk.dev> 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-1-29cc2e91dcd5@kernel.org Signed-off-by: Tamir Duberstein <tamird@kernel.org>
1 parent 1f318b9 commit e33d58e

1 file changed

Lines changed: 61 additions & 13 deletions

File tree

scripts/generate_rust_analyzer.py

Lines changed: 61 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,22 @@ def generate_crates(srctree, objtree, sysroot_src, external_src, cfgs, core_edit
3535
crates_indexes = {}
3636
crates_cfgs = args_crates_cfgs(cfgs)
3737

38-
def append_crate(display_name, root_module, deps, cfg=[], is_workspace_member=True, is_proc_macro=False, edition="2021"):
38+
def build_crate(
39+
display_name,
40+
root_module,
41+
deps,
42+
*,
43+
cfg,
44+
is_workspace_member,
45+
is_proc_macro,
46+
edition,
47+
):
48+
cfg = cfg if cfg is not None else []
49+
is_workspace_member = (
50+
is_workspace_member if is_workspace_member is not None else True
51+
)
52+
is_proc_macro = is_proc_macro if is_proc_macro is not None else False
53+
edition = edition if edition is not None else "2021"
3954
crate = {
4055
"display_name": display_name,
4156
"root_module": str(root_module),
@@ -54,19 +69,45 @@ def append_crate(display_name, root_module, deps, cfg=[], is_workspace_member=Tr
5469
stdin=subprocess.DEVNULL,
5570
).decode('utf-8').strip()
5671
crate["proc_macro_dylib_path"] = f"{objtree}/rust/{proc_macro_dylib_name}"
57-
crates_indexes[display_name] = len(crates)
72+
return crate
73+
74+
def register_crate(crate):
75+
crates_indexes[crate["display_name"]] = len(crates)
5876
crates.append(crate)
5977

78+
def append_crate(
79+
display_name,
80+
root_module,
81+
deps,
82+
*,
83+
cfg=None,
84+
is_workspace_member=None,
85+
is_proc_macro=None,
86+
edition=None,
87+
):
88+
return register_crate(
89+
build_crate(
90+
display_name,
91+
root_module,
92+
deps,
93+
cfg=cfg,
94+
is_workspace_member=is_workspace_member,
95+
is_proc_macro=is_proc_macro,
96+
edition=edition,
97+
)
98+
)
99+
60100
def append_sysroot_crate(
61101
display_name,
62102
deps,
63-
cfg=[],
103+
*,
104+
cfg=None,
64105
):
65-
append_crate(
106+
return append_crate(
66107
display_name,
67108
sysroot_src / display_name / "src" / "lib.rs",
68109
deps,
69-
cfg,
110+
cfg=cfg,
70111
is_workspace_member=False,
71112
# Miguel Ojeda writes:
72113
#
@@ -169,20 +210,27 @@ def append_crate_with_generated(
169210
display_name,
170211
deps,
171212
):
172-
append_crate(
213+
crate = build_crate(
173214
display_name,
174215
srctree / "rust"/ display_name / "lib.rs",
175216
deps,
176217
cfg=cfg,
218+
is_workspace_member=True,
219+
is_proc_macro=False,
220+
edition=None,
177221
)
178-
crates[-1]["env"]["OBJTREE"] = str(objtree.resolve(True))
179-
crates[-1]["source"] = {
180-
"include_dirs": [
181-
str(srctree / "rust" / display_name),
182-
str(objtree / "rust")
183-
],
184-
"exclude_dirs": [],
222+
crate["env"]["OBJTREE"] = str(objtree.resolve(True))
223+
crate_with_generated = {
224+
**crate,
225+
"source": {
226+
"include_dirs": [
227+
str(srctree / "rust" / display_name),
228+
str(objtree / "rust"),
229+
],
230+
"exclude_dirs": [],
231+
},
185232
}
233+
return register_crate(crate_with_generated)
186234

187235
append_crate_with_generated("bindings", ["core", "ffi", "pin_init"])
188236
append_crate_with_generated("uapi", ["core", "ffi", "pin_init"])

0 commit comments

Comments
 (0)