use super::{BindingTarget, Expr, Ident, Stmt};
use crate::common::Span;
use alloc::boxed::Box;
use alloc::vec::Vec;
#[derive(Clone, Debug, PartialEq)]
pub struct Function {
pub id: Option<Ident>,
pub params: Vec<Param>,
pub body: Vec<Stmt>,
pub is_async: bool,
pub is_generator: bool,
pub span: Span,
}
#[derive(Clone, Debug, PartialEq)]
pub struct Param {
pub target: BindingTarget,
pub default: Option<Expr>,
pub rest: bool,
pub span: Span,
}
#[derive(Clone, Debug, PartialEq)]
pub struct Arrow {
pub params: Vec<Param>,
pub body: ArrowBody,
pub is_async: bool,
pub span: Span,
}
#[derive(Clone, Debug, PartialEq)]
#[allow(missing_docs)]
pub enum ArrowBody {
Expr(Box<Expr>),
Block(Vec<Stmt>),
}