mago_codex/metadata/
attribute.rs1use mago_span::HasSpan;
2use mago_span::Span;
3use mago_word::Word;
4
5use crate::ttype::union::TUnion;
6
7#[derive(Debug, Clone, PartialEq, Eq, Hash)]
8#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
9#[non_exhaustive]
10pub struct AttributeArgumentMetadata {
11 pub name: Option<Word>,
12 pub span: Span,
13 pub name_span: Option<Span>,
14 pub value_span: Option<Span>,
15 pub value_type: Option<TUnion>,
16}
17
18#[derive(Debug, Clone, PartialEq, Eq, Hash)]
19#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
20#[non_exhaustive]
21pub struct AttributeMetadata {
22 pub name: Word,
23 pub span: Span,
24 pub arguments: Vec<AttributeArgumentMetadata>,
25}
26
27impl HasSpan for AttributeMetadata {
28 fn span(&self) -> Span {
29 self.span
30 }
31}