Skip to content

Commit bf86950

Browse files
committed
glib-macros: Properties: copy over the doc comments more elegantly
Let's copy the comments as part of the `parse_quote_spanned!` when we create the rest of the tokens for the code instead of adding it after the fact.
1 parent 60f69d1 commit bf86950

File tree

1 file changed

+4
-14
lines changed

1 file changed

+4
-14
lines changed

glib-macros/src/properties.rs

+4-14
Original file line numberDiff line numberDiff line change
@@ -623,9 +623,10 @@ fn expand_impl_getset_properties(props: &[PropDesc]) -> Vec<syn::ImplItemFn> {
623623

624624
let (getter_docs, setter_docs) = arrange_property_comments(&p.comments);
625625

626-
let mut getter: Option<syn::ImplItemFn> = p.get.is_some().then(|| {
626+
let getter = p.get.is_some().then(|| {
627627
let span = p.attrs_span;
628628
parse_quote_spanned!(span=>
629+
#(#getter_docs)*
629630
#[must_use]
630631
#[allow(dead_code)]
631632
pub fn #ident(&self) -> <#ty as #crate_ident::property::Property>::Value {
@@ -634,13 +635,7 @@ fn expand_impl_getset_properties(props: &[PropDesc]) -> Vec<syn::ImplItemFn> {
634635
)
635636
});
636637

637-
if let Some(ref mut getter) = getter {
638-
for attr in getter_docs {
639-
getter.attrs.push(attr.clone());
640-
}
641-
}
642-
643-
let mut setter: Option<syn::ImplItemFn> = (p.set.is_some() && !p.is_construct_only).then(|| {
638+
let setter = (p.set.is_some() && !p.is_construct_only).then(|| {
644639
let ident = format_ident!("set_{}", ident);
645640
let target_ty = quote!(<<#ty as #crate_ident::property::Property>::Value as #crate_ident::prelude::HasParamSpec>::SetValue);
646641
let set_ty = if p.nullable {
@@ -659,19 +654,14 @@ fn expand_impl_getset_properties(props: &[PropDesc]) -> Vec<syn::ImplItemFn> {
659654
};
660655
let span = p.attrs_span;
661656
parse_quote_spanned!(span=>
657+
#(#setter_docs)*
662658
#[allow(dead_code)]
663659
pub fn #ident<'a>(&self, value: #set_ty) {
664660
self.set_property_from_value(#stripped_name, &::std::convert::From::from(#upcasted_borrowed_value))
665661
}
666662
)
667663
});
668664

669-
if let Some(ref mut setter) = setter {
670-
for attr in setter_docs {
671-
setter.attrs.push(attr.clone());
672-
}
673-
}
674-
675665
[getter, setter]
676666
});
677667
defs.flatten() // flattens []

0 commit comments

Comments
 (0)