1use crate::attribute::ExtendedAttributeList;
2use crate::common::{Default, Docstring, Identifier};
3use crate::types::Type;
4
5pub type DictionaryMembers<'a> = Vec<DictionaryMember<'a>>;
7
8ast_types! {
9 struct DictionaryMember<'a> {
11 docstring: Option<Docstring>,
12 attributes: Option<ExtendedAttributeList<'a>>,
13 required: Option<term!(required)>,
14 type_: Type<'a>,
15 identifier: Identifier<'a>,
16 default: Option<Default<'a>>,
17 semi_colon: term!(;),
18 }
19}
20
21#[cfg(test)]
22mod test {
23 use super::*;
24 use crate::Parse;
25
26 test!(should_parse_dictionary_member { "required long num = 5;" =>
27 "";
28 DictionaryMember;
29 attributes.is_none();
30 required.is_some();
31 identifier.0 == "num";
32 default.is_some();
33 });
34}