summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStiopa Koltsov <nga@meta.com>2024-09-28 05:26:02 -0700
committerFacebook GitHub Bot <facebook-github-bot@users.noreply.github.com>2024-09-28 05:26:02 -0700
commit04b8e222aabfdaf9153faad6071267bd65f82c24 (patch)
treee1a4a3e34a4cd902990c9efc7b757993fbaafb1e
parent9772d7ff48cf9a4d7598ead81919341d491a5f52 (diff)
Simplify generated code for defaulted parameters
Summary: Extract a function. Reviewed By: JakobDegen Differential Revision: D63583465 fbshipit-source-id: 42459b6bc173e22b14c7b8ae1364d81ef28d51e7
-rw-r--r--starlark/src/__derive_refs/parse_args.rs9
-rw-r--r--starlark_derive/src/module/render/fun.rs6
2 files changed, 10 insertions, 5 deletions
diff --git a/starlark/src/__derive_refs/parse_args.rs b/starlark/src/__derive_refs/parse_args.rs
index bba8cdaf..5065b9ba 100644
--- a/starlark/src/__derive_refs/parse_args.rs
+++ b/starlark/src/__derive_refs/parse_args.rs
@@ -82,3 +82,12 @@ pub fn check_optional<'v, T: UnpackValue<'v>>(
Some(x) => Ok(Some(T::unpack_named_param(x, name)?)),
}
}
+
+#[inline]
+pub fn check_defaulted<'v, T: UnpackValue<'v>>(
+ name: &str,
+ x: Option<Value<'v>>,
+ default: impl FnOnce() -> T,
+) -> anyhow::Result<T> {
+ Ok(check_optional(name, x)?.unwrap_or_else(default))
+}
diff --git a/starlark_derive/src/module/render/fun.rs b/starlark_derive/src/module/render/fun.rs
index dfced8c2..b3c34033 100644
--- a/starlark_derive/src/module/render/fun.rs
+++ b/starlark_derive/src/module/render/fun.rs
@@ -462,11 +462,7 @@ fn render_binding_arg(arg: &StarArg) -> BindingArg {
(false, false, Some(default)) => {
syn::parse_quote! {
{
- // Combo
- #[allow(clippy::manual_unwrap_or)]
- #[allow(clippy::unnecessary_lazy_evaluations)]
- #[allow(clippy::redundant_closure)]
- starlark::__derive_refs::parse_args::check_optional(#name_str, #source)?.unwrap_or_else(|| #default)
+ starlark::__derive_refs::parse_args::check_defaulted(#name_str, #source, || #default)?
}
}
}