api-macro: avoid duplicate output code

While this is a tiny piece of code, having only one output
code consisting of prepared parts is nicer to keep up to
date.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
This commit is contained in:
Wolfgang Bumiller 2020-04-16 09:12:44 +02:00
parent 6d831e36dd
commit 62f3c7d2d9

View File

@ -42,16 +42,13 @@ pub fn handle_method(mut attribs: JSONObject, mut func: syn::ItemFn) -> Result<T
let access_setter = match attribs.remove("access") {
Some(access) => {
let access = Access::try_from(access.into_object("access rules")?)?;
let description: Option<syn::LitStr> = access.description;
let permission: syn::Expr = access.permission;
if let Some(description) = description {
quote_spanned! { access.span =>
.access(Some(#description), #permission)
}
} else {
quote_spanned! { access.span =>
.access(None, #permission)
}
let permission = access.permission;
let description = match access.description {
Some(desc) => quote_spanned! { desc.span() => Some(#desc) },
None => quote_spanned! { access.span => None }
};
quote_spanned! { access.span =>
.access(#description, #permission)
}
}
None => TokenStream::new(),