git.delta.rocks / jrsonnet / refs/heads / master

difftreelog

source

crates/jrsonnet-rowan-parser/src/generated/nodes.rs74.3 KiBsourcehistory
1//! This is a generated file, please do not edit manually. Changes can be2//! made in codegeneration that lives in `xtask` top-level dir.34#![allow(non_snake_case, clippy::match_like_matches_macro)]5use crate::{6	SyntaxKind::{self, *},7	SyntaxNode, SyntaxToken, T,8	ast::{AstChildren, AstNode, AstToken, support},9};1011#[derive(Debug, Clone, PartialEq, Eq, Hash)]12pub struct SourceFile {13	pub(crate) syntax: SyntaxNode,14}15impl SourceFile {16	pub fn expr(&self) -> Option<Expr> {17		support::children(&self.syntax).next()18	}19}2021#[derive(Debug, Clone, PartialEq, Eq, Hash)]22pub struct Expr {23	pub(crate) syntax: SyntaxNode,24}25impl Expr {26	pub fn stmts(&self) -> AstChildren<Stmt> {27		support::children(&self.syntax)28	}29	pub fn expr_base(&self) -> Option<ExprBase> {30		support::children(&self.syntax).next()31	}32	pub fn suffixs(&self) -> AstChildren<Suffix> {33		support::children(&self.syntax)34	}35}3637#[derive(Debug, Clone, PartialEq, Eq, Hash)]38pub struct SuffixIndex {39	pub(crate) syntax: SyntaxNode,40}41impl SuffixIndex {42	pub fn question_mark_token(&self) -> Option<SyntaxToken> {43		support::token(&self.syntax, T![?])44	}45	pub fn dot_token(&self) -> Option<SyntaxToken> {46		support::token(&self.syntax, T![.])47	}48	pub fn index(&self) -> Option<Name> {49		support::children(&self.syntax).next()50	}51}5253#[derive(Debug, Clone, PartialEq, Eq, Hash)]54pub struct Name {55	pub(crate) syntax: SyntaxNode,56}57impl Name {58	pub fn ident_lit(&self) -> Option<SyntaxToken> {59		support::token(&self.syntax, IDENT)60	}61}6263#[derive(Debug, Clone, PartialEq, Eq, Hash)]64pub struct SuffixIndexExpr {65	pub(crate) syntax: SyntaxNode,66}67impl SuffixIndexExpr {68	pub fn question_mark_token(&self) -> Option<SyntaxToken> {69		support::token(&self.syntax, T![?])70	}71	pub fn dot_token(&self) -> Option<SyntaxToken> {72		support::token(&self.syntax, T![.])73	}74	pub fn l_brack_token(&self) -> Option<SyntaxToken> {75		support::token(&self.syntax, T!['['])76	}77	pub fn index(&self) -> Option<Expr> {78		support::children(&self.syntax).next()79	}80	pub fn r_brack_token(&self) -> Option<SyntaxToken> {81		support::token(&self.syntax, T![']'])82	}83}8485#[derive(Debug, Clone, PartialEq, Eq, Hash)]86pub struct SuffixSlice {87	pub(crate) syntax: SyntaxNode,88}89impl SuffixSlice {90	pub fn slice_desc(&self) -> Option<SliceDesc> {91		support::children(&self.syntax).next()92	}93}9495#[derive(Debug, Clone, PartialEq, Eq, Hash)]96pub struct SliceDesc {97	pub(crate) syntax: SyntaxNode,98}99impl SliceDesc {100	pub fn l_brack_token(&self) -> Option<SyntaxToken> {101		support::token(&self.syntax, T!['['])102	}103	pub fn from(&self) -> Option<Expr> {104		support::children(&self.syntax).next()105	}106	pub fn colon_token(&self) -> Option<SyntaxToken> {107		support::token(&self.syntax, T![:])108	}109	pub fn end(&self) -> Option<SliceDescEnd> {110		support::children(&self.syntax).next()111	}112	pub fn step(&self) -> Option<SliceDescStep> {113		support::children(&self.syntax).next()114	}115	pub fn r_brack_token(&self) -> Option<SyntaxToken> {116		support::token(&self.syntax, T![']'])117	}118}119120#[derive(Debug, Clone, PartialEq, Eq, Hash)]121pub struct SuffixApply {122	pub(crate) syntax: SyntaxNode,123}124impl SuffixApply {125	pub fn args_desc(&self) -> Option<ArgsDesc> {126		support::children(&self.syntax).next()127	}128	pub fn tailstrict_kw_token(&self) -> Option<SyntaxToken> {129		support::token(&self.syntax, T![tailstrict])130	}131}132133#[derive(Debug, Clone, PartialEq, Eq, Hash)]134pub struct ArgsDesc {135	pub(crate) syntax: SyntaxNode,136}137impl ArgsDesc {138	pub fn l_paren_token(&self) -> Option<SyntaxToken> {139		support::token(&self.syntax, T!['('])140	}141	pub fn args(&self) -> AstChildren<Arg> {142		support::children(&self.syntax)143	}144	pub fn r_paren_token(&self) -> Option<SyntaxToken> {145		support::token(&self.syntax, T![')'])146	}147}148149#[derive(Debug, Clone, PartialEq, Eq, Hash)]150pub struct StmtLocal {151	pub(crate) syntax: SyntaxNode,152}153impl StmtLocal {154	pub fn local_kw_token(&self) -> Option<SyntaxToken> {155		support::token(&self.syntax, T![local])156	}157	pub fn binds(&self) -> AstChildren<Bind> {158		support::children(&self.syntax)159	}160	pub fn semi_token(&self) -> Option<SyntaxToken> {161		support::token(&self.syntax, T![;])162	}163}164165#[derive(Debug, Clone, PartialEq, Eq, Hash)]166pub struct StmtAssert {167	pub(crate) syntax: SyntaxNode,168}169impl StmtAssert {170	pub fn assertion(&self) -> Option<Assertion> {171		support::children(&self.syntax).next()172	}173	pub fn semi_token(&self) -> Option<SyntaxToken> {174		support::token(&self.syntax, T![;])175	}176}177178#[derive(Debug, Clone, PartialEq, Eq, Hash)]179pub struct Assertion {180	pub(crate) syntax: SyntaxNode,181}182impl Assertion {183	pub fn assert_kw_token(&self) -> Option<SyntaxToken> {184		support::token(&self.syntax, T![assert])185	}186	pub fn condition(&self) -> Option<Expr> {187		support::children(&self.syntax).next()188	}189	pub fn colon_token(&self) -> Option<SyntaxToken> {190		support::token(&self.syntax, T![:])191	}192	pub fn message(&self) -> Option<Expr> {193		support::children(&self.syntax).nth(1usize)194	}195}196197#[derive(Debug, Clone, PartialEq, Eq, Hash)]198pub struct ExprBinary {199	pub(crate) syntax: SyntaxNode,200}201impl ExprBinary {202	pub fn lhs(&self) -> Option<Expr> {203		support::children(&self.syntax).next()204	}205	pub fn binary_operator(&self) -> Option<BinaryOperator> {206		support::token_child(&self.syntax)207	}208	pub fn rhs(&self) -> Option<Expr> {209		support::children(&self.syntax).nth(1usize)210	}211}212213#[derive(Debug, Clone, PartialEq, Eq, Hash)]214pub struct ExprUnary {215	pub(crate) syntax: SyntaxNode,216}217impl ExprUnary {218	pub fn unary_operator(&self) -> Option<UnaryOperator> {219		support::token_child(&self.syntax)220	}221	pub fn rhs(&self) -> Option<Expr> {222		support::children(&self.syntax).next()223	}224}225226#[derive(Debug, Clone, PartialEq, Eq, Hash)]227pub struct ExprObjExtend {228	pub(crate) syntax: SyntaxNode,229}230impl ExprObjExtend {231	pub fn lhs(&self) -> Option<Expr> {232		support::children(&self.syntax).next()233	}234	pub fn rhs(&self) -> Option<Expr> {235		support::children(&self.syntax).nth(1usize)236	}237}238239#[derive(Debug, Clone, PartialEq, Eq, Hash)]240pub struct ExprParened {241	pub(crate) syntax: SyntaxNode,242}243impl ExprParened {244	pub fn l_paren_token(&self) -> Option<SyntaxToken> {245		support::token(&self.syntax, T!['('])246	}247	pub fn expr(&self) -> Option<Expr> {248		support::children(&self.syntax).next()249	}250	pub fn r_paren_token(&self) -> Option<SyntaxToken> {251		support::token(&self.syntax, T![')'])252	}253}254255#[derive(Debug, Clone, PartialEq, Eq, Hash)]256pub struct ExprLiteral {257	pub(crate) syntax: SyntaxNode,258}259impl ExprLiteral {260	pub fn literal(&self) -> Option<Literal> {261		support::token_child(&self.syntax)262	}263}264265#[derive(Debug, Clone, PartialEq, Eq, Hash)]266pub struct ExprString {267	pub(crate) syntax: SyntaxNode,268}269impl ExprString {270	pub fn text(&self) -> Option<Text> {271		support::token_child(&self.syntax)272	}273}274275#[derive(Debug, Clone, PartialEq, Eq, Hash)]276pub struct ExprNumber {277	pub(crate) syntax: SyntaxNode,278}279impl ExprNumber {280	pub fn number(&self) -> Option<Number> {281		support::token_child(&self.syntax)282	}283}284285#[derive(Debug, Clone, PartialEq, Eq, Hash)]286pub struct ExprArray {287	pub(crate) syntax: SyntaxNode,288}289impl ExprArray {290	pub fn l_brack_token(&self) -> Option<SyntaxToken> {291		support::token(&self.syntax, T!['['])292	}293	pub fn exprs(&self) -> AstChildren<Expr> {294		support::children(&self.syntax)295	}296	pub fn r_brack_token(&self) -> Option<SyntaxToken> {297		support::token(&self.syntax, T![']'])298	}299}300301#[derive(Debug, Clone, PartialEq, Eq, Hash)]302pub struct ExprObject {303	pub(crate) syntax: SyntaxNode,304}305impl ExprObject {306	pub fn obj_body(&self) -> Option<ObjBody> {307		support::children(&self.syntax).next()308	}309}310311#[derive(Debug, Clone, PartialEq, Eq, Hash)]312pub struct ExprArrayComp {313	pub(crate) syntax: SyntaxNode,314}315impl ExprArrayComp {316	pub fn l_brack_token(&self) -> Option<SyntaxToken> {317		support::token(&self.syntax, T!['['])318	}319	pub fn expr(&self) -> Option<Expr> {320		support::children(&self.syntax).next()321	}322	pub fn comma_token(&self) -> Option<SyntaxToken> {323		support::token(&self.syntax, T![,])324	}325	pub fn comp_specs(&self) -> AstChildren<CompSpec> {326		support::children(&self.syntax)327	}328	pub fn r_brack_token(&self) -> Option<SyntaxToken> {329		support::token(&self.syntax, T![']'])330	}331}332333#[derive(Debug, Clone, PartialEq, Eq, Hash)]334pub struct ExprImport {335	pub(crate) syntax: SyntaxNode,336}337impl ExprImport {338	pub fn import_kind(&self) -> Option<ImportKind> {339		support::token_child(&self.syntax)340	}341	pub fn text(&self) -> Option<Text> {342		support::token_child(&self.syntax)343	}344}345346#[derive(Debug, Clone, PartialEq, Eq, Hash)]347pub struct ExprVar {348	pub(crate) syntax: SyntaxNode,349}350impl ExprVar {351	pub fn name(&self) -> Option<Name> {352		support::children(&self.syntax).next()353	}354}355356#[derive(Debug, Clone, PartialEq, Eq, Hash)]357pub struct ExprIfThenElse {358	pub(crate) syntax: SyntaxNode,359}360impl ExprIfThenElse {361	pub fn if_kw_token(&self) -> Option<SyntaxToken> {362		support::token(&self.syntax, T![if])363	}364	pub fn cond(&self) -> Option<Expr> {365		support::children(&self.syntax).next()366	}367	pub fn then_kw_token(&self) -> Option<SyntaxToken> {368		support::token(&self.syntax, T![then])369	}370	pub fn then(&self) -> Option<TrueExpr> {371		support::children(&self.syntax).next()372	}373	pub fn else_kw_token(&self) -> Option<SyntaxToken> {374		support::token(&self.syntax, T![else])375	}376	pub fn else_(&self) -> Option<FalseExpr> {377		support::children(&self.syntax).next()378	}379}380381#[derive(Debug, Clone, PartialEq, Eq, Hash)]382pub struct TrueExpr {383	pub(crate) syntax: SyntaxNode,384}385impl TrueExpr {386	pub fn expr(&self) -> Option<Expr> {387		support::children(&self.syntax).next()388	}389}390391#[derive(Debug, Clone, PartialEq, Eq, Hash)]392pub struct FalseExpr {393	pub(crate) syntax: SyntaxNode,394}395impl FalseExpr {396	pub fn expr(&self) -> Option<Expr> {397		support::children(&self.syntax).next()398	}399}400401#[derive(Debug, Clone, PartialEq, Eq, Hash)]402pub struct ExprFunction {403	pub(crate) syntax: SyntaxNode,404}405impl ExprFunction {406	pub fn function_kw_token(&self) -> Option<SyntaxToken> {407		support::token(&self.syntax, T![function])408	}409	pub fn l_paren_token(&self) -> Option<SyntaxToken> {410		support::token(&self.syntax, T!['('])411	}412	pub fn params_desc(&self) -> Option<ParamsDesc> {413		support::children(&self.syntax).next()414	}415	pub fn r_paren_token(&self) -> Option<SyntaxToken> {416		support::token(&self.syntax, T![')'])417	}418	pub fn expr(&self) -> Option<Expr> {419		support::children(&self.syntax).next()420	}421}422423#[derive(Debug, Clone, PartialEq, Eq, Hash)]424pub struct ParamsDesc {425	pub(crate) syntax: SyntaxNode,426}427impl ParamsDesc {428	pub fn l_paren_token(&self) -> Option<SyntaxToken> {429		support::token(&self.syntax, T!['('])430	}431	pub fn params(&self) -> AstChildren<Param> {432		support::children(&self.syntax)433	}434	pub fn r_paren_token(&self) -> Option<SyntaxToken> {435		support::token(&self.syntax, T![')'])436	}437}438439#[derive(Debug, Clone, PartialEq, Eq, Hash)]440pub struct ExprError {441	pub(crate) syntax: SyntaxNode,442}443impl ExprError {444	pub fn error_kw_token(&self) -> Option<SyntaxToken> {445		support::token(&self.syntax, T![error])446	}447	pub fn expr(&self) -> Option<Expr> {448		support::children(&self.syntax).next()449	}450}451452#[derive(Debug, Clone, PartialEq, Eq, Hash)]453pub struct SliceDescEnd {454	pub(crate) syntax: SyntaxNode,455}456impl SliceDescEnd {457	pub fn expr(&self) -> Option<Expr> {458		support::children(&self.syntax).next()459	}460}461462#[derive(Debug, Clone, PartialEq, Eq, Hash)]463pub struct SliceDescStep {464	pub(crate) syntax: SyntaxNode,465}466impl SliceDescStep {467	pub fn expr(&self) -> Option<Expr> {468		support::children(&self.syntax).next()469	}470}471472#[derive(Debug, Clone, PartialEq, Eq, Hash)]473pub struct Arg {474	pub(crate) syntax: SyntaxNode,475}476impl Arg {477	pub fn name(&self) -> Option<Name> {478		support::children(&self.syntax).next()479	}480	pub fn assign_token(&self) -> Option<SyntaxToken> {481		support::token(&self.syntax, T![=])482	}483	pub fn expr(&self) -> Option<Expr> {484		support::children(&self.syntax).next()485	}486}487488#[derive(Debug, Clone, PartialEq, Eq, Hash)]489pub struct ObjBodyComp {490	pub(crate) syntax: SyntaxNode,491}492impl ObjBodyComp {493	pub fn l_brace_token(&self) -> Option<SyntaxToken> {494		support::token(&self.syntax, T!['{'])495	}496	pub fn member_comps(&self) -> AstChildren<MemberComp> {497		support::children(&self.syntax)498	}499	pub fn comp_specs(&self) -> AstChildren<CompSpec> {500		support::children(&self.syntax)501	}502	pub fn r_brace_token(&self) -> Option<SyntaxToken> {503		support::token(&self.syntax, T!['}'])504	}505}506507#[derive(Debug, Clone, PartialEq, Eq, Hash)]508pub struct ObjBodyMemberList {509	pub(crate) syntax: SyntaxNode,510}511impl ObjBodyMemberList {512	pub fn l_brace_token(&self) -> Option<SyntaxToken> {513		support::token(&self.syntax, T!['{'])514	}515	pub fn members(&self) -> AstChildren<Member> {516		support::children(&self.syntax)517	}518	pub fn r_brace_token(&self) -> Option<SyntaxToken> {519		support::token(&self.syntax, T!['}'])520	}521}522523#[derive(Debug, Clone, PartialEq, Eq, Hash)]524pub struct MemberBindStmt {525	pub(crate) syntax: SyntaxNode,526}527impl MemberBindStmt {528	pub fn obj_local(&self) -> Option<ObjLocal> {529		support::children(&self.syntax).next()530	}531}532533#[derive(Debug, Clone, PartialEq, Eq, Hash)]534pub struct ObjLocal {535	pub(crate) syntax: SyntaxNode,536}537impl ObjLocal {538	pub fn local_kw_token(&self) -> Option<SyntaxToken> {539		support::token(&self.syntax, T![local])540	}541	pub fn bind(&self) -> Option<Bind> {542		support::children(&self.syntax).next()543	}544}545546#[derive(Debug, Clone, PartialEq, Eq, Hash)]547pub struct MemberAssertStmt {548	pub(crate) syntax: SyntaxNode,549}550impl MemberAssertStmt {551	pub fn assertion(&self) -> Option<Assertion> {552		support::children(&self.syntax).next()553	}554}555556#[derive(Debug, Clone, PartialEq, Eq, Hash)]557pub struct MemberFieldNormal {558	pub(crate) syntax: SyntaxNode,559}560impl MemberFieldNormal {561	pub fn field_name(&self) -> Option<FieldName> {562		support::children(&self.syntax).next()563	}564	pub fn plus_token(&self) -> Option<SyntaxToken> {565		support::token(&self.syntax, T![+])566	}567	pub fn visibility(&self) -> Option<Visibility> {568		support::children(&self.syntax).next()569	}570	pub fn expr(&self) -> Option<Expr> {571		support::children(&self.syntax).next()572	}573}574575#[derive(Debug, Clone, PartialEq, Eq, Hash)]576pub struct Visibility {577	pub(crate) syntax: SyntaxNode,578}579impl Visibility {580	pub fn colon_token(&self) -> Option<SyntaxToken> {581		support::token(&self.syntax, T![:])582	}583}584585#[derive(Debug, Clone, PartialEq, Eq, Hash)]586pub struct MemberFieldMethod {587	pub(crate) syntax: SyntaxNode,588}589impl MemberFieldMethod {590	pub fn field_name(&self) -> Option<FieldName> {591		support::children(&self.syntax).next()592	}593	pub fn params_desc(&self) -> Option<ParamsDesc> {594		support::children(&self.syntax).next()595	}596	pub fn visibility(&self) -> Option<Visibility> {597		support::children(&self.syntax).next()598	}599	pub fn expr(&self) -> Option<Expr> {600		support::children(&self.syntax).next()601	}602}603604#[derive(Debug, Clone, PartialEq, Eq, Hash)]605pub struct FieldNameFixed {606	pub(crate) syntax: SyntaxNode,607}608impl FieldNameFixed {609	pub fn id(&self) -> Option<Name> {610		support::children(&self.syntax).next()611	}612	pub fn text(&self) -> Option<Text> {613		support::token_child(&self.syntax)614	}615}616617#[derive(Debug, Clone, PartialEq, Eq, Hash)]618pub struct FieldNameDynamic {619	pub(crate) syntax: SyntaxNode,620}621impl FieldNameDynamic {622	pub fn l_brack_token(&self) -> Option<SyntaxToken> {623		support::token(&self.syntax, T!['['])624	}625	pub fn expr(&self) -> Option<Expr> {626		support::children(&self.syntax).next()627	}628	pub fn r_brack_token(&self) -> Option<SyntaxToken> {629		support::token(&self.syntax, T![']'])630	}631}632633#[derive(Debug, Clone, PartialEq, Eq, Hash)]634pub struct ForSpec {635	pub(crate) syntax: SyntaxNode,636}637impl ForSpec {638	pub fn for_kw_token(&self) -> Option<SyntaxToken> {639		support::token(&self.syntax, T![for])640	}641	pub fn bind(&self) -> Option<Destruct> {642		support::children(&self.syntax).next()643	}644	pub fn in_kw_token(&self) -> Option<SyntaxToken> {645		support::token(&self.syntax, T![in])646	}647	pub fn expr(&self) -> Option<Expr> {648		support::children(&self.syntax).next()649	}650}651652#[derive(Debug, Clone, PartialEq, Eq, Hash)]653pub struct ForObjSpec {654	pub(crate) syntax: SyntaxNode,655}656impl ForObjSpec {657	pub fn for_kw_token(&self) -> Option<SyntaxToken> {658		support::token(&self.syntax, T![for])659	}660	pub fn l_brack_token(&self) -> Option<SyntaxToken> {661		support::token(&self.syntax, T!['['])662	}663	pub fn key(&self) -> Option<Name> {664		support::children(&self.syntax).next()665	}666	pub fn r_brack_token(&self) -> Option<SyntaxToken> {667		support::token(&self.syntax, T![']'])668	}669	pub fn visibility(&self) -> Option<Visibility> {670		support::children(&self.syntax).next()671	}672	pub fn value(&self) -> Option<Destruct> {673		support::children(&self.syntax).next()674	}675	pub fn in_kw_token(&self) -> Option<SyntaxToken> {676		support::token(&self.syntax, T![in])677	}678	pub fn expr(&self) -> Option<Expr> {679		support::children(&self.syntax).next()680	}681}682683#[derive(Debug, Clone, PartialEq, Eq, Hash)]684pub struct IfSpec {685	pub(crate) syntax: SyntaxNode,686}687impl IfSpec {688	pub fn if_kw_token(&self) -> Option<SyntaxToken> {689		support::token(&self.syntax, T![if])690	}691	pub fn expr(&self) -> Option<Expr> {692		support::children(&self.syntax).next()693	}694}695696#[derive(Debug, Clone, PartialEq, Eq, Hash)]697pub struct BindDestruct {698	pub(crate) syntax: SyntaxNode,699}700impl BindDestruct {701	pub fn into(&self) -> Option<Destruct> {702		support::children(&self.syntax).next()703	}704	pub fn assign_token(&self) -> Option<SyntaxToken> {705		support::token(&self.syntax, T![=])706	}707	pub fn value(&self) -> Option<Expr> {708		support::children(&self.syntax).next()709	}710}711712#[derive(Debug, Clone, PartialEq, Eq, Hash)]713pub struct BindFunction {714	pub(crate) syntax: SyntaxNode,715}716impl BindFunction {717	pub fn name(&self) -> Option<Name> {718		support::children(&self.syntax).next()719	}720	pub fn params(&self) -> Option<ParamsDesc> {721		support::children(&self.syntax).next()722	}723	pub fn assign_token(&self) -> Option<SyntaxToken> {724		support::token(&self.syntax, T![=])725	}726	pub fn value(&self) -> Option<Expr> {727		support::children(&self.syntax).next()728	}729}730731#[derive(Debug, Clone, PartialEq, Eq, Hash)]732pub struct Param {733	pub(crate) syntax: SyntaxNode,734}735impl Param {736	pub fn destruct(&self) -> Option<Destruct> {737		support::children(&self.syntax).next()738	}739	pub fn assign_token(&self) -> Option<SyntaxToken> {740		support::token(&self.syntax, T![=])741	}742	pub fn expr(&self) -> Option<Expr> {743		support::children(&self.syntax).next()744	}745}746747#[derive(Debug, Clone, PartialEq, Eq, Hash)]748pub struct DestructFull {749	pub(crate) syntax: SyntaxNode,750}751impl DestructFull {752	pub fn name(&self) -> Option<Name> {753		support::children(&self.syntax).next()754	}755}756757#[derive(Debug, Clone, PartialEq, Eq, Hash)]758pub struct DestructSkip {759	pub(crate) syntax: SyntaxNode,760}761impl DestructSkip {762	pub fn question_mark_token(&self) -> Option<SyntaxToken> {763		support::token(&self.syntax, T![?])764	}765}766767#[derive(Debug, Clone, PartialEq, Eq, Hash)]768pub struct DestructArray {769	pub(crate) syntax: SyntaxNode,770}771impl DestructArray {772	pub fn l_brack_token(&self) -> Option<SyntaxToken> {773		support::token(&self.syntax, T!['['])774	}775	pub fn destruct_array_parts(&self) -> AstChildren<DestructArrayPart> {776		support::children(&self.syntax)777	}778	pub fn r_brack_token(&self) -> Option<SyntaxToken> {779		support::token(&self.syntax, T![']'])780	}781}782783#[derive(Debug, Clone, PartialEq, Eq, Hash)]784pub struct DestructObject {785	pub(crate) syntax: SyntaxNode,786}787impl DestructObject {788	pub fn l_brace_token(&self) -> Option<SyntaxToken> {789		support::token(&self.syntax, T!['{'])790	}791	pub fn destruct_object_fields(&self) -> AstChildren<DestructObjectField> {792		support::children(&self.syntax)793	}794	pub fn destruct_rest(&self) -> Option<DestructRest> {795		support::children(&self.syntax).next()796	}797	pub fn comma_token(&self) -> Option<SyntaxToken> {798		support::token(&self.syntax, T![,])799	}800	pub fn r_brace_token(&self) -> Option<SyntaxToken> {801		support::token(&self.syntax, T!['}'])802	}803}804805#[derive(Debug, Clone, PartialEq, Eq, Hash)]806pub struct DestructObjectField {807	pub(crate) syntax: SyntaxNode,808}809impl DestructObjectField {810	pub fn field(&self) -> Option<Name> {811		support::children(&self.syntax).next()812	}813	pub fn colon_token(&self) -> Option<SyntaxToken> {814		support::token(&self.syntax, T![:])815	}816	pub fn destruct(&self) -> Option<Destruct> {817		support::children(&self.syntax).next()818	}819	pub fn assign_token(&self) -> Option<SyntaxToken> {820		support::token(&self.syntax, T![=])821	}822	pub fn expr(&self) -> Option<Expr> {823		support::children(&self.syntax).next()824	}825}826827#[derive(Debug, Clone, PartialEq, Eq, Hash)]828pub struct DestructRest {829	pub(crate) syntax: SyntaxNode,830}831impl DestructRest {832	pub fn dotdotdot_token(&self) -> Option<SyntaxToken> {833		support::token(&self.syntax, T![...])834	}835	pub fn into(&self) -> Option<Name> {836		support::children(&self.syntax).next()837	}838}839840#[derive(Debug, Clone, PartialEq, Eq, Hash)]841pub struct DestructArrayElement {842	pub(crate) syntax: SyntaxNode,843}844impl DestructArrayElement {845	pub fn destruct(&self) -> Option<Destruct> {846		support::children(&self.syntax).next()847	}848}849850#[derive(Debug, Clone, PartialEq, Eq, Hash)]851pub enum Suffix {852	SuffixIndex(SuffixIndex),853	SuffixIndexExpr(SuffixIndexExpr),854	SuffixSlice(SuffixSlice),855	SuffixApply(SuffixApply),856}857858#[derive(Debug, Clone, PartialEq, Eq, Hash)]859pub enum Bind {860	BindDestruct(BindDestruct),861	BindFunction(BindFunction),862}863864#[derive(Debug, Clone, PartialEq, Eq, Hash)]865pub enum Stmt {866	StmtLocal(StmtLocal),867	StmtAssert(StmtAssert),868}869870#[derive(Debug, Clone, PartialEq, Eq, Hash)]871pub enum ObjBody {872	ObjBodyComp(ObjBodyComp),873	ObjBodyMemberList(ObjBodyMemberList),874}875876#[derive(Debug, Clone, PartialEq, Eq, Hash)]877pub enum CompSpec {878	ForSpec(ForSpec),879	ForObjSpec(ForObjSpec),880	IfSpec(IfSpec),881}882883#[derive(Debug, Clone, PartialEq, Eq, Hash)]884pub enum ExprBase {885	ExprBinary(ExprBinary),886	ExprUnary(ExprUnary),887	ExprObjExtend(ExprObjExtend),888	ExprParened(ExprParened),889	ExprString(ExprString),890	ExprNumber(ExprNumber),891	ExprLiteral(ExprLiteral),892	ExprArray(ExprArray),893	ExprObject(ExprObject),894	ExprArrayComp(ExprArrayComp),895	ExprImport(ExprImport),896	ExprVar(ExprVar),897	ExprIfThenElse(ExprIfThenElse),898	ExprFunction(ExprFunction),899	ExprError(ExprError),900}901902#[derive(Debug, Clone, PartialEq, Eq, Hash)]903pub enum MemberComp {904	MemberBindStmt(MemberBindStmt),905	MemberFieldNormal(MemberFieldNormal),906	MemberFieldMethod(MemberFieldMethod),907}908909#[derive(Debug, Clone, PartialEq, Eq, Hash)]910pub enum Member {911	MemberBindStmt(MemberBindStmt),912	MemberAssertStmt(MemberAssertStmt),913	MemberFieldNormal(MemberFieldNormal),914	MemberFieldMethod(MemberFieldMethod),915}916917#[derive(Debug, Clone, PartialEq, Eq, Hash)]918pub enum FieldName {919	FieldNameFixed(FieldNameFixed),920	FieldNameDynamic(FieldNameDynamic),921}922923#[derive(Debug, Clone, PartialEq, Eq, Hash)]924pub enum Destruct {925	DestructFull(DestructFull),926	DestructSkip(DestructSkip),927	DestructArray(DestructArray),928	DestructObject(DestructObject),929}930931#[derive(Debug, Clone, PartialEq, Eq, Hash)]932pub enum DestructArrayPart {933	DestructArrayElement(DestructArrayElement),934	DestructRest(DestructRest),935}936937#[derive(Debug, Clone, PartialEq, Eq, Hash)]938pub struct BinaryOperator {939	syntax: SyntaxToken,940	kind: BinaryOperatorKind,941}942943#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]944pub enum BinaryOperatorKind {945	Or,946	NullCoaelse,947	And,948	BitOr,949	BitXor,950	BitAnd,951	Eq,952	Ne,953	Lt,954	Gt,955	Le,956	Ge,957	InKw,958	Lhs,959	Rhs,960	Plus,961	Minus,962	Mul,963	Div,964	Modulo,965	MetaObjectApply,966	ErrorNoOperator,967}968969#[derive(Debug, Clone, PartialEq, Eq, Hash)]970pub struct UnaryOperator {971	syntax: SyntaxToken,972	kind: UnaryOperatorKind,973}974975#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]976pub enum UnaryOperatorKind {977	Minus,978	Not,979	BitNot,980	Plus,981}982983#[derive(Debug, Clone, PartialEq, Eq, Hash)]984pub struct Literal {985	syntax: SyntaxToken,986	kind: LiteralKind,987}988989#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]990pub enum LiteralKind {991	NullKw,992	TrueKw,993	FalseKw,994	SelfKw,995	Dollar,996	SuperKw,997}998999#[derive(Debug, Clone, PartialEq, Eq, Hash)]1000pub struct Text {1001	syntax: SyntaxToken,1002	kind: TextKind,1003}10041005#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]1006pub enum TextKind {1007	StringDouble,1008	ErrorStringDoubleUnterminated,1009	StringSingle,1010	ErrorStringSingleUnterminated,1011	StringDoubleVerbatim,1012	ErrorStringDoubleVerbatimUnterminated,1013	StringSingleVerbatim,1014	ErrorStringSingleVerbatimUnterminated,1015	ErrorStringVerbatimMissingQuotes,1016	StringBlock,1017	ErrorStringBlockUnexpectedEnd,1018	ErrorStringBlockMissingNewLine,1019	ErrorStringBlockMissingTermination,1020	ErrorStringBlockMissingIndent,1021}10221023#[derive(Debug, Clone, PartialEq, Eq, Hash)]1024pub struct Number {1025	syntax: SyntaxToken,1026	kind: NumberKind,1027}10281029#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]1030pub enum NumberKind {1031	Float,1032	ErrorFloatJunkAfterPoint,1033	ErrorFloatJunkAfterExponent,1034	ErrorFloatJunkAfterExponentSign,1035}10361037#[derive(Debug, Clone, PartialEq, Eq, Hash)]1038pub struct ImportKind {1039	syntax: SyntaxToken,1040	kind: ImportKindKind,1041}10421043#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]1044pub enum ImportKindKind {1045	ImportstrKw,1046	ImportbinKw,1047	ImportKw,1048}10491050#[derive(Debug, Clone, PartialEq, Eq, Hash)]1051pub struct Trivia {1052	syntax: SyntaxToken,1053	kind: TriviaKind,1054}10551056#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]1057pub enum TriviaKind {1058	Whitespace,1059	MultiLineComment,1060	ErrorCommentTooShort,1061	ErrorCommentUnterminated,1062	SingleLineHashComment,1063	SingleLineSlashComment,1064}10651066#[derive(Debug, Clone, PartialEq, Eq, Hash)]1067pub struct CustomError {1068	syntax: SyntaxToken,1069	kind: CustomErrorKind,1070}10711072#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]1073pub enum CustomErrorKind {1074	ErrorMissingToken,1075	ErrorUnexpectedToken,1076	ErrorCustom,1077}1078impl AstNode for SourceFile {1079	fn can_cast(kind: SyntaxKind) -> bool {1080		kind == SOURCE_FILE1081	}1082	fn cast(syntax: SyntaxNode) -> Option<Self> {1083		if Self::can_cast(syntax.kind()) {1084			Some(Self { syntax })1085		} else {1086			None1087		}1088	}1089	fn syntax(&self) -> &SyntaxNode {1090		&self.syntax1091	}1092}1093impl AstNode for Expr {1094	fn can_cast(kind: SyntaxKind) -> bool {1095		kind == EXPR1096	}1097	fn cast(syntax: SyntaxNode) -> Option<Self> {1098		if Self::can_cast(syntax.kind()) {1099			Some(Self { syntax })1100		} else {1101			None1102		}1103	}1104	fn syntax(&self) -> &SyntaxNode {1105		&self.syntax1106	}1107}1108impl AstNode for SuffixIndex {1109	fn can_cast(kind: SyntaxKind) -> bool {1110		kind == SUFFIX_INDEX1111	}1112	fn cast(syntax: SyntaxNode) -> Option<Self> {1113		if Self::can_cast(syntax.kind()) {1114			Some(Self { syntax })1115		} else {1116			None1117		}1118	}1119	fn syntax(&self) -> &SyntaxNode {1120		&self.syntax1121	}1122}1123impl AstNode for Name {1124	fn can_cast(kind: SyntaxKind) -> bool {1125		kind == NAME1126	}1127	fn cast(syntax: SyntaxNode) -> Option<Self> {1128		if Self::can_cast(syntax.kind()) {1129			Some(Self { syntax })1130		} else {1131			None1132		}1133	}1134	fn syntax(&self) -> &SyntaxNode {1135		&self.syntax1136	}1137}1138impl AstNode for SuffixIndexExpr {1139	fn can_cast(kind: SyntaxKind) -> bool {1140		kind == SUFFIX_INDEX_EXPR1141	}1142	fn cast(syntax: SyntaxNode) -> Option<Self> {1143		if Self::can_cast(syntax.kind()) {1144			Some(Self { syntax })1145		} else {1146			None1147		}1148	}1149	fn syntax(&self) -> &SyntaxNode {1150		&self.syntax1151	}1152}1153impl AstNode for SuffixSlice {1154	fn can_cast(kind: SyntaxKind) -> bool {1155		kind == SUFFIX_SLICE1156	}1157	fn cast(syntax: SyntaxNode) -> Option<Self> {1158		if Self::can_cast(syntax.kind()) {1159			Some(Self { syntax })1160		} else {1161			None1162		}1163	}1164	fn syntax(&self) -> &SyntaxNode {1165		&self.syntax1166	}1167}1168impl AstNode for SliceDesc {1169	fn can_cast(kind: SyntaxKind) -> bool {1170		kind == SLICE_DESC1171	}1172	fn cast(syntax: SyntaxNode) -> Option<Self> {1173		if Self::can_cast(syntax.kind()) {1174			Some(Self { syntax })1175		} else {1176			None1177		}1178	}1179	fn syntax(&self) -> &SyntaxNode {1180		&self.syntax1181	}1182}1183impl AstNode for SuffixApply {1184	fn can_cast(kind: SyntaxKind) -> bool {1185		kind == SUFFIX_APPLY1186	}1187	fn cast(syntax: SyntaxNode) -> Option<Self> {1188		if Self::can_cast(syntax.kind()) {1189			Some(Self { syntax })1190		} else {1191			None1192		}1193	}1194	fn syntax(&self) -> &SyntaxNode {1195		&self.syntax1196	}1197}1198impl AstNode for ArgsDesc {1199	fn can_cast(kind: SyntaxKind) -> bool {1200		kind == ARGS_DESC1201	}1202	fn cast(syntax: SyntaxNode) -> Option<Self> {1203		if Self::can_cast(syntax.kind()) {1204			Some(Self { syntax })1205		} else {1206			None1207		}1208	}1209	fn syntax(&self) -> &SyntaxNode {1210		&self.syntax1211	}1212}1213impl AstNode for StmtLocal {1214	fn can_cast(kind: SyntaxKind) -> bool {1215		kind == STMT_LOCAL1216	}1217	fn cast(syntax: SyntaxNode) -> Option<Self> {1218		if Self::can_cast(syntax.kind()) {1219			Some(Self { syntax })1220		} else {1221			None1222		}1223	}1224	fn syntax(&self) -> &SyntaxNode {1225		&self.syntax1226	}1227}1228impl AstNode for StmtAssert {1229	fn can_cast(kind: SyntaxKind) -> bool {1230		kind == STMT_ASSERT1231	}1232	fn cast(syntax: SyntaxNode) -> Option<Self> {1233		if Self::can_cast(syntax.kind()) {1234			Some(Self { syntax })1235		} else {1236			None1237		}1238	}1239	fn syntax(&self) -> &SyntaxNode {1240		&self.syntax1241	}1242}1243impl AstNode for Assertion {1244	fn can_cast(kind: SyntaxKind) -> bool {1245		kind == ASSERTION1246	}1247	fn cast(syntax: SyntaxNode) -> Option<Self> {1248		if Self::can_cast(syntax.kind()) {1249			Some(Self { syntax })1250		} else {1251			None1252		}1253	}1254	fn syntax(&self) -> &SyntaxNode {1255		&self.syntax1256	}1257}1258impl AstNode for ExprBinary {1259	fn can_cast(kind: SyntaxKind) -> bool {1260		kind == EXPR_BINARY1261	}1262	fn cast(syntax: SyntaxNode) -> Option<Self> {1263		if Self::can_cast(syntax.kind()) {1264			Some(Self { syntax })1265		} else {1266			None1267		}1268	}1269	fn syntax(&self) -> &SyntaxNode {1270		&self.syntax1271	}1272}1273impl AstNode for ExprUnary {1274	fn can_cast(kind: SyntaxKind) -> bool {1275		kind == EXPR_UNARY1276	}1277	fn cast(syntax: SyntaxNode) -> Option<Self> {1278		if Self::can_cast(syntax.kind()) {1279			Some(Self { syntax })1280		} else {1281			None1282		}1283	}1284	fn syntax(&self) -> &SyntaxNode {1285		&self.syntax1286	}1287}1288impl AstNode for ExprObjExtend {1289	fn can_cast(kind: SyntaxKind) -> bool {1290		kind == EXPR_OBJ_EXTEND1291	}1292	fn cast(syntax: SyntaxNode) -> Option<Self> {1293		if Self::can_cast(syntax.kind()) {1294			Some(Self { syntax })1295		} else {1296			None1297		}1298	}1299	fn syntax(&self) -> &SyntaxNode {1300		&self.syntax1301	}1302}1303impl AstNode for ExprParened {1304	fn can_cast(kind: SyntaxKind) -> bool {1305		kind == EXPR_PARENED1306	}1307	fn cast(syntax: SyntaxNode) -> Option<Self> {1308		if Self::can_cast(syntax.kind()) {1309			Some(Self { syntax })1310		} else {1311			None1312		}1313	}1314	fn syntax(&self) -> &SyntaxNode {1315		&self.syntax1316	}1317}1318impl AstNode for ExprLiteral {1319	fn can_cast(kind: SyntaxKind) -> bool {1320		kind == EXPR_LITERAL1321	}1322	fn cast(syntax: SyntaxNode) -> Option<Self> {1323		if Self::can_cast(syntax.kind()) {1324			Some(Self { syntax })1325		} else {1326			None1327		}1328	}1329	fn syntax(&self) -> &SyntaxNode {1330		&self.syntax1331	}1332}1333impl AstNode for ExprString {1334	fn can_cast(kind: SyntaxKind) -> bool {1335		kind == EXPR_STRING1336	}1337	fn cast(syntax: SyntaxNode) -> Option<Self> {1338		if Self::can_cast(syntax.kind()) {1339			Some(Self { syntax })1340		} else {1341			None1342		}1343	}1344	fn syntax(&self) -> &SyntaxNode {1345		&self.syntax1346	}1347}1348impl AstNode for ExprNumber {1349	fn can_cast(kind: SyntaxKind) -> bool {1350		kind == EXPR_NUMBER1351	}1352	fn cast(syntax: SyntaxNode) -> Option<Self> {1353		if Self::can_cast(syntax.kind()) {1354			Some(Self { syntax })1355		} else {1356			None1357		}1358	}1359	fn syntax(&self) -> &SyntaxNode {1360		&self.syntax1361	}1362}1363impl AstNode for ExprArray {1364	fn can_cast(kind: SyntaxKind) -> bool {1365		kind == EXPR_ARRAY1366	}1367	fn cast(syntax: SyntaxNode) -> Option<Self> {1368		if Self::can_cast(syntax.kind()) {1369			Some(Self { syntax })1370		} else {1371			None1372		}1373	}1374	fn syntax(&self) -> &SyntaxNode {1375		&self.syntax1376	}1377}1378impl AstNode for ExprObject {1379	fn can_cast(kind: SyntaxKind) -> bool {1380		kind == EXPR_OBJECT1381	}1382	fn cast(syntax: SyntaxNode) -> Option<Self> {1383		if Self::can_cast(syntax.kind()) {1384			Some(Self { syntax })1385		} else {1386			None1387		}1388	}1389	fn syntax(&self) -> &SyntaxNode {1390		&self.syntax1391	}1392}1393impl AstNode for ExprArrayComp {1394	fn can_cast(kind: SyntaxKind) -> bool {1395		kind == EXPR_ARRAY_COMP1396	}1397	fn cast(syntax: SyntaxNode) -> Option<Self> {1398		if Self::can_cast(syntax.kind()) {1399			Some(Self { syntax })1400		} else {1401			None1402		}1403	}1404	fn syntax(&self) -> &SyntaxNode {1405		&self.syntax1406	}1407}1408impl AstNode for ExprImport {1409	fn can_cast(kind: SyntaxKind) -> bool {1410		kind == EXPR_IMPORT1411	}1412	fn cast(syntax: SyntaxNode) -> Option<Self> {1413		if Self::can_cast(syntax.kind()) {1414			Some(Self { syntax })1415		} else {1416			None1417		}1418	}1419	fn syntax(&self) -> &SyntaxNode {1420		&self.syntax1421	}1422}1423impl AstNode for ExprVar {1424	fn can_cast(kind: SyntaxKind) -> bool {1425		kind == EXPR_VAR1426	}1427	fn cast(syntax: SyntaxNode) -> Option<Self> {1428		if Self::can_cast(syntax.kind()) {1429			Some(Self { syntax })1430		} else {1431			None1432		}1433	}1434	fn syntax(&self) -> &SyntaxNode {1435		&self.syntax1436	}1437}1438impl AstNode for ExprIfThenElse {1439	fn can_cast(kind: SyntaxKind) -> bool {1440		kind == EXPR_IF_THEN_ELSE1441	}1442	fn cast(syntax: SyntaxNode) -> Option<Self> {1443		if Self::can_cast(syntax.kind()) {1444			Some(Self { syntax })1445		} else {1446			None1447		}1448	}1449	fn syntax(&self) -> &SyntaxNode {1450		&self.syntax1451	}1452}1453impl AstNode for TrueExpr {1454	fn can_cast(kind: SyntaxKind) -> bool {1455		kind == TRUE_EXPR1456	}1457	fn cast(syntax: SyntaxNode) -> Option<Self> {1458		if Self::can_cast(syntax.kind()) {1459			Some(Self { syntax })1460		} else {1461			None1462		}1463	}1464	fn syntax(&self) -> &SyntaxNode {1465		&self.syntax1466	}1467}1468impl AstNode for FalseExpr {1469	fn can_cast(kind: SyntaxKind) -> bool {1470		kind == FALSE_EXPR1471	}1472	fn cast(syntax: SyntaxNode) -> Option<Self> {1473		if Self::can_cast(syntax.kind()) {1474			Some(Self { syntax })1475		} else {1476			None1477		}1478	}1479	fn syntax(&self) -> &SyntaxNode {1480		&self.syntax1481	}1482}1483impl AstNode for ExprFunction {1484	fn can_cast(kind: SyntaxKind) -> bool {1485		kind == EXPR_FUNCTION1486	}1487	fn cast(syntax: SyntaxNode) -> Option<Self> {1488		if Self::can_cast(syntax.kind()) {1489			Some(Self { syntax })1490		} else {1491			None1492		}1493	}1494	fn syntax(&self) -> &SyntaxNode {1495		&self.syntax1496	}1497}1498impl AstNode for ParamsDesc {1499	fn can_cast(kind: SyntaxKind) -> bool {1500		kind == PARAMS_DESC1501	}1502	fn cast(syntax: SyntaxNode) -> Option<Self> {1503		if Self::can_cast(syntax.kind()) {1504			Some(Self { syntax })1505		} else {1506			None1507		}1508	}1509	fn syntax(&self) -> &SyntaxNode {1510		&self.syntax1511	}1512}1513impl AstNode for ExprError {1514	fn can_cast(kind: SyntaxKind) -> bool {1515		kind == EXPR_ERROR1516	}1517	fn cast(syntax: SyntaxNode) -> Option<Self> {1518		if Self::can_cast(syntax.kind()) {1519			Some(Self { syntax })1520		} else {1521			None1522		}1523	}1524	fn syntax(&self) -> &SyntaxNode {1525		&self.syntax1526	}1527}1528impl AstNode for SliceDescEnd {1529	fn can_cast(kind: SyntaxKind) -> bool {1530		kind == SLICE_DESC_END1531	}1532	fn cast(syntax: SyntaxNode) -> Option<Self> {1533		if Self::can_cast(syntax.kind()) {1534			Some(Self { syntax })1535		} else {1536			None1537		}1538	}1539	fn syntax(&self) -> &SyntaxNode {1540		&self.syntax1541	}1542}1543impl AstNode for SliceDescStep {1544	fn can_cast(kind: SyntaxKind) -> bool {1545		kind == SLICE_DESC_STEP1546	}1547	fn cast(syntax: SyntaxNode) -> Option<Self> {1548		if Self::can_cast(syntax.kind()) {1549			Some(Self { syntax })1550		} else {1551			None1552		}1553	}1554	fn syntax(&self) -> &SyntaxNode {1555		&self.syntax1556	}1557}1558impl AstNode for Arg {1559	fn can_cast(kind: SyntaxKind) -> bool {1560		kind == ARG1561	}1562	fn cast(syntax: SyntaxNode) -> Option<Self> {1563		if Self::can_cast(syntax.kind()) {1564			Some(Self { syntax })1565		} else {1566			None1567		}1568	}1569	fn syntax(&self) -> &SyntaxNode {1570		&self.syntax1571	}1572}1573impl AstNode for ObjBodyComp {1574	fn can_cast(kind: SyntaxKind) -> bool {1575		kind == OBJ_BODY_COMP1576	}1577	fn cast(syntax: SyntaxNode) -> Option<Self> {1578		if Self::can_cast(syntax.kind()) {1579			Some(Self { syntax })1580		} else {1581			None1582		}1583	}1584	fn syntax(&self) -> &SyntaxNode {1585		&self.syntax1586	}1587}1588impl AstNode for ObjBodyMemberList {1589	fn can_cast(kind: SyntaxKind) -> bool {1590		kind == OBJ_BODY_MEMBER_LIST1591	}1592	fn cast(syntax: SyntaxNode) -> Option<Self> {1593		if Self::can_cast(syntax.kind()) {1594			Some(Self { syntax })1595		} else {1596			None1597		}1598	}1599	fn syntax(&self) -> &SyntaxNode {1600		&self.syntax1601	}1602}1603impl AstNode for MemberBindStmt {1604	fn can_cast(kind: SyntaxKind) -> bool {1605		kind == MEMBER_BIND_STMT1606	}1607	fn cast(syntax: SyntaxNode) -> Option<Self> {1608		if Self::can_cast(syntax.kind()) {1609			Some(Self { syntax })1610		} else {1611			None1612		}1613	}1614	fn syntax(&self) -> &SyntaxNode {1615		&self.syntax1616	}1617}1618impl AstNode for ObjLocal {1619	fn can_cast(kind: SyntaxKind) -> bool {1620		kind == OBJ_LOCAL1621	}1622	fn cast(syntax: SyntaxNode) -> Option<Self> {1623		if Self::can_cast(syntax.kind()) {1624			Some(Self { syntax })1625		} else {1626			None1627		}1628	}1629	fn syntax(&self) -> &SyntaxNode {1630		&self.syntax1631	}1632}1633impl AstNode for MemberAssertStmt {1634	fn can_cast(kind: SyntaxKind) -> bool {1635		kind == MEMBER_ASSERT_STMT1636	}1637	fn cast(syntax: SyntaxNode) -> Option<Self> {1638		if Self::can_cast(syntax.kind()) {1639			Some(Self { syntax })1640		} else {1641			None1642		}1643	}1644	fn syntax(&self) -> &SyntaxNode {1645		&self.syntax1646	}1647}1648impl AstNode for MemberFieldNormal {1649	fn can_cast(kind: SyntaxKind) -> bool {1650		kind == MEMBER_FIELD_NORMAL1651	}1652	fn cast(syntax: SyntaxNode) -> Option<Self> {1653		if Self::can_cast(syntax.kind()) {1654			Some(Self { syntax })1655		} else {1656			None1657		}1658	}1659	fn syntax(&self) -> &SyntaxNode {1660		&self.syntax1661	}1662}1663impl AstNode for Visibility {1664	fn can_cast(kind: SyntaxKind) -> bool {1665		kind == VISIBILITY1666	}1667	fn cast(syntax: SyntaxNode) -> Option<Self> {1668		if Self::can_cast(syntax.kind()) {1669			Some(Self { syntax })1670		} else {1671			None1672		}1673	}1674	fn syntax(&self) -> &SyntaxNode {1675		&self.syntax1676	}1677}1678impl AstNode for MemberFieldMethod {1679	fn can_cast(kind: SyntaxKind) -> bool {1680		kind == MEMBER_FIELD_METHOD1681	}1682	fn cast(syntax: SyntaxNode) -> Option<Self> {1683		if Self::can_cast(syntax.kind()) {1684			Some(Self { syntax })1685		} else {1686			None1687		}1688	}1689	fn syntax(&self) -> &SyntaxNode {1690		&self.syntax1691	}1692}1693impl AstNode for FieldNameFixed {1694	fn can_cast(kind: SyntaxKind) -> bool {1695		kind == FIELD_NAME_FIXED1696	}1697	fn cast(syntax: SyntaxNode) -> Option<Self> {1698		if Self::can_cast(syntax.kind()) {1699			Some(Self { syntax })1700		} else {1701			None1702		}1703	}1704	fn syntax(&self) -> &SyntaxNode {1705		&self.syntax1706	}1707}1708impl AstNode for FieldNameDynamic {1709	fn can_cast(kind: SyntaxKind) -> bool {1710		kind == FIELD_NAME_DYNAMIC1711	}1712	fn cast(syntax: SyntaxNode) -> Option<Self> {1713		if Self::can_cast(syntax.kind()) {1714			Some(Self { syntax })1715		} else {1716			None1717		}1718	}1719	fn syntax(&self) -> &SyntaxNode {1720		&self.syntax1721	}1722}1723impl AstNode for ForSpec {1724	fn can_cast(kind: SyntaxKind) -> bool {1725		kind == FOR_SPEC1726	}1727	fn cast(syntax: SyntaxNode) -> Option<Self> {1728		if Self::can_cast(syntax.kind()) {1729			Some(Self { syntax })1730		} else {1731			None1732		}1733	}1734	fn syntax(&self) -> &SyntaxNode {1735		&self.syntax1736	}1737}1738impl AstNode for ForObjSpec {1739	fn can_cast(kind: SyntaxKind) -> bool {1740		kind == FOR_OBJ_SPEC1741	}1742	fn cast(syntax: SyntaxNode) -> Option<Self> {1743		if Self::can_cast(syntax.kind()) {1744			Some(Self { syntax })1745		} else {1746			None1747		}1748	}1749	fn syntax(&self) -> &SyntaxNode {1750		&self.syntax1751	}1752}1753impl AstNode for IfSpec {1754	fn can_cast(kind: SyntaxKind) -> bool {1755		kind == IF_SPEC1756	}1757	fn cast(syntax: SyntaxNode) -> Option<Self> {1758		if Self::can_cast(syntax.kind()) {1759			Some(Self { syntax })1760		} else {1761			None1762		}1763	}1764	fn syntax(&self) -> &SyntaxNode {1765		&self.syntax1766	}1767}1768impl AstNode for BindDestruct {1769	fn can_cast(kind: SyntaxKind) -> bool {1770		kind == BIND_DESTRUCT1771	}1772	fn cast(syntax: SyntaxNode) -> Option<Self> {1773		if Self::can_cast(syntax.kind()) {1774			Some(Self { syntax })1775		} else {1776			None1777		}1778	}1779	fn syntax(&self) -> &SyntaxNode {1780		&self.syntax1781	}1782}1783impl AstNode for BindFunction {1784	fn can_cast(kind: SyntaxKind) -> bool {1785		kind == BIND_FUNCTION1786	}1787	fn cast(syntax: SyntaxNode) -> Option<Self> {1788		if Self::can_cast(syntax.kind()) {1789			Some(Self { syntax })1790		} else {1791			None1792		}1793	}1794	fn syntax(&self) -> &SyntaxNode {1795		&self.syntax1796	}1797}1798impl AstNode for Param {1799	fn can_cast(kind: SyntaxKind) -> bool {1800		kind == PARAM1801	}1802	fn cast(syntax: SyntaxNode) -> Option<Self> {1803		if Self::can_cast(syntax.kind()) {1804			Some(Self { syntax })1805		} else {1806			None1807		}1808	}1809	fn syntax(&self) -> &SyntaxNode {1810		&self.syntax1811	}1812}1813impl AstNode for DestructFull {1814	fn can_cast(kind: SyntaxKind) -> bool {1815		kind == DESTRUCT_FULL1816	}1817	fn cast(syntax: SyntaxNode) -> Option<Self> {1818		if Self::can_cast(syntax.kind()) {1819			Some(Self { syntax })1820		} else {1821			None1822		}1823	}1824	fn syntax(&self) -> &SyntaxNode {1825		&self.syntax1826	}1827}1828impl AstNode for DestructSkip {1829	fn can_cast(kind: SyntaxKind) -> bool {1830		kind == DESTRUCT_SKIP1831	}1832	fn cast(syntax: SyntaxNode) -> Option<Self> {1833		if Self::can_cast(syntax.kind()) {1834			Some(Self { syntax })1835		} else {1836			None1837		}1838	}1839	fn syntax(&self) -> &SyntaxNode {1840		&self.syntax1841	}1842}1843impl AstNode for DestructArray {1844	fn can_cast(kind: SyntaxKind) -> bool {1845		kind == DESTRUCT_ARRAY1846	}1847	fn cast(syntax: SyntaxNode) -> Option<Self> {1848		if Self::can_cast(syntax.kind()) {1849			Some(Self { syntax })1850		} else {1851			None1852		}1853	}1854	fn syntax(&self) -> &SyntaxNode {1855		&self.syntax1856	}1857}1858impl AstNode for DestructObject {1859	fn can_cast(kind: SyntaxKind) -> bool {1860		kind == DESTRUCT_OBJECT1861	}1862	fn cast(syntax: SyntaxNode) -> Option<Self> {1863		if Self::can_cast(syntax.kind()) {1864			Some(Self { syntax })1865		} else {1866			None1867		}1868	}1869	fn syntax(&self) -> &SyntaxNode {1870		&self.syntax1871	}1872}1873impl AstNode for DestructObjectField {1874	fn can_cast(kind: SyntaxKind) -> bool {1875		kind == DESTRUCT_OBJECT_FIELD1876	}1877	fn cast(syntax: SyntaxNode) -> Option<Self> {1878		if Self::can_cast(syntax.kind()) {1879			Some(Self { syntax })1880		} else {1881			None1882		}1883	}1884	fn syntax(&self) -> &SyntaxNode {1885		&self.syntax1886	}1887}1888impl AstNode for DestructRest {1889	fn can_cast(kind: SyntaxKind) -> bool {1890		kind == DESTRUCT_REST1891	}1892	fn cast(syntax: SyntaxNode) -> Option<Self> {1893		if Self::can_cast(syntax.kind()) {1894			Some(Self { syntax })1895		} else {1896			None1897		}1898	}1899	fn syntax(&self) -> &SyntaxNode {1900		&self.syntax1901	}1902}1903impl AstNode for DestructArrayElement {1904	fn can_cast(kind: SyntaxKind) -> bool {1905		kind == DESTRUCT_ARRAY_ELEMENT1906	}1907	fn cast(syntax: SyntaxNode) -> Option<Self> {1908		if Self::can_cast(syntax.kind()) {1909			Some(Self { syntax })1910		} else {1911			None1912		}1913	}1914	fn syntax(&self) -> &SyntaxNode {1915		&self.syntax1916	}1917}1918impl From<SuffixIndex> for Suffix {1919	fn from(node: SuffixIndex) -> Suffix {1920		Suffix::SuffixIndex(node)1921	}1922}1923impl From<SuffixIndexExpr> for Suffix {1924	fn from(node: SuffixIndexExpr) -> Suffix {1925		Suffix::SuffixIndexExpr(node)1926	}1927}1928impl From<SuffixSlice> for Suffix {1929	fn from(node: SuffixSlice) -> Suffix {1930		Suffix::SuffixSlice(node)1931	}1932}1933impl From<SuffixApply> for Suffix {1934	fn from(node: SuffixApply) -> Suffix {1935		Suffix::SuffixApply(node)1936	}1937}1938impl AstNode for Suffix {1939	fn can_cast(kind: SyntaxKind) -> bool {1940		match kind {1941			SUFFIX_INDEX | SUFFIX_INDEX_EXPR | SUFFIX_SLICE | SUFFIX_APPLY => true,1942			_ => false,1943		}1944	}1945	fn cast(syntax: SyntaxNode) -> Option<Self> {1946		let res = match syntax.kind() {1947			SUFFIX_INDEX => Suffix::SuffixIndex(SuffixIndex { syntax }),1948			SUFFIX_INDEX_EXPR => Suffix::SuffixIndexExpr(SuffixIndexExpr { syntax }),1949			SUFFIX_SLICE => Suffix::SuffixSlice(SuffixSlice { syntax }),1950			SUFFIX_APPLY => Suffix::SuffixApply(SuffixApply { syntax }),1951			_ => return None,1952		};1953		Some(res)1954	}1955	fn syntax(&self) -> &SyntaxNode {1956		match self {1957			Suffix::SuffixIndex(it) => &it.syntax,1958			Suffix::SuffixIndexExpr(it) => &it.syntax,1959			Suffix::SuffixSlice(it) => &it.syntax,1960			Suffix::SuffixApply(it) => &it.syntax,1961		}1962	}1963}1964impl From<BindDestruct> for Bind {1965	fn from(node: BindDestruct) -> Bind {1966		Bind::BindDestruct(node)1967	}1968}1969impl From<BindFunction> for Bind {1970	fn from(node: BindFunction) -> Bind {1971		Bind::BindFunction(node)1972	}1973}1974impl AstNode for Bind {1975	fn can_cast(kind: SyntaxKind) -> bool {1976		match kind {1977			BIND_DESTRUCT | BIND_FUNCTION => true,1978			_ => false,1979		}1980	}1981	fn cast(syntax: SyntaxNode) -> Option<Self> {1982		let res = match syntax.kind() {1983			BIND_DESTRUCT => Bind::BindDestruct(BindDestruct { syntax }),1984			BIND_FUNCTION => Bind::BindFunction(BindFunction { syntax }),1985			_ => return None,1986		};1987		Some(res)1988	}1989	fn syntax(&self) -> &SyntaxNode {1990		match self {1991			Bind::BindDestruct(it) => &it.syntax,1992			Bind::BindFunction(it) => &it.syntax,1993		}1994	}1995}1996impl From<StmtLocal> for Stmt {1997	fn from(node: StmtLocal) -> Stmt {1998		Stmt::StmtLocal(node)1999	}2000}2001impl From<StmtAssert> for Stmt {2002	fn from(node: StmtAssert) -> Stmt {2003		Stmt::StmtAssert(node)2004	}2005}2006impl AstNode for Stmt {2007	fn can_cast(kind: SyntaxKind) -> bool {2008		match kind {2009			STMT_LOCAL | STMT_ASSERT => true,2010			_ => false,2011		}2012	}2013	fn cast(syntax: SyntaxNode) -> Option<Self> {2014		let res = match syntax.kind() {2015			STMT_LOCAL => Stmt::StmtLocal(StmtLocal { syntax }),2016			STMT_ASSERT => Stmt::StmtAssert(StmtAssert { syntax }),2017			_ => return None,2018		};2019		Some(res)2020	}2021	fn syntax(&self) -> &SyntaxNode {2022		match self {2023			Stmt::StmtLocal(it) => &it.syntax,2024			Stmt::StmtAssert(it) => &it.syntax,2025		}2026	}2027}2028impl From<ObjBodyComp> for ObjBody {2029	fn from(node: ObjBodyComp) -> ObjBody {2030		ObjBody::ObjBodyComp(node)2031	}2032}2033impl From<ObjBodyMemberList> for ObjBody {2034	fn from(node: ObjBodyMemberList) -> ObjBody {2035		ObjBody::ObjBodyMemberList(node)2036	}2037}2038impl AstNode for ObjBody {2039	fn can_cast(kind: SyntaxKind) -> bool {2040		match kind {2041			OBJ_BODY_COMP | OBJ_BODY_MEMBER_LIST => true,2042			_ => false,2043		}2044	}2045	fn cast(syntax: SyntaxNode) -> Option<Self> {2046		let res = match syntax.kind() {2047			OBJ_BODY_COMP => ObjBody::ObjBodyComp(ObjBodyComp { syntax }),2048			OBJ_BODY_MEMBER_LIST => ObjBody::ObjBodyMemberList(ObjBodyMemberList { syntax }),2049			_ => return None,2050		};2051		Some(res)2052	}2053	fn syntax(&self) -> &SyntaxNode {2054		match self {2055			ObjBody::ObjBodyComp(it) => &it.syntax,2056			ObjBody::ObjBodyMemberList(it) => &it.syntax,2057		}2058	}2059}2060impl From<ForSpec> for CompSpec {2061	fn from(node: ForSpec) -> CompSpec {2062		CompSpec::ForSpec(node)2063	}2064}2065impl From<ForObjSpec> for CompSpec {2066	fn from(node: ForObjSpec) -> CompSpec {2067		CompSpec::ForObjSpec(node)2068	}2069}2070impl From<IfSpec> for CompSpec {2071	fn from(node: IfSpec) -> CompSpec {2072		CompSpec::IfSpec(node)2073	}2074}2075impl AstNode for CompSpec {2076	fn can_cast(kind: SyntaxKind) -> bool {2077		match kind {2078			FOR_SPEC | FOR_OBJ_SPEC | IF_SPEC => true,2079			_ => false,2080		}2081	}2082	fn cast(syntax: SyntaxNode) -> Option<Self> {2083		let res = match syntax.kind() {2084			FOR_SPEC => CompSpec::ForSpec(ForSpec { syntax }),2085			FOR_OBJ_SPEC => CompSpec::ForObjSpec(ForObjSpec { syntax }),2086			IF_SPEC => CompSpec::IfSpec(IfSpec { syntax }),2087			_ => return None,2088		};2089		Some(res)2090	}2091	fn syntax(&self) -> &SyntaxNode {2092		match self {2093			CompSpec::ForSpec(it) => &it.syntax,2094			CompSpec::ForObjSpec(it) => &it.syntax,2095			CompSpec::IfSpec(it) => &it.syntax,2096		}2097	}2098}2099impl From<ExprBinary> for ExprBase {2100	fn from(node: ExprBinary) -> ExprBase {2101		ExprBase::ExprBinary(node)2102	}2103}2104impl From<ExprUnary> for ExprBase {2105	fn from(node: ExprUnary) -> ExprBase {2106		ExprBase::ExprUnary(node)2107	}2108}2109impl From<ExprObjExtend> for ExprBase {2110	fn from(node: ExprObjExtend) -> ExprBase {2111		ExprBase::ExprObjExtend(node)2112	}2113}2114impl From<ExprParened> for ExprBase {2115	fn from(node: ExprParened) -> ExprBase {2116		ExprBase::ExprParened(node)2117	}2118}2119impl From<ExprString> for ExprBase {2120	fn from(node: ExprString) -> ExprBase {2121		ExprBase::ExprString(node)2122	}2123}2124impl From<ExprNumber> for ExprBase {2125	fn from(node: ExprNumber) -> ExprBase {2126		ExprBase::ExprNumber(node)2127	}2128}2129impl From<ExprLiteral> for ExprBase {2130	fn from(node: ExprLiteral) -> ExprBase {2131		ExprBase::ExprLiteral(node)2132	}2133}2134impl From<ExprArray> for ExprBase {2135	fn from(node: ExprArray) -> ExprBase {2136		ExprBase::ExprArray(node)2137	}2138}2139impl From<ExprObject> for ExprBase {2140	fn from(node: ExprObject) -> ExprBase {2141		ExprBase::ExprObject(node)2142	}2143}2144impl From<ExprArrayComp> for ExprBase {2145	fn from(node: ExprArrayComp) -> ExprBase {2146		ExprBase::ExprArrayComp(node)2147	}2148}2149impl From<ExprImport> for ExprBase {2150	fn from(node: ExprImport) -> ExprBase {2151		ExprBase::ExprImport(node)2152	}2153}2154impl From<ExprVar> for ExprBase {2155	fn from(node: ExprVar) -> ExprBase {2156		ExprBase::ExprVar(node)2157	}2158}2159impl From<ExprIfThenElse> for ExprBase {2160	fn from(node: ExprIfThenElse) -> ExprBase {2161		ExprBase::ExprIfThenElse(node)2162	}2163}2164impl From<ExprFunction> for ExprBase {2165	fn from(node: ExprFunction) -> ExprBase {2166		ExprBase::ExprFunction(node)2167	}2168}2169impl From<ExprError> for ExprBase {2170	fn from(node: ExprError) -> ExprBase {2171		ExprBase::ExprError(node)2172	}2173}2174impl AstNode for ExprBase {2175	fn can_cast(kind: SyntaxKind) -> bool {2176		match kind {2177			EXPR_BINARY | EXPR_UNARY | EXPR_OBJ_EXTEND | EXPR_PARENED | EXPR_STRING2178			| EXPR_NUMBER | EXPR_LITERAL | EXPR_ARRAY | EXPR_OBJECT | EXPR_ARRAY_COMP2179			| EXPR_IMPORT | EXPR_VAR | EXPR_IF_THEN_ELSE | EXPR_FUNCTION | EXPR_ERROR => true,2180			_ => false,2181		}2182	}2183	fn cast(syntax: SyntaxNode) -> Option<Self> {2184		let res = match syntax.kind() {2185			EXPR_BINARY => ExprBase::ExprBinary(ExprBinary { syntax }),2186			EXPR_UNARY => ExprBase::ExprUnary(ExprUnary { syntax }),2187			EXPR_OBJ_EXTEND => ExprBase::ExprObjExtend(ExprObjExtend { syntax }),2188			EXPR_PARENED => ExprBase::ExprParened(ExprParened { syntax }),2189			EXPR_STRING => ExprBase::ExprString(ExprString { syntax }),2190			EXPR_NUMBER => ExprBase::ExprNumber(ExprNumber { syntax }),2191			EXPR_LITERAL => ExprBase::ExprLiteral(ExprLiteral { syntax }),2192			EXPR_ARRAY => ExprBase::ExprArray(ExprArray { syntax }),2193			EXPR_OBJECT => ExprBase::ExprObject(ExprObject { syntax }),2194			EXPR_ARRAY_COMP => ExprBase::ExprArrayComp(ExprArrayComp { syntax }),2195			EXPR_IMPORT => ExprBase::ExprImport(ExprImport { syntax }),2196			EXPR_VAR => ExprBase::ExprVar(ExprVar { syntax }),2197			EXPR_IF_THEN_ELSE => ExprBase::ExprIfThenElse(ExprIfThenElse { syntax }),2198			EXPR_FUNCTION => ExprBase::ExprFunction(ExprFunction { syntax }),2199			EXPR_ERROR => ExprBase::ExprError(ExprError { syntax }),2200			_ => return None,2201		};2202		Some(res)2203	}2204	fn syntax(&self) -> &SyntaxNode {2205		match self {2206			ExprBase::ExprBinary(it) => &it.syntax,2207			ExprBase::ExprUnary(it) => &it.syntax,2208			ExprBase::ExprObjExtend(it) => &it.syntax,2209			ExprBase::ExprParened(it) => &it.syntax,2210			ExprBase::ExprString(it) => &it.syntax,2211			ExprBase::ExprNumber(it) => &it.syntax,2212			ExprBase::ExprLiteral(it) => &it.syntax,2213			ExprBase::ExprArray(it) => &it.syntax,2214			ExprBase::ExprObject(it) => &it.syntax,2215			ExprBase::ExprArrayComp(it) => &it.syntax,2216			ExprBase::ExprImport(it) => &it.syntax,2217			ExprBase::ExprVar(it) => &it.syntax,2218			ExprBase::ExprIfThenElse(it) => &it.syntax,2219			ExprBase::ExprFunction(it) => &it.syntax,2220			ExprBase::ExprError(it) => &it.syntax,2221		}2222	}2223}2224impl From<MemberBindStmt> for MemberComp {2225	fn from(node: MemberBindStmt) -> MemberComp {2226		MemberComp::MemberBindStmt(node)2227	}2228}2229impl From<MemberFieldNormal> for MemberComp {2230	fn from(node: MemberFieldNormal) -> MemberComp {2231		MemberComp::MemberFieldNormal(node)2232	}2233}2234impl From<MemberFieldMethod> for MemberComp {2235	fn from(node: MemberFieldMethod) -> MemberComp {2236		MemberComp::MemberFieldMethod(node)2237	}2238}2239impl AstNode for MemberComp {2240	fn can_cast(kind: SyntaxKind) -> bool {2241		match kind {2242			MEMBER_BIND_STMT | MEMBER_FIELD_NORMAL | MEMBER_FIELD_METHOD => true,2243			_ => false,2244		}2245	}2246	fn cast(syntax: SyntaxNode) -> Option<Self> {2247		let res = match syntax.kind() {2248			MEMBER_BIND_STMT => MemberComp::MemberBindStmt(MemberBindStmt { syntax }),2249			MEMBER_FIELD_NORMAL => MemberComp::MemberFieldNormal(MemberFieldNormal { syntax }),2250			MEMBER_FIELD_METHOD => MemberComp::MemberFieldMethod(MemberFieldMethod { syntax }),2251			_ => return None,2252		};2253		Some(res)2254	}2255	fn syntax(&self) -> &SyntaxNode {2256		match self {2257			MemberComp::MemberBindStmt(it) => &it.syntax,2258			MemberComp::MemberFieldNormal(it) => &it.syntax,2259			MemberComp::MemberFieldMethod(it) => &it.syntax,2260		}2261	}2262}2263impl From<MemberBindStmt> for Member {2264	fn from(node: MemberBindStmt) -> Member {2265		Member::MemberBindStmt(node)2266	}2267}2268impl From<MemberAssertStmt> for Member {2269	fn from(node: MemberAssertStmt) -> Member {2270		Member::MemberAssertStmt(node)2271	}2272}2273impl From<MemberFieldNormal> for Member {2274	fn from(node: MemberFieldNormal) -> Member {2275		Member::MemberFieldNormal(node)2276	}2277}2278impl From<MemberFieldMethod> for Member {2279	fn from(node: MemberFieldMethod) -> Member {2280		Member::MemberFieldMethod(node)2281	}2282}2283impl AstNode for Member {2284	fn can_cast(kind: SyntaxKind) -> bool {2285		match kind {2286			MEMBER_BIND_STMT | MEMBER_ASSERT_STMT | MEMBER_FIELD_NORMAL | MEMBER_FIELD_METHOD => {2287				true2288			}2289			_ => false,2290		}2291	}2292	fn cast(syntax: SyntaxNode) -> Option<Self> {2293		let res = match syntax.kind() {2294			MEMBER_BIND_STMT => Member::MemberBindStmt(MemberBindStmt { syntax }),2295			MEMBER_ASSERT_STMT => Member::MemberAssertStmt(MemberAssertStmt { syntax }),2296			MEMBER_FIELD_NORMAL => Member::MemberFieldNormal(MemberFieldNormal { syntax }),2297			MEMBER_FIELD_METHOD => Member::MemberFieldMethod(MemberFieldMethod { syntax }),2298			_ => return None,2299		};2300		Some(res)2301	}2302	fn syntax(&self) -> &SyntaxNode {2303		match self {2304			Member::MemberBindStmt(it) => &it.syntax,2305			Member::MemberAssertStmt(it) => &it.syntax,2306			Member::MemberFieldNormal(it) => &it.syntax,2307			Member::MemberFieldMethod(it) => &it.syntax,2308		}2309	}2310}2311impl From<FieldNameFixed> for FieldName {2312	fn from(node: FieldNameFixed) -> FieldName {2313		FieldName::FieldNameFixed(node)2314	}2315}2316impl From<FieldNameDynamic> for FieldName {2317	fn from(node: FieldNameDynamic) -> FieldName {2318		FieldName::FieldNameDynamic(node)2319	}2320}2321impl AstNode for FieldName {2322	fn can_cast(kind: SyntaxKind) -> bool {2323		match kind {2324			FIELD_NAME_FIXED | FIELD_NAME_DYNAMIC => true,2325			_ => false,2326		}2327	}2328	fn cast(syntax: SyntaxNode) -> Option<Self> {2329		let res = match syntax.kind() {2330			FIELD_NAME_FIXED => FieldName::FieldNameFixed(FieldNameFixed { syntax }),2331			FIELD_NAME_DYNAMIC => FieldName::FieldNameDynamic(FieldNameDynamic { syntax }),2332			_ => return None,2333		};2334		Some(res)2335	}2336	fn syntax(&self) -> &SyntaxNode {2337		match self {2338			FieldName::FieldNameFixed(it) => &it.syntax,2339			FieldName::FieldNameDynamic(it) => &it.syntax,2340		}2341	}2342}2343impl From<DestructFull> for Destruct {2344	fn from(node: DestructFull) -> Destruct {2345		Destruct::DestructFull(node)2346	}2347}2348impl From<DestructSkip> for Destruct {2349	fn from(node: DestructSkip) -> Destruct {2350		Destruct::DestructSkip(node)2351	}2352}2353impl From<DestructArray> for Destruct {2354	fn from(node: DestructArray) -> Destruct {2355		Destruct::DestructArray(node)2356	}2357}2358impl From<DestructObject> for Destruct {2359	fn from(node: DestructObject) -> Destruct {2360		Destruct::DestructObject(node)2361	}2362}2363impl AstNode for Destruct {2364	fn can_cast(kind: SyntaxKind) -> bool {2365		match kind {2366			DESTRUCT_FULL | DESTRUCT_SKIP | DESTRUCT_ARRAY | DESTRUCT_OBJECT => true,2367			_ => false,2368		}2369	}2370	fn cast(syntax: SyntaxNode) -> Option<Self> {2371		let res = match syntax.kind() {2372			DESTRUCT_FULL => Destruct::DestructFull(DestructFull { syntax }),2373			DESTRUCT_SKIP => Destruct::DestructSkip(DestructSkip { syntax }),2374			DESTRUCT_ARRAY => Destruct::DestructArray(DestructArray { syntax }),2375			DESTRUCT_OBJECT => Destruct::DestructObject(DestructObject { syntax }),2376			_ => return None,2377		};2378		Some(res)2379	}2380	fn syntax(&self) -> &SyntaxNode {2381		match self {2382			Destruct::DestructFull(it) => &it.syntax,2383			Destruct::DestructSkip(it) => &it.syntax,2384			Destruct::DestructArray(it) => &it.syntax,2385			Destruct::DestructObject(it) => &it.syntax,2386		}2387	}2388}2389impl From<DestructArrayElement> for DestructArrayPart {2390	fn from(node: DestructArrayElement) -> DestructArrayPart {2391		DestructArrayPart::DestructArrayElement(node)2392	}2393}2394impl From<DestructRest> for DestructArrayPart {2395	fn from(node: DestructRest) -> DestructArrayPart {2396		DestructArrayPart::DestructRest(node)2397	}2398}2399impl AstNode for DestructArrayPart {2400	fn can_cast(kind: SyntaxKind) -> bool {2401		match kind {2402			DESTRUCT_ARRAY_ELEMENT | DESTRUCT_REST => true,2403			_ => false,2404		}2405	}2406	fn cast(syntax: SyntaxNode) -> Option<Self> {2407		let res = match syntax.kind() {2408			DESTRUCT_ARRAY_ELEMENT => {2409				DestructArrayPart::DestructArrayElement(DestructArrayElement { syntax })2410			}2411			DESTRUCT_REST => DestructArrayPart::DestructRest(DestructRest { syntax }),2412			_ => return None,2413		};2414		Some(res)2415	}2416	fn syntax(&self) -> &SyntaxNode {2417		match self {2418			DestructArrayPart::DestructArrayElement(it) => &it.syntax,2419			DestructArrayPart::DestructRest(it) => &it.syntax,2420		}2421	}2422}2423impl AstToken for BinaryOperator {2424	fn can_cast(kind: SyntaxKind) -> bool {2425		BinaryOperatorKind::can_cast(kind)2426	}2427	fn cast(syntax: SyntaxToken) -> Option<Self> {2428		let kind = BinaryOperatorKind::cast(syntax.kind())?;2429		Some(BinaryOperator { syntax, kind })2430	}2431	fn syntax(&self) -> &SyntaxToken {2432		&self.syntax2433	}2434}2435impl BinaryOperatorKind {2436	fn can_cast(kind: SyntaxKind) -> bool {2437		match kind {2438			OR | NULL_COAELSE | AND | BIT_OR | BIT_XOR | BIT_AND | EQ | NE | LT | GT | LE | GE2439			| IN_KW | LHS | RHS | PLUS | MINUS | MUL | DIV | MODULO | META_OBJECT_APPLY2440			| ERROR_NO_OPERATOR => true,2441			_ => false,2442		}2443	}2444	pub fn cast(kind: SyntaxKind) -> Option<Self> {2445		let res = match kind {2446			OR => Self::Or,2447			NULL_COAELSE => Self::NullCoaelse,2448			AND => Self::And,2449			BIT_OR => Self::BitOr,2450			BIT_XOR => Self::BitXor,2451			BIT_AND => Self::BitAnd,2452			EQ => Self::Eq,2453			NE => Self::Ne,2454			LT => Self::Lt,2455			GT => Self::Gt,2456			LE => Self::Le,2457			GE => Self::Ge,2458			IN_KW => Self::InKw,2459			LHS => Self::Lhs,2460			RHS => Self::Rhs,2461			PLUS => Self::Plus,2462			MINUS => Self::Minus,2463			MUL => Self::Mul,2464			DIV => Self::Div,2465			MODULO => Self::Modulo,2466			META_OBJECT_APPLY => Self::MetaObjectApply,2467			ERROR_NO_OPERATOR => Self::ErrorNoOperator,2468			_ => return None,2469		};2470		Some(res)2471	}2472}2473impl BinaryOperator {2474	pub fn kind(&self) -> BinaryOperatorKind {2475		self.kind2476	}2477}2478impl std::fmt::Display for BinaryOperator {2479	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2480		std::fmt::Display::fmt(self.syntax(), f)2481	}2482}2483impl AstToken for UnaryOperator {2484	fn can_cast(kind: SyntaxKind) -> bool {2485		UnaryOperatorKind::can_cast(kind)2486	}2487	fn cast(syntax: SyntaxToken) -> Option<Self> {2488		let kind = UnaryOperatorKind::cast(syntax.kind())?;2489		Some(UnaryOperator { syntax, kind })2490	}2491	fn syntax(&self) -> &SyntaxToken {2492		&self.syntax2493	}2494}2495impl UnaryOperatorKind {2496	fn can_cast(kind: SyntaxKind) -> bool {2497		match kind {2498			MINUS | NOT | BIT_NOT | PLUS => true,2499			_ => false,2500		}2501	}2502	pub fn cast(kind: SyntaxKind) -> Option<Self> {2503		let res = match kind {2504			MINUS => Self::Minus,2505			NOT => Self::Not,2506			BIT_NOT => Self::BitNot,2507			PLUS => Self::Plus,2508			_ => return None,2509		};2510		Some(res)2511	}2512}2513impl UnaryOperator {2514	pub fn kind(&self) -> UnaryOperatorKind {2515		self.kind2516	}2517}2518impl std::fmt::Display for UnaryOperator {2519	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2520		std::fmt::Display::fmt(self.syntax(), f)2521	}2522}2523impl AstToken for Literal {2524	fn can_cast(kind: SyntaxKind) -> bool {2525		LiteralKind::can_cast(kind)2526	}2527	fn cast(syntax: SyntaxToken) -> Option<Self> {2528		let kind = LiteralKind::cast(syntax.kind())?;2529		Some(Literal { syntax, kind })2530	}2531	fn syntax(&self) -> &SyntaxToken {2532		&self.syntax2533	}2534}2535impl LiteralKind {2536	fn can_cast(kind: SyntaxKind) -> bool {2537		match kind {2538			NULL_KW | TRUE_KW | FALSE_KW | SELF_KW | DOLLAR | SUPER_KW => true,2539			_ => false,2540		}2541	}2542	pub fn cast(kind: SyntaxKind) -> Option<Self> {2543		let res = match kind {2544			NULL_KW => Self::NullKw,2545			TRUE_KW => Self::TrueKw,2546			FALSE_KW => Self::FalseKw,2547			SELF_KW => Self::SelfKw,2548			DOLLAR => Self::Dollar,2549			SUPER_KW => Self::SuperKw,2550			_ => return None,2551		};2552		Some(res)2553	}2554}2555impl Literal {2556	pub fn kind(&self) -> LiteralKind {2557		self.kind2558	}2559}2560impl std::fmt::Display for Literal {2561	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2562		std::fmt::Display::fmt(self.syntax(), f)2563	}2564}2565impl AstToken for Text {2566	fn can_cast(kind: SyntaxKind) -> bool {2567		TextKind::can_cast(kind)2568	}2569	fn cast(syntax: SyntaxToken) -> Option<Self> {2570		let kind = TextKind::cast(syntax.kind())?;2571		Some(Text { syntax, kind })2572	}2573	fn syntax(&self) -> &SyntaxToken {2574		&self.syntax2575	}2576}2577impl TextKind {2578	fn can_cast(kind: SyntaxKind) -> bool {2579		match kind {2580			STRING_DOUBLE2581			| ERROR_STRING_DOUBLE_UNTERMINATED2582			| STRING_SINGLE2583			| ERROR_STRING_SINGLE_UNTERMINATED2584			| STRING_DOUBLE_VERBATIM2585			| ERROR_STRING_DOUBLE_VERBATIM_UNTERMINATED2586			| STRING_SINGLE_VERBATIM2587			| ERROR_STRING_SINGLE_VERBATIM_UNTERMINATED2588			| ERROR_STRING_VERBATIM_MISSING_QUOTES2589			| STRING_BLOCK2590			| ERROR_STRING_BLOCK_UNEXPECTED_END2591			| ERROR_STRING_BLOCK_MISSING_NEW_LINE2592			| ERROR_STRING_BLOCK_MISSING_TERMINATION2593			| ERROR_STRING_BLOCK_MISSING_INDENT => true,2594			_ => false,2595		}2596	}2597	pub fn cast(kind: SyntaxKind) -> Option<Self> {2598		let res = match kind {2599			STRING_DOUBLE => Self::StringDouble,2600			ERROR_STRING_DOUBLE_UNTERMINATED => Self::ErrorStringDoubleUnterminated,2601			STRING_SINGLE => Self::StringSingle,2602			ERROR_STRING_SINGLE_UNTERMINATED => Self::ErrorStringSingleUnterminated,2603			STRING_DOUBLE_VERBATIM => Self::StringDoubleVerbatim,2604			ERROR_STRING_DOUBLE_VERBATIM_UNTERMINATED => {2605				Self::ErrorStringDoubleVerbatimUnterminated2606			}2607			STRING_SINGLE_VERBATIM => Self::StringSingleVerbatim,2608			ERROR_STRING_SINGLE_VERBATIM_UNTERMINATED => {2609				Self::ErrorStringSingleVerbatimUnterminated2610			}2611			ERROR_STRING_VERBATIM_MISSING_QUOTES => Self::ErrorStringVerbatimMissingQuotes,2612			STRING_BLOCK => Self::StringBlock,2613			ERROR_STRING_BLOCK_UNEXPECTED_END => Self::ErrorStringBlockUnexpectedEnd,2614			ERROR_STRING_BLOCK_MISSING_NEW_LINE => Self::ErrorStringBlockMissingNewLine,2615			ERROR_STRING_BLOCK_MISSING_TERMINATION => Self::ErrorStringBlockMissingTermination,2616			ERROR_STRING_BLOCK_MISSING_INDENT => Self::ErrorStringBlockMissingIndent,2617			_ => return None,2618		};2619		Some(res)2620	}2621}2622impl Text {2623	pub fn kind(&self) -> TextKind {2624		self.kind2625	}2626}2627impl std::fmt::Display for Text {2628	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2629		std::fmt::Display::fmt(self.syntax(), f)2630	}2631}2632impl AstToken for Number {2633	fn can_cast(kind: SyntaxKind) -> bool {2634		NumberKind::can_cast(kind)2635	}2636	fn cast(syntax: SyntaxToken) -> Option<Self> {2637		let kind = NumberKind::cast(syntax.kind())?;2638		Some(Number { syntax, kind })2639	}2640	fn syntax(&self) -> &SyntaxToken {2641		&self.syntax2642	}2643}2644impl NumberKind {2645	fn can_cast(kind: SyntaxKind) -> bool {2646		match kind {2647			FLOAT2648			| ERROR_FLOAT_JUNK_AFTER_POINT2649			| ERROR_FLOAT_JUNK_AFTER_EXPONENT2650			| ERROR_FLOAT_JUNK_AFTER_EXPONENT_SIGN => true,2651			_ => false,2652		}2653	}2654	pub fn cast(kind: SyntaxKind) -> Option<Self> {2655		let res = match kind {2656			FLOAT => Self::Float,2657			ERROR_FLOAT_JUNK_AFTER_POINT => Self::ErrorFloatJunkAfterPoint,2658			ERROR_FLOAT_JUNK_AFTER_EXPONENT => Self::ErrorFloatJunkAfterExponent,2659			ERROR_FLOAT_JUNK_AFTER_EXPONENT_SIGN => Self::ErrorFloatJunkAfterExponentSign,2660			_ => return None,2661		};2662		Some(res)2663	}2664}2665impl Number {2666	pub fn kind(&self) -> NumberKind {2667		self.kind2668	}2669}2670impl std::fmt::Display for Number {2671	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2672		std::fmt::Display::fmt(self.syntax(), f)2673	}2674}2675impl AstToken for ImportKind {2676	fn can_cast(kind: SyntaxKind) -> bool {2677		ImportKindKind::can_cast(kind)2678	}2679	fn cast(syntax: SyntaxToken) -> Option<Self> {2680		let kind = ImportKindKind::cast(syntax.kind())?;2681		Some(ImportKind { syntax, kind })2682	}2683	fn syntax(&self) -> &SyntaxToken {2684		&self.syntax2685	}2686}2687impl ImportKindKind {2688	fn can_cast(kind: SyntaxKind) -> bool {2689		match kind {2690			IMPORTSTR_KW | IMPORTBIN_KW | IMPORT_KW => true,2691			_ => false,2692		}2693	}2694	pub fn cast(kind: SyntaxKind) -> Option<Self> {2695		let res = match kind {2696			IMPORTSTR_KW => Self::ImportstrKw,2697			IMPORTBIN_KW => Self::ImportbinKw,2698			IMPORT_KW => Self::ImportKw,2699			_ => return None,2700		};2701		Some(res)2702	}2703}2704impl ImportKind {2705	pub fn kind(&self) -> ImportKindKind {2706		self.kind2707	}2708}2709impl std::fmt::Display for ImportKind {2710	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2711		std::fmt::Display::fmt(self.syntax(), f)2712	}2713}2714impl AstToken for Trivia {2715	fn can_cast(kind: SyntaxKind) -> bool {2716		TriviaKind::can_cast(kind)2717	}2718	fn cast(syntax: SyntaxToken) -> Option<Self> {2719		let kind = TriviaKind::cast(syntax.kind())?;2720		Some(Trivia { syntax, kind })2721	}2722	fn syntax(&self) -> &SyntaxToken {2723		&self.syntax2724	}2725}2726impl TriviaKind {2727	fn can_cast(kind: SyntaxKind) -> bool {2728		match kind {2729			WHITESPACE2730			| MULTI_LINE_COMMENT2731			| ERROR_COMMENT_TOO_SHORT2732			| ERROR_COMMENT_UNTERMINATED2733			| SINGLE_LINE_HASH_COMMENT2734			| SINGLE_LINE_SLASH_COMMENT => true,2735			_ => false,2736		}2737	}2738	pub fn cast(kind: SyntaxKind) -> Option<Self> {2739		let res = match kind {2740			WHITESPACE => Self::Whitespace,2741			MULTI_LINE_COMMENT => Self::MultiLineComment,2742			ERROR_COMMENT_TOO_SHORT => Self::ErrorCommentTooShort,2743			ERROR_COMMENT_UNTERMINATED => Self::ErrorCommentUnterminated,2744			SINGLE_LINE_HASH_COMMENT => Self::SingleLineHashComment,2745			SINGLE_LINE_SLASH_COMMENT => Self::SingleLineSlashComment,2746			_ => return None,2747		};2748		Some(res)2749	}2750}2751impl Trivia {2752	pub fn kind(&self) -> TriviaKind {2753		self.kind2754	}2755}2756impl std::fmt::Display for Trivia {2757	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2758		std::fmt::Display::fmt(self.syntax(), f)2759	}2760}2761impl AstToken for CustomError {2762	fn can_cast(kind: SyntaxKind) -> bool {2763		CustomErrorKind::can_cast(kind)2764	}2765	fn cast(syntax: SyntaxToken) -> Option<Self> {2766		let kind = CustomErrorKind::cast(syntax.kind())?;2767		Some(CustomError { syntax, kind })2768	}2769	fn syntax(&self) -> &SyntaxToken {2770		&self.syntax2771	}2772}2773impl CustomErrorKind {2774	fn can_cast(kind: SyntaxKind) -> bool {2775		match kind {2776			ERROR_MISSING_TOKEN | ERROR_UNEXPECTED_TOKEN | ERROR_CUSTOM => true,2777			_ => false,2778		}2779	}2780	pub fn cast(kind: SyntaxKind) -> Option<Self> {2781		let res = match kind {2782			ERROR_MISSING_TOKEN => Self::ErrorMissingToken,2783			ERROR_UNEXPECTED_TOKEN => Self::ErrorUnexpectedToken,2784			ERROR_CUSTOM => Self::ErrorCustom,2785			_ => return None,2786		};2787		Some(res)2788	}2789}2790impl CustomError {2791	pub fn kind(&self) -> CustomErrorKind {2792		self.kind2793	}2794}2795impl std::fmt::Display for CustomError {2796	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2797		std::fmt::Display::fmt(self.syntax(), f)2798	}2799}2800impl std::fmt::Display for Suffix {2801	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2802		std::fmt::Display::fmt(self.syntax(), f)2803	}2804}2805impl std::fmt::Display for Bind {2806	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2807		std::fmt::Display::fmt(self.syntax(), f)2808	}2809}2810impl std::fmt::Display for Stmt {2811	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2812		std::fmt::Display::fmt(self.syntax(), f)2813	}2814}2815impl std::fmt::Display for ObjBody {2816	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2817		std::fmt::Display::fmt(self.syntax(), f)2818	}2819}2820impl std::fmt::Display for CompSpec {2821	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2822		std::fmt::Display::fmt(self.syntax(), f)2823	}2824}2825impl std::fmt::Display for ExprBase {2826	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2827		std::fmt::Display::fmt(self.syntax(), f)2828	}2829}2830impl std::fmt::Display for MemberComp {2831	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2832		std::fmt::Display::fmt(self.syntax(), f)2833	}2834}2835impl std::fmt::Display for Member {2836	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2837		std::fmt::Display::fmt(self.syntax(), f)2838	}2839}2840impl std::fmt::Display for FieldName {2841	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2842		std::fmt::Display::fmt(self.syntax(), f)2843	}2844}2845impl std::fmt::Display for Destruct {2846	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2847		std::fmt::Display::fmt(self.syntax(), f)2848	}2849}2850impl std::fmt::Display for DestructArrayPart {2851	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2852		std::fmt::Display::fmt(self.syntax(), f)2853	}2854}2855impl std::fmt::Display for SourceFile {2856	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2857		std::fmt::Display::fmt(self.syntax(), f)2858	}2859}2860impl std::fmt::Display for Expr {2861	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2862		std::fmt::Display::fmt(self.syntax(), f)2863	}2864}2865impl std::fmt::Display for SuffixIndex {2866	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2867		std::fmt::Display::fmt(self.syntax(), f)2868	}2869}2870impl std::fmt::Display for Name {2871	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2872		std::fmt::Display::fmt(self.syntax(), f)2873	}2874}2875impl std::fmt::Display for SuffixIndexExpr {2876	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2877		std::fmt::Display::fmt(self.syntax(), f)2878	}2879}2880impl std::fmt::Display for SuffixSlice {2881	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2882		std::fmt::Display::fmt(self.syntax(), f)2883	}2884}2885impl std::fmt::Display for SliceDesc {2886	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2887		std::fmt::Display::fmt(self.syntax(), f)2888	}2889}2890impl std::fmt::Display for SuffixApply {2891	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2892		std::fmt::Display::fmt(self.syntax(), f)2893	}2894}2895impl std::fmt::Display for ArgsDesc {2896	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2897		std::fmt::Display::fmt(self.syntax(), f)2898	}2899}2900impl std::fmt::Display for StmtLocal {2901	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2902		std::fmt::Display::fmt(self.syntax(), f)2903	}2904}2905impl std::fmt::Display for StmtAssert {2906	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2907		std::fmt::Display::fmt(self.syntax(), f)2908	}2909}2910impl std::fmt::Display for Assertion {2911	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2912		std::fmt::Display::fmt(self.syntax(), f)2913	}2914}2915impl std::fmt::Display for ExprBinary {2916	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2917		std::fmt::Display::fmt(self.syntax(), f)2918	}2919}2920impl std::fmt::Display for ExprUnary {2921	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2922		std::fmt::Display::fmt(self.syntax(), f)2923	}2924}2925impl std::fmt::Display for ExprObjExtend {2926	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2927		std::fmt::Display::fmt(self.syntax(), f)2928	}2929}2930impl std::fmt::Display for ExprParened {2931	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2932		std::fmt::Display::fmt(self.syntax(), f)2933	}2934}2935impl std::fmt::Display for ExprLiteral {2936	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2937		std::fmt::Display::fmt(self.syntax(), f)2938	}2939}2940impl std::fmt::Display for ExprString {2941	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2942		std::fmt::Display::fmt(self.syntax(), f)2943	}2944}2945impl std::fmt::Display for ExprNumber {2946	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2947		std::fmt::Display::fmt(self.syntax(), f)2948	}2949}2950impl std::fmt::Display for ExprArray {2951	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2952		std::fmt::Display::fmt(self.syntax(), f)2953	}2954}2955impl std::fmt::Display for ExprObject {2956	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2957		std::fmt::Display::fmt(self.syntax(), f)2958	}2959}2960impl std::fmt::Display for ExprArrayComp {2961	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2962		std::fmt::Display::fmt(self.syntax(), f)2963	}2964}2965impl std::fmt::Display for ExprImport {2966	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2967		std::fmt::Display::fmt(self.syntax(), f)2968	}2969}2970impl std::fmt::Display for ExprVar {2971	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2972		std::fmt::Display::fmt(self.syntax(), f)2973	}2974}2975impl std::fmt::Display for ExprIfThenElse {2976	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2977		std::fmt::Display::fmt(self.syntax(), f)2978	}2979}2980impl std::fmt::Display for TrueExpr {2981	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2982		std::fmt::Display::fmt(self.syntax(), f)2983	}2984}2985impl std::fmt::Display for FalseExpr {2986	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2987		std::fmt::Display::fmt(self.syntax(), f)2988	}2989}2990impl std::fmt::Display for ExprFunction {2991	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2992		std::fmt::Display::fmt(self.syntax(), f)2993	}2994}2995impl std::fmt::Display for ParamsDesc {2996	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2997		std::fmt::Display::fmt(self.syntax(), f)2998	}2999}3000impl std::fmt::Display for ExprError {3001	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3002		std::fmt::Display::fmt(self.syntax(), f)3003	}3004}3005impl std::fmt::Display for SliceDescEnd {3006	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3007		std::fmt::Display::fmt(self.syntax(), f)3008	}3009}3010impl std::fmt::Display for SliceDescStep {3011	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3012		std::fmt::Display::fmt(self.syntax(), f)3013	}3014}3015impl std::fmt::Display for Arg {3016	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3017		std::fmt::Display::fmt(self.syntax(), f)3018	}3019}3020impl std::fmt::Display for ObjBodyComp {3021	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3022		std::fmt::Display::fmt(self.syntax(), f)3023	}3024}3025impl std::fmt::Display for ObjBodyMemberList {3026	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3027		std::fmt::Display::fmt(self.syntax(), f)3028	}3029}3030impl std::fmt::Display for MemberBindStmt {3031	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3032		std::fmt::Display::fmt(self.syntax(), f)3033	}3034}3035impl std::fmt::Display for ObjLocal {3036	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3037		std::fmt::Display::fmt(self.syntax(), f)3038	}3039}3040impl std::fmt::Display for MemberAssertStmt {3041	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3042		std::fmt::Display::fmt(self.syntax(), f)3043	}3044}3045impl std::fmt::Display for MemberFieldNormal {3046	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3047		std::fmt::Display::fmt(self.syntax(), f)3048	}3049}3050impl std::fmt::Display for Visibility {3051	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3052		std::fmt::Display::fmt(self.syntax(), f)3053	}3054}3055impl std::fmt::Display for MemberFieldMethod {3056	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3057		std::fmt::Display::fmt(self.syntax(), f)3058	}3059}3060impl std::fmt::Display for FieldNameFixed {3061	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3062		std::fmt::Display::fmt(self.syntax(), f)3063	}3064}3065impl std::fmt::Display for FieldNameDynamic {3066	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3067		std::fmt::Display::fmt(self.syntax(), f)3068	}3069}3070impl std::fmt::Display for ForSpec {3071	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3072		std::fmt::Display::fmt(self.syntax(), f)3073	}3074}3075impl std::fmt::Display for ForObjSpec {3076	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3077		std::fmt::Display::fmt(self.syntax(), f)3078	}3079}3080impl std::fmt::Display for IfSpec {3081	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3082		std::fmt::Display::fmt(self.syntax(), f)3083	}3084}3085impl std::fmt::Display for BindDestruct {3086	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3087		std::fmt::Display::fmt(self.syntax(), f)3088	}3089}3090impl std::fmt::Display for BindFunction {3091	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3092		std::fmt::Display::fmt(self.syntax(), f)3093	}3094}3095impl std::fmt::Display for Param {3096	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3097		std::fmt::Display::fmt(self.syntax(), f)3098	}3099}3100impl std::fmt::Display for DestructFull {3101	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3102		std::fmt::Display::fmt(self.syntax(), f)3103	}3104}3105impl std::fmt::Display for DestructSkip {3106	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3107		std::fmt::Display::fmt(self.syntax(), f)3108	}3109}3110impl std::fmt::Display for DestructArray {3111	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3112		std::fmt::Display::fmt(self.syntax(), f)3113	}3114}3115impl std::fmt::Display for DestructObject {3116	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3117		std::fmt::Display::fmt(self.syntax(), f)3118	}3119}3120impl std::fmt::Display for DestructObjectField {3121	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3122		std::fmt::Display::fmt(self.syntax(), f)3123	}3124}3125impl std::fmt::Display for DestructRest {3126	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3127		std::fmt::Display::fmt(self.syntax(), f)3128	}3129}3130impl std::fmt::Display for DestructArrayElement {3131	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3132		std::fmt::Display::fmt(self.syntax(), f)3133	}3134}