mago_codex/metadata/
constant.rs1use serde::Deserialize;
2use serde::Serialize;
3
4use mago_interner::StringIdentifier;
5use mago_reporting::Issue;
6use mago_span::HasSpan;
7use mago_span::Span;
8
9use crate::metadata::attribute::AttributeMetadata;
10use crate::metadata::flags::MetadataFlags;
11use crate::ttype::union::TUnion;
12
13#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
18pub struct ConstantMetadata {
19 pub attributes: Vec<AttributeMetadata>,
20 pub name: StringIdentifier,
21 pub span: Span,
22 pub inferred_type: Option<TUnion>,
23 pub flags: MetadataFlags,
24 pub issues: Vec<Issue>,
25}
26
27impl ConstantMetadata {
28 #[inline]
35 pub fn new(name: StringIdentifier, span: Span, flags: MetadataFlags) -> Self {
36 Self { attributes: Vec::new(), name, span, flags, inferred_type: None, issues: Vec::new() }
37 }
38
39 #[inline]
41 pub fn take_issues(&mut self) -> Vec<Issue> {
42 std::mem::take(&mut self.issues)
43 }
44}
45
46impl HasSpan for ConstantMetadata {
47 fn span(&self) -> Span {
48 self.span
49 }
50}