1use std::collections::HashMap;
2
3use crate::token::{Span, TokenTree};
4
5pub struct ParsedStruct {
6 pub name: String,
7 pub fields: Vec<ParsedField>,
8 pub span: Span
9}
10
11pub struct ParsedEnum {
12 pub name: String,
13 pub variants: Vec<ParsedVariant>,
14 pub span: Span
15}
16
17pub struct ParsedField {
18 pub name: Option<String>,
19 pub attrs: Vec<ParsedAttribute>,
20 pub ty: Vec<TokenTree>,
21 pub span: Span
22}
23
24pub struct ParsedVariant {
25 pub name: String,
26 pub index: u32,
27 pub data: VariantData,
28 pub span: Span
29}
30
31pub enum VariantData {
32 Unit(Span),
33 Tuple(Vec<ParsedField>, Span),
34 Struct(Vec<ParsedField>, Span)
35}
36
37pub struct ParsedAttribute {
38 pub name: String,
39 pub args: HashMap<String, Vec<TokenTree>>,
40 pub span: Span
41}