xidl_parser/hir/
enum_dcl.rs1use super::*;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Serialize, Deserialize, Clone)]
5pub struct EnumDcl {
6 pub annotations: Vec<Annotation>,
7 pub ident: String,
8 pub member: Vec<Enumerator>,
9}
10
11#[derive(Debug, Serialize, Deserialize, Clone)]
12pub struct Enumerator {
13 pub annotations: Vec<Annotation>,
14 pub ident: String,
15}
16
17impl EnumDcl {
18 pub fn serialize_kind(&self, config: &SerializeConfig) -> SerializeKind {
19 config.resolve_for_annotations(&self.annotations)
20 }
21}
22
23impl From<crate::typed_ast::EnumDcl> for EnumDcl {
24 fn from(typed_ast: crate::typed_ast::EnumDcl) -> Self {
25 Self {
26 annotations: vec![],
27 ident: typed_ast.ident.0,
28 member: typed_ast.member.into_iter().map(Into::into).collect(),
29 }
30 }
31}
32
33impl From<crate::typed_ast::Enumerator> for Enumerator {
34 fn from(value: crate::typed_ast::Enumerator) -> Self {
35 Self {
36 annotations: expand_annotations(value.annotations),
37 ident: value.ident.0,
38 }
39 }
40}