abi_stable_derive/
attribute_parsing.rs

1use as_derive_utils::parse_utils::ParseBufferExt;
2
3use syn::{parse::ParseBuffer, Token};
4
5///////////////////////////////////////////////////////////////////////////////
6
7///////////////////////////////////////////////////////////////////////////////
8
9mod kw {
10    syn::custom_keyword! {hidden}
11}
12
13// Searches for `hidden` within a `doc` attribute
14pub(crate) fn contains_doc_hidden(input: &ParseBuffer<'_>) -> Result<bool, syn::Error> {
15    let input = if input.peek(Token!(=)) {
16        input.ignore_rest();
17        return Ok(false);
18    } else {
19        input.parse_paren_buffer()?
20    };
21
22    let mut is_hidden = false;
23    while !input.is_empty() {
24        if input.check_parse(kw::hidden)? {
25            is_hidden = true;
26            if !input.is_empty() {
27                let _ = input.parse::<Token!(,)>()?;
28            }
29            break;
30        } else {
31            input.skip_tt();
32        }
33    }
34    Ok(is_hidden)
35}