abi_stable_derive/
attribute_parsing.rs
1use as_derive_utils::parse_utils::ParseBufferExt;
2
3use syn::{parse::ParseBuffer, Token};
4
5mod kw {
10 syn::custom_keyword! {hidden}
11}
12
13pub(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}