Skip to main content

xidl_parser/hir/
enum_dcl.rs

1use 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}