mago_codex/metadata/
enum_case.rs1use serde::Deserialize;
2use serde::Serialize;
3
4use mago_atom::Atom;
5use mago_span::HasSpan;
6use mago_span::Span;
7
8use crate::metadata::attribute::AttributeMetadata;
9use crate::metadata::flags::MetadataFlags;
10use crate::ttype::atomic::TAtomic;
11
12#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
18#[non_exhaustive]
19pub struct EnumCaseMetadata {
20 pub attributes: Vec<AttributeMetadata>,
21 pub name: Atom,
22 pub name_span: Span,
23 pub span: Span,
24 pub value_type: Option<TAtomic>,
25 pub flags: MetadataFlags,
26}
27
28impl EnumCaseMetadata {
29 #[inline]
39 #[must_use]
40 pub fn new(name: Atom, name_span: Span, span: Span, flags: MetadataFlags) -> Self {
41 Self { attributes: Vec::new(), name, name_span, span, flags, value_type: None }
42 }
43}
44
45impl HasSpan for EnumCaseMetadata {
46 fn span(&self) -> Span {
47 self.span
48 }
49}