#![allow(dead_code)]
#![allow(clippy::large_enum_variant)]
use proc_macro2::Span;
use syn::{Expr, Ident, Lit, Path};
#[derive(Debug, Clone)]
pub struct DslBlock {
pub span: Span,
pub fields: Vec<DslField>,
}
#[derive(Debug, Clone)]
pub enum DslField {
Pair {
key: Ident,
value: DslValue,
span: Span,
},
Spread {
expr: Expr,
by_move: bool,
span: Span,
},
Conditional {
cond: Expr,
kind: CondKind,
key: Ident,
value: DslValue,
span: Span,
},
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum CondKind {
If,
ElseIf,
Else,
}
#[derive(Debug, Clone)]
pub enum DslValue {
Lit(Lit),
Path(Path),
Expr(Expr),
Block(DslBlock),
List(Vec<DslValue>),
Bool(bool),
BareIdent(Ident),
}