#![cfg_attr(coverage_nightly, coverage(off))]
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[repr(u16)]
pub enum AstKind {
Function(FunctionKind),
Class(ClassKind),
Variable(VarKind),
Import(ImportKind),
Expression(ExprKind),
Statement(StmtKind),
Type(TypeKind),
Module(ModuleKind),
Macro(MacroKind), }
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum FunctionKind {
Regular,
Method,
Constructor,
Getter,
Setter,
Lambda,
Closure,
Destructor, Operator, }
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ClassKind {
Regular,
Abstract,
Interface,
Trait,
Enum,
Struct,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum VarKind {
Let,
Const,
Static,
Field,
Parameter,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ImportKind {
Module,
Named,
Default,
Namespace,
Dynamic,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ExprKind {
Call,
Member,
Binary,
Unary,
Literal,
Identifier,
Array,
Object,
New, Delete, Lambda, Conditional, This, }
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum StmtKind {
Block,
If,
For,
While,
Return,
Throw,
Try,
Switch,
Goto, Label, DoWhile, ForEach, Catch, Break, Continue, Case, }
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum TypeKind {
Primitive,
Array,
Tuple,
Union,
Intersection,
Generic,
Function,
Object,
Pointer, Struct, Enum, Typedef, Class, Template, Namespace, Alias, Interface, Module, Annotation, Mapped, Conditional, }
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ModuleKind {
File,
Namespace,
Package,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum MacroKind {
ObjectLike, FunctionLike, Variadic, Include, Conditional, Export, Decorator, }