diff options
author | Stiopa Koltsov <nga@meta.com> | 2024-09-28 05:26:02 -0700 |
---|---|---|
committer | Facebook GitHub Bot <facebook-github-bot@users.noreply.github.com> | 2024-09-28 05:26:02 -0700 |
commit | 04b8e222aabfdaf9153faad6071267bd65f82c24 (patch) | |
tree | e1a4a3e34a4cd902990c9efc7b757993fbaafb1e | |
parent | 9772d7ff48cf9a4d7598ead81919341d491a5f52 (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.rs | 9 | ||||
-rw-r--r-- | starlark_derive/src/module/render/fun.rs | 6 |
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)? } } } |