Backed out 5 changesets (bug 1890092, bug 1888683) for causing build bustages & crash...
[gecko.git] / third_party / rust / weedle2 / src / dictionary.rs
blob3c9b23cac556002bd44bf02a9784c49007638645
1 use crate::attribute::ExtendedAttributeList;
2 use crate::common::{Default, Identifier};
3 use crate::types::Type;
5 /// Parses dictionary members
6 pub type DictionaryMembers<'a> = Vec<DictionaryMember<'a>>;
8 ast_types! {
9     /// Parses dictionary member `[attributes]? required? type identifier ( = default )?;`
10     struct DictionaryMember<'a> {
11         attributes: Option<ExtendedAttributeList<'a>>,
12         required: Option<term!(required)>,
13         type_: Type<'a>,
14         identifier: Identifier<'a>,
15         default: Option<Default<'a>>,
16         semi_colon: term!(;),
17     }
20 #[cfg(test)]
21 mod test {
22     use super::*;
23     use crate::Parse;
25     test!(should_parse_dictionary_member { "required long num = 5;" =>
26         "";
27         DictionaryMember;
28         attributes.is_none();
29         required.is_some();
30         identifier.0 == "num";
31         default.is_some();
32     });