Skip to main content

mago_codex/metadata/
attribute.rs

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