1234#![allow(non_snake_case, clippy::match_like_matches_macro)]5use crate::{6 ast::{support, AstChildren, AstNode, AstToken},7 SyntaxKind::{self, *},8 SyntaxNode, SyntaxToken, T,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::child(&self.syntax)18 }19}2021#[derive(Debug, Clone, PartialEq, Eq, Hash)]22pub struct ExprBinary {23 pub(crate) syntax: SyntaxNode,24}25impl ExprBinary {26 pub fn lhs(&self) -> Option<LhsExpr> {27 support::child(&self.syntax)28 }29 pub fn binary_operator(&self) -> Option<BinaryOperator> {30 support::token_child(&self.syntax)31 }32 pub fn rhs(&self) -> Option<Expr> {33 support::child(&self.syntax)34 }35}3637#[derive(Debug, Clone, PartialEq, Eq, Hash)]38pub struct LhsExpr {39 pub(crate) syntax: SyntaxNode,40}41impl LhsExpr {42 pub fn expr(&self) -> Option<Expr> {43 support::child(&self.syntax)44 }45}4647#[derive(Debug, Clone, PartialEq, Eq, Hash)]48pub struct ExprUnary {49 pub(crate) syntax: SyntaxNode,50}51impl ExprUnary {52 pub fn unary_operator(&self) -> Option<UnaryOperator> {53 support::token_child(&self.syntax)54 }55 pub fn rhs(&self) -> Option<Expr> {56 support::child(&self.syntax)57 }58}5960#[derive(Debug, Clone, PartialEq, Eq, Hash)]61pub struct ExprSlice {62 pub(crate) syntax: SyntaxNode,63}64impl ExprSlice {65 pub fn expr(&self) -> Option<Expr> {66 support::child(&self.syntax)67 }68 pub fn slice_desc(&self) -> Option<SliceDesc> {69 support::child(&self.syntax)70 }71}7273#[derive(Debug, Clone, PartialEq, Eq, Hash)]74pub struct SliceDesc {75 pub(crate) syntax: SyntaxNode,76}77impl SliceDesc {78 pub fn l_brack_token(&self) -> Option<SyntaxToken> {79 support::token(&self.syntax, T!['['])80 }81 pub fn from(&self) -> Option<Expr> {82 support::child(&self.syntax)83 }84 pub fn colon_token(&self) -> Option<SyntaxToken> {85 support::token(&self.syntax, T![:])86 }87 pub fn end(&self) -> Option<SliceDescEnd> {88 support::child(&self.syntax)89 }90 pub fn step(&self) -> Option<SliceDescStep> {91 support::child(&self.syntax)92 }93 pub fn r_brack_token(&self) -> Option<SyntaxToken> {94 support::token(&self.syntax, T![']'])95 }96}9798#[derive(Debug, Clone, PartialEq, Eq, Hash)]99pub struct ExprIndex {100 pub(crate) syntax: SyntaxNode,101}102impl ExprIndex {103 pub fn expr(&self) -> Option<Expr> {104 support::child(&self.syntax)105 }106 pub fn dot_token(&self) -> Option<SyntaxToken> {107 support::token(&self.syntax, T![.])108 }109 pub fn index(&self) -> Option<Name> {110 support::child(&self.syntax)111 }112}113114#[derive(Debug, Clone, PartialEq, Eq, Hash)]115pub struct Name {116 pub(crate) syntax: SyntaxNode,117}118impl Name {119 pub fn ident_lit(&self) -> Option<SyntaxToken> {120 support::token(&self.syntax, IDENT)121 }122}123124#[derive(Debug, Clone, PartialEq, Eq, Hash)]125pub struct ExprIndexExpr {126 pub(crate) syntax: SyntaxNode,127}128impl ExprIndexExpr {129 pub fn base(&self) -> Option<LhsExpr> {130 support::child(&self.syntax)131 }132 pub fn l_brack_token(&self) -> Option<SyntaxToken> {133 support::token(&self.syntax, T!['['])134 }135 pub fn index(&self) -> Option<Expr> {136 support::child(&self.syntax)137 }138 pub fn r_brack_token(&self) -> Option<SyntaxToken> {139 support::token(&self.syntax, T![']'])140 }141}142143#[derive(Debug, Clone, PartialEq, Eq, Hash)]144pub struct ExprApply {145 pub(crate) syntax: SyntaxNode,146}147impl ExprApply {148 pub fn expr(&self) -> Option<Expr> {149 support::child(&self.syntax)150 }151 pub fn args_desc(&self) -> Option<ArgsDesc> {152 support::child(&self.syntax)153 }154 pub fn tailstrict_kw_token(&self) -> Option<SyntaxToken> {155 support::token(&self.syntax, T![tailstrict])156 }157}158159#[derive(Debug, Clone, PartialEq, Eq, Hash)]160pub struct ArgsDesc {161 pub(crate) syntax: SyntaxNode,162}163impl ArgsDesc {164 pub fn l_paren_token(&self) -> Option<SyntaxToken> {165 support::token(&self.syntax, T!['('])166 }167 pub fn args(&self) -> AstChildren<Arg> {168 support::children(&self.syntax)169 }170 pub fn r_paren_token(&self) -> Option<SyntaxToken> {171 support::token(&self.syntax, T![')'])172 }173}174175#[derive(Debug, Clone, PartialEq, Eq, Hash)]176pub struct ExprObjExtend {177 pub(crate) syntax: SyntaxNode,178}179impl ExprObjExtend {180 pub fn lhs_expr(&self) -> Option<LhsExpr> {181 support::child(&self.syntax)182 }183 pub fn expr(&self) -> Option<Expr> {184 support::child(&self.syntax)185 }186}187188#[derive(Debug, Clone, PartialEq, Eq, Hash)]189pub struct ExprParened {190 pub(crate) syntax: SyntaxNode,191}192impl ExprParened {193 pub fn l_paren_token(&self) -> Option<SyntaxToken> {194 support::token(&self.syntax, T!['('])195 }196 pub fn expr(&self) -> Option<Expr> {197 support::child(&self.syntax)198 }199 pub fn r_paren_token(&self) -> Option<SyntaxToken> {200 support::token(&self.syntax, T![')'])201 }202}203204#[derive(Debug, Clone, PartialEq, Eq, Hash)]205pub struct ExprLiteral {206 pub(crate) syntax: SyntaxNode,207}208impl ExprLiteral {209 pub fn literal(&self) -> Option<Literal> {210 support::token_child(&self.syntax)211 }212}213214#[derive(Debug, Clone, PartialEq, Eq, Hash)]215pub struct ExprIntrinsicThisFile {216 pub(crate) syntax: SyntaxNode,217}218impl ExprIntrinsicThisFile {219 pub fn intrinsic_this_file_token(&self) -> Option<SyntaxToken> {220 support::token(&self.syntax, T!["$intrinsicThisFile"])221 }222}223224#[derive(Debug, Clone, PartialEq, Eq, Hash)]225pub struct ExprIntrinsicId {226 pub(crate) syntax: SyntaxNode,227}228impl ExprIntrinsicId {229 pub fn intrinsic_id_token(&self) -> Option<SyntaxToken> {230 support::token(&self.syntax, T!["$intrinsicId"])231 }232}233234#[derive(Debug, Clone, PartialEq, Eq, Hash)]235pub struct ExprIntrinsic {236 pub(crate) syntax: SyntaxNode,237}238impl ExprIntrinsic {239 pub fn intrinsic_token(&self) -> Option<SyntaxToken> {240 support::token(&self.syntax, T!["$intrinsic"])241 }242 pub fn l_paren_token(&self) -> Option<SyntaxToken> {243 support::token(&self.syntax, T!['('])244 }245 pub fn name(&self) -> Option<Name> {246 support::child(&self.syntax)247 }248 pub fn r_paren_token(&self) -> Option<SyntaxToken> {249 support::token(&self.syntax, T![')'])250 }251}252253#[derive(Debug, Clone, PartialEq, Eq, Hash)]254pub struct ExprString {255 pub(crate) syntax: SyntaxNode,256}257impl ExprString {258 pub fn text(&self) -> Option<Text> {259 support::token_child(&self.syntax)260 }261}262263#[derive(Debug, Clone, PartialEq, Eq, Hash)]264pub struct ExprNumber {265 pub(crate) syntax: SyntaxNode,266}267impl ExprNumber {268 pub fn number(&self) -> Option<Number> {269 support::token_child(&self.syntax)270 }271}272273#[derive(Debug, Clone, PartialEq, Eq, Hash)]274pub struct ExprArray {275 pub(crate) syntax: SyntaxNode,276}277impl ExprArray {278 pub fn l_brack_token(&self) -> Option<SyntaxToken> {279 support::token(&self.syntax, T!['['])280 }281 pub fn exprs(&self) -> AstChildren<Expr> {282 support::children(&self.syntax)283 }284 pub fn r_brack_token(&self) -> Option<SyntaxToken> {285 support::token(&self.syntax, T![']'])286 }287}288289#[derive(Debug, Clone, PartialEq, Eq, Hash)]290pub struct ExprObject {291 pub(crate) syntax: SyntaxNode,292}293impl ExprObject {294 pub fn obj_body(&self) -> Option<ObjBody> {295 support::child(&self.syntax)296 }297}298299#[derive(Debug, Clone, PartialEq, Eq, Hash)]300pub struct ExprArrayComp {301 pub(crate) syntax: SyntaxNode,302}303impl ExprArrayComp {304 pub fn l_brack_token(&self) -> Option<SyntaxToken> {305 support::token(&self.syntax, T!['['])306 }307 pub fn expr(&self) -> Option<Expr> {308 support::child(&self.syntax)309 }310 pub fn comma_token(&self) -> Option<SyntaxToken> {311 support::token(&self.syntax, T![,])312 }313 pub fn comp_specs(&self) -> AstChildren<CompSpec> {314 support::children(&self.syntax)315 }316 pub fn r_brack_token(&self) -> Option<SyntaxToken> {317 support::token(&self.syntax, T![']'])318 }319}320321#[derive(Debug, Clone, PartialEq, Eq, Hash)]322pub struct ExprImport {323 pub(crate) syntax: SyntaxNode,324}325impl ExprImport {326 pub fn import_kind(&self) -> Option<ImportKind> {327 support::token_child(&self.syntax)328 }329 pub fn text(&self) -> Option<Text> {330 support::token_child(&self.syntax)331 }332}333334#[derive(Debug, Clone, PartialEq, Eq, Hash)]335pub struct ExprVar {336 pub(crate) syntax: SyntaxNode,337}338impl ExprVar {339 pub fn name(&self) -> Option<Name> {340 support::child(&self.syntax)341 }342}343344#[derive(Debug, Clone, PartialEq, Eq, Hash)]345pub struct ExprLocal {346 pub(crate) syntax: SyntaxNode,347}348impl ExprLocal {349 pub fn local_kw_token(&self) -> Option<SyntaxToken> {350 support::token(&self.syntax, T![local])351 }352 pub fn binds(&self) -> AstChildren<Bind> {353 support::children(&self.syntax)354 }355 pub fn semi_token(&self) -> Option<SyntaxToken> {356 support::token(&self.syntax, T![;])357 }358 pub fn expr(&self) -> Option<Expr> {359 support::child(&self.syntax)360 }361}362363#[derive(Debug, Clone, PartialEq, Eq, Hash)]364pub struct ExprIfThenElse {365 pub(crate) syntax: SyntaxNode,366}367impl ExprIfThenElse {368 pub fn if_kw_token(&self) -> Option<SyntaxToken> {369 support::token(&self.syntax, T![if])370 }371 pub fn cond(&self) -> Option<Expr> {372 support::child(&self.syntax)373 }374 pub fn then_kw_token(&self) -> Option<SyntaxToken> {375 support::token(&self.syntax, T![then])376 }377 pub fn then(&self) -> Option<TrueExpr> {378 support::child(&self.syntax)379 }380 pub fn else_kw_token(&self) -> Option<SyntaxToken> {381 support::token(&self.syntax, T![else])382 }383 pub fn else_(&self) -> Option<FalseExpr> {384 support::child(&self.syntax)385 }386}387388#[derive(Debug, Clone, PartialEq, Eq, Hash)]389pub struct TrueExpr {390 pub(crate) syntax: SyntaxNode,391}392impl TrueExpr {393 pub fn expr(&self) -> Option<Expr> {394 support::child(&self.syntax)395 }396}397398#[derive(Debug, Clone, PartialEq, Eq, Hash)]399pub struct FalseExpr {400 pub(crate) syntax: SyntaxNode,401}402impl FalseExpr {403 pub fn expr(&self) -> Option<Expr> {404 support::child(&self.syntax)405 }406}407408#[derive(Debug, Clone, PartialEq, Eq, Hash)]409pub struct ExprFunction {410 pub(crate) syntax: SyntaxNode,411}412impl ExprFunction {413 pub fn function_kw_token(&self) -> Option<SyntaxToken> {414 support::token(&self.syntax, T![function])415 }416 pub fn l_paren_token(&self) -> Option<SyntaxToken> {417 support::token(&self.syntax, T!['('])418 }419 pub fn params_desc(&self) -> Option<ParamsDesc> {420 support::child(&self.syntax)421 }422 pub fn r_paren_token(&self) -> Option<SyntaxToken> {423 support::token(&self.syntax, T![')'])424 }425 pub fn expr(&self) -> Option<Expr> {426 support::child(&self.syntax)427 }428}429430#[derive(Debug, Clone, PartialEq, Eq, Hash)]431pub struct ParamsDesc {432 pub(crate) syntax: SyntaxNode,433}434impl ParamsDesc {435 pub fn l_paren_token(&self) -> Option<SyntaxToken> {436 support::token(&self.syntax, T!['('])437 }438 pub fn params(&self) -> AstChildren<Param> {439 support::children(&self.syntax)440 }441 pub fn r_paren_token(&self) -> Option<SyntaxToken> {442 support::token(&self.syntax, T![')'])443 }444}445446#[derive(Debug, Clone, PartialEq, Eq, Hash)]447pub struct ExprAssert {448 pub(crate) syntax: SyntaxNode,449}450impl ExprAssert {451 pub fn assertion(&self) -> Option<Assertion> {452 support::child(&self.syntax)453 }454 pub fn semi_token(&self) -> Option<SyntaxToken> {455 support::token(&self.syntax, T![;])456 }457 pub fn expr(&self) -> Option<Expr> {458 support::child(&self.syntax)459 }460}461462#[derive(Debug, Clone, PartialEq, Eq, Hash)]463pub struct Assertion {464 pub(crate) syntax: SyntaxNode,465}466impl Assertion {467 pub fn assert_kw_token(&self) -> Option<SyntaxToken> {468 support::token(&self.syntax, T![assert])469 }470 pub fn condition(&self) -> Option<LhsExpr> {471 support::child(&self.syntax)472 }473 pub fn colon_token(&self) -> Option<SyntaxToken> {474 support::token(&self.syntax, T![:])475 }476 pub fn message(&self) -> Option<Expr> {477 support::child(&self.syntax)478 }479}480481#[derive(Debug, Clone, PartialEq, Eq, Hash)]482pub struct ExprError {483 pub(crate) syntax: SyntaxNode,484}485impl ExprError {486 pub fn error_kw_token(&self) -> Option<SyntaxToken> {487 support::token(&self.syntax, T![error])488 }489 pub fn expr(&self) -> Option<Expr> {490 support::child(&self.syntax)491 }492}493494#[derive(Debug, Clone, PartialEq, Eq, Hash)]495pub struct SliceDescEnd {496 pub(crate) syntax: SyntaxNode,497}498impl SliceDescEnd {499 pub fn expr(&self) -> Option<Expr> {500 support::child(&self.syntax)501 }502}503504#[derive(Debug, Clone, PartialEq, Eq, Hash)]505pub struct SliceDescStep {506 pub(crate) syntax: SyntaxNode,507}508impl SliceDescStep {509 pub fn expr(&self) -> Option<Expr> {510 support::child(&self.syntax)511 }512}513514#[derive(Debug, Clone, PartialEq, Eq, Hash)]515pub struct Arg {516 pub(crate) syntax: SyntaxNode,517}518impl Arg {519 pub fn name(&self) -> Option<Name> {520 support::child(&self.syntax)521 }522 pub fn assign_token(&self) -> Option<SyntaxToken> {523 support::token(&self.syntax, T![=])524 }525 pub fn expr(&self) -> Option<Expr> {526 support::child(&self.syntax)527 }528}529530#[derive(Debug, Clone, PartialEq, Eq, Hash)]531pub struct ObjBodyComp {532 pub(crate) syntax: SyntaxNode,533}534impl ObjBodyComp {535 pub fn l_brace_token(&self) -> Option<SyntaxToken> {536 support::token(&self.syntax, T!['{'])537 }538 pub fn pre(&self) -> AstChildren<ObjLocalPostComma> {539 support::children(&self.syntax)540 }541 pub fn l_brack_token(&self) -> Option<SyntaxToken> {542 support::token(&self.syntax, T!['['])543 }544 pub fn key(&self) -> Option<LhsExpr> {545 support::child(&self.syntax)546 }547 pub fn r_brack_token(&self) -> Option<SyntaxToken> {548 support::token(&self.syntax, T![']'])549 }550 pub fn plus_token(&self) -> Option<SyntaxToken> {551 support::token(&self.syntax, T![+])552 }553 pub fn colon_token(&self) -> Option<SyntaxToken> {554 support::token(&self.syntax, T![:])555 }556 pub fn value(&self) -> Option<Expr> {557 support::child(&self.syntax)558 }559 pub fn post(&self) -> AstChildren<ObjLocalPreComma> {560 support::children(&self.syntax)561 }562 pub fn comp_specs(&self) -> AstChildren<CompSpec> {563 support::children(&self.syntax)564 }565 pub fn r_brace_token(&self) -> Option<SyntaxToken> {566 support::token(&self.syntax, T!['}'])567 }568}569570#[derive(Debug, Clone, PartialEq, Eq, Hash)]571pub struct ObjLocalPostComma {572 pub(crate) syntax: SyntaxNode,573}574impl ObjLocalPostComma {575 pub fn obj_local(&self) -> Option<ObjLocal> {576 support::child(&self.syntax)577 }578 pub fn comma_token(&self) -> Option<SyntaxToken> {579 support::token(&self.syntax, T![,])580 }581}582583#[derive(Debug, Clone, PartialEq, Eq, Hash)]584pub struct ObjLocalPreComma {585 pub(crate) syntax: SyntaxNode,586}587impl ObjLocalPreComma {588 pub fn comma_token(&self) -> Option<SyntaxToken> {589 support::token(&self.syntax, T![,])590 }591 pub fn obj_local(&self) -> Option<ObjLocal> {592 support::child(&self.syntax)593 }594}595596#[derive(Debug, Clone, PartialEq, Eq, Hash)]597pub struct ObjBodyMemberList {598 pub(crate) syntax: SyntaxNode,599}600impl ObjBodyMemberList {601 pub fn l_brace_token(&self) -> Option<SyntaxToken> {602 support::token(&self.syntax, T!['{'])603 }604 pub fn members(&self) -> AstChildren<Member> {605 support::children(&self.syntax)606 }607 pub fn r_brace_token(&self) -> Option<SyntaxToken> {608 support::token(&self.syntax, T!['}'])609 }610}611612#[derive(Debug, Clone, PartialEq, Eq, Hash)]613pub struct ObjLocal {614 pub(crate) syntax: SyntaxNode,615}616impl ObjLocal {617 pub fn local_kw_token(&self) -> Option<SyntaxToken> {618 support::token(&self.syntax, T![local])619 }620 pub fn bind(&self) -> Option<Bind> {621 support::child(&self.syntax)622 }623}624625#[derive(Debug, Clone, PartialEq, Eq, Hash)]626pub struct MemberBindStmt {627 pub(crate) syntax: SyntaxNode,628}629impl MemberBindStmt {630 pub fn obj_local(&self) -> Option<ObjLocal> {631 support::child(&self.syntax)632 }633}634635#[derive(Debug, Clone, PartialEq, Eq, Hash)]636pub struct MemberAssertStmt {637 pub(crate) syntax: SyntaxNode,638}639impl MemberAssertStmt {640 pub fn assertion(&self) -> Option<Assertion> {641 support::child(&self.syntax)642 }643}644645#[derive(Debug, Clone, PartialEq, Eq, Hash)]646pub struct MemberField {647 pub(crate) syntax: SyntaxNode,648}649impl MemberField {650 pub fn field(&self) -> Option<Field> {651 support::child(&self.syntax)652 }653}654655#[derive(Debug, Clone, PartialEq, Eq, Hash)]656pub struct FieldNormal {657 pub(crate) syntax: SyntaxNode,658}659impl FieldNormal {660 pub fn field_name(&self) -> Option<FieldName> {661 support::child(&self.syntax)662 }663 pub fn plus_token(&self) -> Option<SyntaxToken> {664 support::token(&self.syntax, T![+])665 }666 pub fn visibility(&self) -> Option<Visibility> {667 support::token_child(&self.syntax)668 }669 pub fn expr(&self) -> Option<Expr> {670 support::child(&self.syntax)671 }672}673674#[derive(Debug, Clone, PartialEq, Eq, Hash)]675pub struct FieldMethod {676 pub(crate) syntax: SyntaxNode,677}678impl FieldMethod {679 pub fn field_name(&self) -> Option<FieldName> {680 support::child(&self.syntax)681 }682 pub fn params_desc(&self) -> Option<ParamsDesc> {683 support::child(&self.syntax)684 }685 pub fn visibility(&self) -> Option<Visibility> {686 support::token_child(&self.syntax)687 }688 pub fn expr(&self) -> Option<Expr> {689 support::child(&self.syntax)690 }691}692693#[derive(Debug, Clone, PartialEq, Eq, Hash)]694pub struct FieldNameFixed {695 pub(crate) syntax: SyntaxNode,696}697impl FieldNameFixed {698 pub fn id(&self) -> Option<Name> {699 support::child(&self.syntax)700 }701 pub fn text(&self) -> Option<Text> {702 support::token_child(&self.syntax)703 }704}705706#[derive(Debug, Clone, PartialEq, Eq, Hash)]707pub struct FieldNameDynamic {708 pub(crate) syntax: SyntaxNode,709}710impl FieldNameDynamic {711 pub fn l_brack_token(&self) -> Option<SyntaxToken> {712 support::token(&self.syntax, T!['['])713 }714 pub fn expr(&self) -> Option<Expr> {715 support::child(&self.syntax)716 }717 pub fn r_brack_token(&self) -> Option<SyntaxToken> {718 support::token(&self.syntax, T![']'])719 }720}721722#[derive(Debug, Clone, PartialEq, Eq, Hash)]723pub struct ForSpec {724 pub(crate) syntax: SyntaxNode,725}726impl ForSpec {727 pub fn for_kw_token(&self) -> Option<SyntaxToken> {728 support::token(&self.syntax, T![for])729 }730 pub fn bind(&self) -> Option<Name> {731 support::child(&self.syntax)732 }733 pub fn in_kw_token(&self) -> Option<SyntaxToken> {734 support::token(&self.syntax, T![in])735 }736 pub fn expr(&self) -> Option<Expr> {737 support::child(&self.syntax)738 }739}740741#[derive(Debug, Clone, PartialEq, Eq, Hash)]742pub struct IfSpec {743 pub(crate) syntax: SyntaxNode,744}745impl IfSpec {746 pub fn if_kw_token(&self) -> Option<SyntaxToken> {747 support::token(&self.syntax, T![if])748 }749 pub fn expr(&self) -> Option<Expr> {750 support::child(&self.syntax)751 }752}753754#[derive(Debug, Clone, PartialEq, Eq, Hash)]755pub struct BindDestruct {756 pub(crate) syntax: SyntaxNode,757}758impl BindDestruct {759 pub fn into(&self) -> Option<Destruct> {760 support::child(&self.syntax)761 }762 pub fn assign_token(&self) -> Option<SyntaxToken> {763 support::token(&self.syntax, T![=])764 }765 pub fn value(&self) -> Option<Expr> {766 support::child(&self.syntax)767 }768}769770#[derive(Debug, Clone, PartialEq, Eq, Hash)]771pub struct BindFunction {772 pub(crate) syntax: SyntaxNode,773}774impl BindFunction {775 pub fn name(&self) -> Option<Name> {776 support::child(&self.syntax)777 }778 pub fn params(&self) -> Option<ParamsDesc> {779 support::child(&self.syntax)780 }781 pub fn assign_token(&self) -> Option<SyntaxToken> {782 support::token(&self.syntax, T![=])783 }784 pub fn value(&self) -> Option<Expr> {785 support::child(&self.syntax)786 }787}788789#[derive(Debug, Clone, PartialEq, Eq, Hash)]790pub struct Param {791 pub(crate) syntax: SyntaxNode,792}793impl Param {794 pub fn destruct(&self) -> Option<Destruct> {795 support::child(&self.syntax)796 }797 pub fn assign_token(&self) -> Option<SyntaxToken> {798 support::token(&self.syntax, T![=])799 }800 pub fn expr(&self) -> Option<Expr> {801 support::child(&self.syntax)802 }803}804805#[derive(Debug, Clone, PartialEq, Eq, Hash)]806pub struct DestructFull {807 pub(crate) syntax: SyntaxNode,808}809impl DestructFull {810 pub fn name(&self) -> Option<Name> {811 support::child(&self.syntax)812 }813}814815#[derive(Debug, Clone, PartialEq, Eq, Hash)]816pub struct DestructSkip {817 pub(crate) syntax: SyntaxNode,818}819impl DestructSkip {820 pub fn question_mark_token(&self) -> Option<SyntaxToken> {821 support::token(&self.syntax, T![?])822 }823}824825#[derive(Debug, Clone, PartialEq, Eq, Hash)]826pub struct DestructArray {827 pub(crate) syntax: SyntaxNode,828}829impl DestructArray {830 pub fn l_brack_token(&self) -> Option<SyntaxToken> {831 support::token(&self.syntax, T!['['])832 }833 pub fn destruct_array_parts(&self) -> AstChildren<DestructArrayPart> {834 support::children(&self.syntax)835 }836 pub fn r_brack_token(&self) -> Option<SyntaxToken> {837 support::token(&self.syntax, T![']'])838 }839}840841#[derive(Debug, Clone, PartialEq, Eq, Hash)]842pub struct DestructObject {843 pub(crate) syntax: SyntaxNode,844}845impl DestructObject {846 pub fn l_brace_token(&self) -> Option<SyntaxToken> {847 support::token(&self.syntax, T!['{'])848 }849 pub fn destruct_object_fields(&self) -> AstChildren<DestructObjectField> {850 support::children(&self.syntax)851 }852 pub fn destruct_rest(&self) -> Option<DestructRest> {853 support::child(&self.syntax)854 }855 pub fn comma_token(&self) -> Option<SyntaxToken> {856 support::token(&self.syntax, T![,])857 }858 pub fn r_brace_token(&self) -> Option<SyntaxToken> {859 support::token(&self.syntax, T!['}'])860 }861}862863#[derive(Debug, Clone, PartialEq, Eq, Hash)]864pub struct DestructObjectField {865 pub(crate) syntax: SyntaxNode,866}867impl DestructObjectField {868 pub fn field(&self) -> Option<Name> {869 support::child(&self.syntax)870 }871 pub fn colon_token(&self) -> Option<SyntaxToken> {872 support::token(&self.syntax, T![:])873 }874 pub fn destruct(&self) -> Option<Destruct> {875 support::child(&self.syntax)876 }877 pub fn assign_token(&self) -> Option<SyntaxToken> {878 support::token(&self.syntax, T![=])879 }880 pub fn expr(&self) -> Option<Expr> {881 support::child(&self.syntax)882 }883}884885#[derive(Debug, Clone, PartialEq, Eq, Hash)]886pub struct DestructRest {887 pub(crate) syntax: SyntaxNode,888}889impl DestructRest {890 pub fn dotdotdot_token(&self) -> Option<SyntaxToken> {891 support::token(&self.syntax, T![...])892 }893 pub fn into(&self) -> Option<Name> {894 support::child(&self.syntax)895 }896}897898#[derive(Debug, Clone, PartialEq, Eq, Hash)]899pub struct DestructArrayElement {900 pub(crate) syntax: SyntaxNode,901}902impl DestructArrayElement {903 pub fn destruct(&self) -> Option<Destruct> {904 support::child(&self.syntax)905 }906}907908#[derive(Debug, Clone, PartialEq, Eq, Hash)]909pub enum Expr {910 ExprBinary(ExprBinary),911 ExprUnary(ExprUnary),912 ExprSlice(ExprSlice),913 ExprIndex(ExprIndex),914 ExprIndexExpr(ExprIndexExpr),915 ExprApply(ExprApply),916 ExprObjExtend(ExprObjExtend),917 ExprParened(ExprParened),918 ExprIntrinsicThisFile(ExprIntrinsicThisFile),919 ExprIntrinsicId(ExprIntrinsicId),920 ExprIntrinsic(ExprIntrinsic),921 ExprString(ExprString),922 ExprNumber(ExprNumber),923 ExprLiteral(ExprLiteral),924 ExprArray(ExprArray),925 ExprObject(ExprObject),926 ExprArrayComp(ExprArrayComp),927 ExprImport(ExprImport),928 ExprVar(ExprVar),929 ExprLocal(ExprLocal),930 ExprIfThenElse(ExprIfThenElse),931 ExprFunction(ExprFunction),932 ExprAssert(ExprAssert),933 ExprError(ExprError),934}935936#[derive(Debug, Clone, PartialEq, Eq, Hash)]937pub enum ObjBody {938 ObjBodyComp(ObjBodyComp),939 ObjBodyMemberList(ObjBodyMemberList),940}941942#[derive(Debug, Clone, PartialEq, Eq, Hash)]943pub enum CompSpec {944 ForSpec(ForSpec),945 IfSpec(IfSpec),946}947948#[derive(Debug, Clone, PartialEq, Eq, Hash)]949pub enum Bind {950 BindDestruct(BindDestruct),951 BindFunction(BindFunction),952}953954#[derive(Debug, Clone, PartialEq, Eq, Hash)]955pub enum Member {956 MemberBindStmt(MemberBindStmt),957 MemberAssertStmt(MemberAssertStmt),958 MemberField(MemberField),959}960961#[derive(Debug, Clone, PartialEq, Eq, Hash)]962pub enum Field {963 FieldNormal(FieldNormal),964 FieldMethod(FieldMethod),965}966967#[derive(Debug, Clone, PartialEq, Eq, Hash)]968pub enum FieldName {969 FieldNameFixed(FieldNameFixed),970 FieldNameDynamic(FieldNameDynamic),971}972973#[derive(Debug, Clone, PartialEq, Eq, Hash)]974pub enum Destruct {975 DestructFull(DestructFull),976 DestructSkip(DestructSkip),977 DestructArray(DestructArray),978 DestructObject(DestructObject),979}980981#[derive(Debug, Clone, PartialEq, Eq, Hash)]982pub enum DestructArrayPart {983 DestructArrayElement(DestructArrayElement),984 DestructRest(DestructRest),985}986987#[derive(Debug, Clone, PartialEq, Eq, Hash)]988pub struct BinaryOperator {989 syntax: SyntaxToken,990 kind: BinaryOperatorKind,991}992993#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]994pub enum BinaryOperatorKind {995 Or,996 And,997 BitOr,998 BitXor,999 BitAnd,1000 Eq,1001 Ne,1002 Lt,1003 Gt,1004 Le,1005 Ge,1006 InKw,1007 Lhs,1008 Rhs,1009 Plus,1010 Minus,1011 Mul,1012 Div,1013 Modulo,1014 MetaObjectApply,1015 ErrorNoOperator,1016}10171018#[derive(Debug, Clone, PartialEq, Eq, Hash)]1019pub struct UnaryOperator {1020 syntax: SyntaxToken,1021 kind: UnaryOperatorKind,1022}10231024#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]1025pub enum UnaryOperatorKind {1026 Minus,1027 Not,1028 BitNot,1029}10301031#[derive(Debug, Clone, PartialEq, Eq, Hash)]1032pub struct Literal {1033 syntax: SyntaxToken,1034 kind: LiteralKind,1035}10361037#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]1038pub enum LiteralKind {1039 NullKw,1040 TrueKw,1041 FalseKw,1042 SelfKw,1043 Dollar,1044 SuperKw,1045}10461047#[derive(Debug, Clone, PartialEq, Eq, Hash)]1048pub struct Text {1049 syntax: SyntaxToken,1050 kind: TextKind,1051}10521053#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]1054pub enum TextKind {1055 StringDouble,1056 ErrorStringDoubleUnterminated,1057 StringSingle,1058 ErrorStringSingleUnterminated,1059 StringDoubleVerbatim,1060 ErrorStringDoubleVerbatimUnterminated,1061 StringSingleVerbatim,1062 ErrorStringSingleVerbatimUnterminated,1063 ErrorStringVerbatimMissingQuotes,1064 StringBlock,1065 ErrorStringBlockUnexpectedEnd,1066 ErrorStringBlockMissingNewLine,1067 ErrorStringBlockMissingTermination,1068 ErrorStringBlockMissingIndent,1069}10701071#[derive(Debug, Clone, PartialEq, Eq, Hash)]1072pub struct Number {1073 syntax: SyntaxToken,1074 kind: NumberKind,1075}10761077#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]1078pub enum NumberKind {1079 Float,1080 ErrorFloatJunkAfterPoint,1081 ErrorFloatJunkAfterExponent,1082 ErrorFloatJunkAfterExponentSign,1083}10841085#[derive(Debug, Clone, PartialEq, Eq, Hash)]1086pub struct ImportKind {1087 syntax: SyntaxToken,1088 kind: ImportKindKind,1089}10901091#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]1092pub enum ImportKindKind {1093 ImportstrKw,1094 ImportbinKw,1095 ImportKw,1096}10971098#[derive(Debug, Clone, PartialEq, Eq, Hash)]1099pub struct Visibility {1100 syntax: SyntaxToken,1101 kind: VisibilityKind,1102}11031104#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]1105pub enum VisibilityKind {1106 Coloncoloncolon,1107 Coloncolon,1108 Colon,1109}11101111#[derive(Debug, Clone, PartialEq, Eq, Hash)]1112pub struct Trivia {1113 syntax: SyntaxToken,1114 kind: TriviaKind,1115}11161117#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]1118pub enum TriviaKind {1119 Whitespace,1120 MultiLineComment,1121 ErrorCommentTooShort,1122 ErrorCommentUnterminated,1123 SingleLineHashComment,1124 SingleLineSlashComment,1125}1126impl AstNode for SourceFile {1127 fn can_cast(kind: SyntaxKind) -> bool {1128 kind == SOURCE_FILE1129 }1130 fn cast(syntax: SyntaxNode) -> Option<Self> {1131 if Self::can_cast(syntax.kind()) {1132 Some(Self { syntax })1133 } else {1134 None1135 }1136 }1137 fn syntax(&self) -> &SyntaxNode {1138 &self.syntax1139 }1140}1141impl AstNode for ExprBinary {1142 fn can_cast(kind: SyntaxKind) -> bool {1143 kind == EXPR_BINARY1144 }1145 fn cast(syntax: SyntaxNode) -> Option<Self> {1146 if Self::can_cast(syntax.kind()) {1147 Some(Self { syntax })1148 } else {1149 None1150 }1151 }1152 fn syntax(&self) -> &SyntaxNode {1153 &self.syntax1154 }1155}1156impl AstNode for LhsExpr {1157 fn can_cast(kind: SyntaxKind) -> bool {1158 kind == LHS_EXPR1159 }1160 fn cast(syntax: SyntaxNode) -> Option<Self> {1161 if Self::can_cast(syntax.kind()) {1162 Some(Self { syntax })1163 } else {1164 None1165 }1166 }1167 fn syntax(&self) -> &SyntaxNode {1168 &self.syntax1169 }1170}1171impl AstNode for ExprUnary {1172 fn can_cast(kind: SyntaxKind) -> bool {1173 kind == EXPR_UNARY1174 }1175 fn cast(syntax: SyntaxNode) -> Option<Self> {1176 if Self::can_cast(syntax.kind()) {1177 Some(Self { syntax })1178 } else {1179 None1180 }1181 }1182 fn syntax(&self) -> &SyntaxNode {1183 &self.syntax1184 }1185}1186impl AstNode for ExprSlice {1187 fn can_cast(kind: SyntaxKind) -> bool {1188 kind == EXPR_SLICE1189 }1190 fn cast(syntax: SyntaxNode) -> Option<Self> {1191 if Self::can_cast(syntax.kind()) {1192 Some(Self { syntax })1193 } else {1194 None1195 }1196 }1197 fn syntax(&self) -> &SyntaxNode {1198 &self.syntax1199 }1200}1201impl AstNode for SliceDesc {1202 fn can_cast(kind: SyntaxKind) -> bool {1203 kind == SLICE_DESC1204 }1205 fn cast(syntax: SyntaxNode) -> Option<Self> {1206 if Self::can_cast(syntax.kind()) {1207 Some(Self { syntax })1208 } else {1209 None1210 }1211 }1212 fn syntax(&self) -> &SyntaxNode {1213 &self.syntax1214 }1215}1216impl AstNode for ExprIndex {1217 fn can_cast(kind: SyntaxKind) -> bool {1218 kind == EXPR_INDEX1219 }1220 fn cast(syntax: SyntaxNode) -> Option<Self> {1221 if Self::can_cast(syntax.kind()) {1222 Some(Self { syntax })1223 } else {1224 None1225 }1226 }1227 fn syntax(&self) -> &SyntaxNode {1228 &self.syntax1229 }1230}1231impl AstNode for Name {1232 fn can_cast(kind: SyntaxKind) -> bool {1233 kind == NAME1234 }1235 fn cast(syntax: SyntaxNode) -> Option<Self> {1236 if Self::can_cast(syntax.kind()) {1237 Some(Self { syntax })1238 } else {1239 None1240 }1241 }1242 fn syntax(&self) -> &SyntaxNode {1243 &self.syntax1244 }1245}1246impl AstNode for ExprIndexExpr {1247 fn can_cast(kind: SyntaxKind) -> bool {1248 kind == EXPR_INDEX_EXPR1249 }1250 fn cast(syntax: SyntaxNode) -> Option<Self> {1251 if Self::can_cast(syntax.kind()) {1252 Some(Self { syntax })1253 } else {1254 None1255 }1256 }1257 fn syntax(&self) -> &SyntaxNode {1258 &self.syntax1259 }1260}1261impl AstNode for ExprApply {1262 fn can_cast(kind: SyntaxKind) -> bool {1263 kind == EXPR_APPLY1264 }1265 fn cast(syntax: SyntaxNode) -> Option<Self> {1266 if Self::can_cast(syntax.kind()) {1267 Some(Self { syntax })1268 } else {1269 None1270 }1271 }1272 fn syntax(&self) -> &SyntaxNode {1273 &self.syntax1274 }1275}1276impl AstNode for ArgsDesc {1277 fn can_cast(kind: SyntaxKind) -> bool {1278 kind == ARGS_DESC1279 }1280 fn cast(syntax: SyntaxNode) -> Option<Self> {1281 if Self::can_cast(syntax.kind()) {1282 Some(Self { syntax })1283 } else {1284 None1285 }1286 }1287 fn syntax(&self) -> &SyntaxNode {1288 &self.syntax1289 }1290}1291impl AstNode for ExprObjExtend {1292 fn can_cast(kind: SyntaxKind) -> bool {1293 kind == EXPR_OBJ_EXTEND1294 }1295 fn cast(syntax: SyntaxNode) -> Option<Self> {1296 if Self::can_cast(syntax.kind()) {1297 Some(Self { syntax })1298 } else {1299 None1300 }1301 }1302 fn syntax(&self) -> &SyntaxNode {1303 &self.syntax1304 }1305}1306impl AstNode for ExprParened {1307 fn can_cast(kind: SyntaxKind) -> bool {1308 kind == EXPR_PARENED1309 }1310 fn cast(syntax: SyntaxNode) -> Option<Self> {1311 if Self::can_cast(syntax.kind()) {1312 Some(Self { syntax })1313 } else {1314 None1315 }1316 }1317 fn syntax(&self) -> &SyntaxNode {1318 &self.syntax1319 }1320}1321impl AstNode for ExprLiteral {1322 fn can_cast(kind: SyntaxKind) -> bool {1323 kind == EXPR_LITERAL1324 }1325 fn cast(syntax: SyntaxNode) -> Option<Self> {1326 if Self::can_cast(syntax.kind()) {1327 Some(Self { syntax })1328 } else {1329 None1330 }1331 }1332 fn syntax(&self) -> &SyntaxNode {1333 &self.syntax1334 }1335}1336impl AstNode for ExprIntrinsicThisFile {1337 fn can_cast(kind: SyntaxKind) -> bool {1338 kind == EXPR_INTRINSIC_THIS_FILE1339 }1340 fn cast(syntax: SyntaxNode) -> Option<Self> {1341 if Self::can_cast(syntax.kind()) {1342 Some(Self { syntax })1343 } else {1344 None1345 }1346 }1347 fn syntax(&self) -> &SyntaxNode {1348 &self.syntax1349 }1350}1351impl AstNode for ExprIntrinsicId {1352 fn can_cast(kind: SyntaxKind) -> bool {1353 kind == EXPR_INTRINSIC_ID1354 }1355 fn cast(syntax: SyntaxNode) -> Option<Self> {1356 if Self::can_cast(syntax.kind()) {1357 Some(Self { syntax })1358 } else {1359 None1360 }1361 }1362 fn syntax(&self) -> &SyntaxNode {1363 &self.syntax1364 }1365}1366impl AstNode for ExprIntrinsic {1367 fn can_cast(kind: SyntaxKind) -> bool {1368 kind == EXPR_INTRINSIC1369 }1370 fn cast(syntax: SyntaxNode) -> Option<Self> {1371 if Self::can_cast(syntax.kind()) {1372 Some(Self { syntax })1373 } else {1374 None1375 }1376 }1377 fn syntax(&self) -> &SyntaxNode {1378 &self.syntax1379 }1380}1381impl AstNode for ExprString {1382 fn can_cast(kind: SyntaxKind) -> bool {1383 kind == EXPR_STRING1384 }1385 fn cast(syntax: SyntaxNode) -> Option<Self> {1386 if Self::can_cast(syntax.kind()) {1387 Some(Self { syntax })1388 } else {1389 None1390 }1391 }1392 fn syntax(&self) -> &SyntaxNode {1393 &self.syntax1394 }1395}1396impl AstNode for ExprNumber {1397 fn can_cast(kind: SyntaxKind) -> bool {1398 kind == EXPR_NUMBER1399 }1400 fn cast(syntax: SyntaxNode) -> Option<Self> {1401 if Self::can_cast(syntax.kind()) {1402 Some(Self { syntax })1403 } else {1404 None1405 }1406 }1407 fn syntax(&self) -> &SyntaxNode {1408 &self.syntax1409 }1410}1411impl AstNode for ExprArray {1412 fn can_cast(kind: SyntaxKind) -> bool {1413 kind == EXPR_ARRAY1414 }1415 fn cast(syntax: SyntaxNode) -> Option<Self> {1416 if Self::can_cast(syntax.kind()) {1417 Some(Self { syntax })1418 } else {1419 None1420 }1421 }1422 fn syntax(&self) -> &SyntaxNode {1423 &self.syntax1424 }1425}1426impl AstNode for ExprObject {1427 fn can_cast(kind: SyntaxKind) -> bool {1428 kind == EXPR_OBJECT1429 }1430 fn cast(syntax: SyntaxNode) -> Option<Self> {1431 if Self::can_cast(syntax.kind()) {1432 Some(Self { syntax })1433 } else {1434 None1435 }1436 }1437 fn syntax(&self) -> &SyntaxNode {1438 &self.syntax1439 }1440}1441impl AstNode for ExprArrayComp {1442 fn can_cast(kind: SyntaxKind) -> bool {1443 kind == EXPR_ARRAY_COMP1444 }1445 fn cast(syntax: SyntaxNode) -> Option<Self> {1446 if Self::can_cast(syntax.kind()) {1447 Some(Self { syntax })1448 } else {1449 None1450 }1451 }1452 fn syntax(&self) -> &SyntaxNode {1453 &self.syntax1454 }1455}1456impl AstNode for ExprImport {1457 fn can_cast(kind: SyntaxKind) -> bool {1458 kind == EXPR_IMPORT1459 }1460 fn cast(syntax: SyntaxNode) -> Option<Self> {1461 if Self::can_cast(syntax.kind()) {1462 Some(Self { syntax })1463 } else {1464 None1465 }1466 }1467 fn syntax(&self) -> &SyntaxNode {1468 &self.syntax1469 }1470}1471impl AstNode for ExprVar {1472 fn can_cast(kind: SyntaxKind) -> bool {1473 kind == EXPR_VAR1474 }1475 fn cast(syntax: SyntaxNode) -> Option<Self> {1476 if Self::can_cast(syntax.kind()) {1477 Some(Self { syntax })1478 } else {1479 None1480 }1481 }1482 fn syntax(&self) -> &SyntaxNode {1483 &self.syntax1484 }1485}1486impl AstNode for ExprLocal {1487 fn can_cast(kind: SyntaxKind) -> bool {1488 kind == EXPR_LOCAL1489 }1490 fn cast(syntax: SyntaxNode) -> Option<Self> {1491 if Self::can_cast(syntax.kind()) {1492 Some(Self { syntax })1493 } else {1494 None1495 }1496 }1497 fn syntax(&self) -> &SyntaxNode {1498 &self.syntax1499 }1500}1501impl AstNode for ExprIfThenElse {1502 fn can_cast(kind: SyntaxKind) -> bool {1503 kind == EXPR_IF_THEN_ELSE1504 }1505 fn cast(syntax: SyntaxNode) -> Option<Self> {1506 if Self::can_cast(syntax.kind()) {1507 Some(Self { syntax })1508 } else {1509 None1510 }1511 }1512 fn syntax(&self) -> &SyntaxNode {1513 &self.syntax1514 }1515}1516impl AstNode for TrueExpr {1517 fn can_cast(kind: SyntaxKind) -> bool {1518 kind == TRUE_EXPR1519 }1520 fn cast(syntax: SyntaxNode) -> Option<Self> {1521 if Self::can_cast(syntax.kind()) {1522 Some(Self { syntax })1523 } else {1524 None1525 }1526 }1527 fn syntax(&self) -> &SyntaxNode {1528 &self.syntax1529 }1530}1531impl AstNode for FalseExpr {1532 fn can_cast(kind: SyntaxKind) -> bool {1533 kind == FALSE_EXPR1534 }1535 fn cast(syntax: SyntaxNode) -> Option<Self> {1536 if Self::can_cast(syntax.kind()) {1537 Some(Self { syntax })1538 } else {1539 None1540 }1541 }1542 fn syntax(&self) -> &SyntaxNode {1543 &self.syntax1544 }1545}1546impl AstNode for ExprFunction {1547 fn can_cast(kind: SyntaxKind) -> bool {1548 kind == EXPR_FUNCTION1549 }1550 fn cast(syntax: SyntaxNode) -> Option<Self> {1551 if Self::can_cast(syntax.kind()) {1552 Some(Self { syntax })1553 } else {1554 None1555 }1556 }1557 fn syntax(&self) -> &SyntaxNode {1558 &self.syntax1559 }1560}1561impl AstNode for ParamsDesc {1562 fn can_cast(kind: SyntaxKind) -> bool {1563 kind == PARAMS_DESC1564 }1565 fn cast(syntax: SyntaxNode) -> Option<Self> {1566 if Self::can_cast(syntax.kind()) {1567 Some(Self { syntax })1568 } else {1569 None1570 }1571 }1572 fn syntax(&self) -> &SyntaxNode {1573 &self.syntax1574 }1575}1576impl AstNode for ExprAssert {1577 fn can_cast(kind: SyntaxKind) -> bool {1578 kind == EXPR_ASSERT1579 }1580 fn cast(syntax: SyntaxNode) -> Option<Self> {1581 if Self::can_cast(syntax.kind()) {1582 Some(Self { syntax })1583 } else {1584 None1585 }1586 }1587 fn syntax(&self) -> &SyntaxNode {1588 &self.syntax1589 }1590}1591impl AstNode for Assertion {1592 fn can_cast(kind: SyntaxKind) -> bool {1593 kind == ASSERTION1594 }1595 fn cast(syntax: SyntaxNode) -> Option<Self> {1596 if Self::can_cast(syntax.kind()) {1597 Some(Self { syntax })1598 } else {1599 None1600 }1601 }1602 fn syntax(&self) -> &SyntaxNode {1603 &self.syntax1604 }1605}1606impl AstNode for ExprError {1607 fn can_cast(kind: SyntaxKind) -> bool {1608 kind == EXPR_ERROR1609 }1610 fn cast(syntax: SyntaxNode) -> Option<Self> {1611 if Self::can_cast(syntax.kind()) {1612 Some(Self { syntax })1613 } else {1614 None1615 }1616 }1617 fn syntax(&self) -> &SyntaxNode {1618 &self.syntax1619 }1620}1621impl AstNode for SliceDescEnd {1622 fn can_cast(kind: SyntaxKind) -> bool {1623 kind == SLICE_DESC_END1624 }1625 fn cast(syntax: SyntaxNode) -> Option<Self> {1626 if Self::can_cast(syntax.kind()) {1627 Some(Self { syntax })1628 } else {1629 None1630 }1631 }1632 fn syntax(&self) -> &SyntaxNode {1633 &self.syntax1634 }1635}1636impl AstNode for SliceDescStep {1637 fn can_cast(kind: SyntaxKind) -> bool {1638 kind == SLICE_DESC_STEP1639 }1640 fn cast(syntax: SyntaxNode) -> Option<Self> {1641 if Self::can_cast(syntax.kind()) {1642 Some(Self { syntax })1643 } else {1644 None1645 }1646 }1647 fn syntax(&self) -> &SyntaxNode {1648 &self.syntax1649 }1650}1651impl AstNode for Arg {1652 fn can_cast(kind: SyntaxKind) -> bool {1653 kind == ARG1654 }1655 fn cast(syntax: SyntaxNode) -> Option<Self> {1656 if Self::can_cast(syntax.kind()) {1657 Some(Self { syntax })1658 } else {1659 None1660 }1661 }1662 fn syntax(&self) -> &SyntaxNode {1663 &self.syntax1664 }1665}1666impl AstNode for ObjBodyComp {1667 fn can_cast(kind: SyntaxKind) -> bool {1668 kind == OBJ_BODY_COMP1669 }1670 fn cast(syntax: SyntaxNode) -> Option<Self> {1671 if Self::can_cast(syntax.kind()) {1672 Some(Self { syntax })1673 } else {1674 None1675 }1676 }1677 fn syntax(&self) -> &SyntaxNode {1678 &self.syntax1679 }1680}1681impl AstNode for ObjLocalPostComma {1682 fn can_cast(kind: SyntaxKind) -> bool {1683 kind == OBJ_LOCAL_POST_COMMA1684 }1685 fn cast(syntax: SyntaxNode) -> Option<Self> {1686 if Self::can_cast(syntax.kind()) {1687 Some(Self { syntax })1688 } else {1689 None1690 }1691 }1692 fn syntax(&self) -> &SyntaxNode {1693 &self.syntax1694 }1695}1696impl AstNode for ObjLocalPreComma {1697 fn can_cast(kind: SyntaxKind) -> bool {1698 kind == OBJ_LOCAL_PRE_COMMA1699 }1700 fn cast(syntax: SyntaxNode) -> Option<Self> {1701 if Self::can_cast(syntax.kind()) {1702 Some(Self { syntax })1703 } else {1704 None1705 }1706 }1707 fn syntax(&self) -> &SyntaxNode {1708 &self.syntax1709 }1710}1711impl AstNode for ObjBodyMemberList {1712 fn can_cast(kind: SyntaxKind) -> bool {1713 kind == OBJ_BODY_MEMBER_LIST1714 }1715 fn cast(syntax: SyntaxNode) -> Option<Self> {1716 if Self::can_cast(syntax.kind()) {1717 Some(Self { syntax })1718 } else {1719 None1720 }1721 }1722 fn syntax(&self) -> &SyntaxNode {1723 &self.syntax1724 }1725}1726impl AstNode for ObjLocal {1727 fn can_cast(kind: SyntaxKind) -> bool {1728 kind == OBJ_LOCAL1729 }1730 fn cast(syntax: SyntaxNode) -> Option<Self> {1731 if Self::can_cast(syntax.kind()) {1732 Some(Self { syntax })1733 } else {1734 None1735 }1736 }1737 fn syntax(&self) -> &SyntaxNode {1738 &self.syntax1739 }1740}1741impl AstNode for MemberBindStmt {1742 fn can_cast(kind: SyntaxKind) -> bool {1743 kind == MEMBER_BIND_STMT1744 }1745 fn cast(syntax: SyntaxNode) -> Option<Self> {1746 if Self::can_cast(syntax.kind()) {1747 Some(Self { syntax })1748 } else {1749 None1750 }1751 }1752 fn syntax(&self) -> &SyntaxNode {1753 &self.syntax1754 }1755}1756impl AstNode for MemberAssertStmt {1757 fn can_cast(kind: SyntaxKind) -> bool {1758 kind == MEMBER_ASSERT_STMT1759 }1760 fn cast(syntax: SyntaxNode) -> Option<Self> {1761 if Self::can_cast(syntax.kind()) {1762 Some(Self { syntax })1763 } else {1764 None1765 }1766 }1767 fn syntax(&self) -> &SyntaxNode {1768 &self.syntax1769 }1770}1771impl AstNode for MemberField {1772 fn can_cast(kind: SyntaxKind) -> bool {1773 kind == MEMBER_FIELD1774 }1775 fn cast(syntax: SyntaxNode) -> Option<Self> {1776 if Self::can_cast(syntax.kind()) {1777 Some(Self { syntax })1778 } else {1779 None1780 }1781 }1782 fn syntax(&self) -> &SyntaxNode {1783 &self.syntax1784 }1785}1786impl AstNode for FieldNormal {1787 fn can_cast(kind: SyntaxKind) -> bool {1788 kind == FIELD_NORMAL1789 }1790 fn cast(syntax: SyntaxNode) -> Option<Self> {1791 if Self::can_cast(syntax.kind()) {1792 Some(Self { syntax })1793 } else {1794 None1795 }1796 }1797 fn syntax(&self) -> &SyntaxNode {1798 &self.syntax1799 }1800}1801impl AstNode for FieldMethod {1802 fn can_cast(kind: SyntaxKind) -> bool {1803 kind == FIELD_METHOD1804 }1805 fn cast(syntax: SyntaxNode) -> Option<Self> {1806 if Self::can_cast(syntax.kind()) {1807 Some(Self { syntax })1808 } else {1809 None1810 }1811 }1812 fn syntax(&self) -> &SyntaxNode {1813 &self.syntax1814 }1815}1816impl AstNode for FieldNameFixed {1817 fn can_cast(kind: SyntaxKind) -> bool {1818 kind == FIELD_NAME_FIXED1819 }1820 fn cast(syntax: SyntaxNode) -> Option<Self> {1821 if Self::can_cast(syntax.kind()) {1822 Some(Self { syntax })1823 } else {1824 None1825 }1826 }1827 fn syntax(&self) -> &SyntaxNode {1828 &self.syntax1829 }1830}1831impl AstNode for FieldNameDynamic {1832 fn can_cast(kind: SyntaxKind) -> bool {1833 kind == FIELD_NAME_DYNAMIC1834 }1835 fn cast(syntax: SyntaxNode) -> Option<Self> {1836 if Self::can_cast(syntax.kind()) {1837 Some(Self { syntax })1838 } else {1839 None1840 }1841 }1842 fn syntax(&self) -> &SyntaxNode {1843 &self.syntax1844 }1845}1846impl AstNode for ForSpec {1847 fn can_cast(kind: SyntaxKind) -> bool {1848 kind == FOR_SPEC1849 }1850 fn cast(syntax: SyntaxNode) -> Option<Self> {1851 if Self::can_cast(syntax.kind()) {1852 Some(Self { syntax })1853 } else {1854 None1855 }1856 }1857 fn syntax(&self) -> &SyntaxNode {1858 &self.syntax1859 }1860}1861impl AstNode for IfSpec {1862 fn can_cast(kind: SyntaxKind) -> bool {1863 kind == IF_SPEC1864 }1865 fn cast(syntax: SyntaxNode) -> Option<Self> {1866 if Self::can_cast(syntax.kind()) {1867 Some(Self { syntax })1868 } else {1869 None1870 }1871 }1872 fn syntax(&self) -> &SyntaxNode {1873 &self.syntax1874 }1875}1876impl AstNode for BindDestruct {1877 fn can_cast(kind: SyntaxKind) -> bool {1878 kind == BIND_DESTRUCT1879 }1880 fn cast(syntax: SyntaxNode) -> Option<Self> {1881 if Self::can_cast(syntax.kind()) {1882 Some(Self { syntax })1883 } else {1884 None1885 }1886 }1887 fn syntax(&self) -> &SyntaxNode {1888 &self.syntax1889 }1890}1891impl AstNode for BindFunction {1892 fn can_cast(kind: SyntaxKind) -> bool {1893 kind == BIND_FUNCTION1894 }1895 fn cast(syntax: SyntaxNode) -> Option<Self> {1896 if Self::can_cast(syntax.kind()) {1897 Some(Self { syntax })1898 } else {1899 None1900 }1901 }1902 fn syntax(&self) -> &SyntaxNode {1903 &self.syntax1904 }1905}1906impl AstNode for Param {1907 fn can_cast(kind: SyntaxKind) -> bool {1908 kind == PARAM1909 }1910 fn cast(syntax: SyntaxNode) -> Option<Self> {1911 if Self::can_cast(syntax.kind()) {1912 Some(Self { syntax })1913 } else {1914 None1915 }1916 }1917 fn syntax(&self) -> &SyntaxNode {1918 &self.syntax1919 }1920}1921impl AstNode for DestructFull {1922 fn can_cast(kind: SyntaxKind) -> bool {1923 kind == DESTRUCT_FULL1924 }1925 fn cast(syntax: SyntaxNode) -> Option<Self> {1926 if Self::can_cast(syntax.kind()) {1927 Some(Self { syntax })1928 } else {1929 None1930 }1931 }1932 fn syntax(&self) -> &SyntaxNode {1933 &self.syntax1934 }1935}1936impl AstNode for DestructSkip {1937 fn can_cast(kind: SyntaxKind) -> bool {1938 kind == DESTRUCT_SKIP1939 }1940 fn cast(syntax: SyntaxNode) -> Option<Self> {1941 if Self::can_cast(syntax.kind()) {1942 Some(Self { syntax })1943 } else {1944 None1945 }1946 }1947 fn syntax(&self) -> &SyntaxNode {1948 &self.syntax1949 }1950}1951impl AstNode for DestructArray {1952 fn can_cast(kind: SyntaxKind) -> bool {1953 kind == DESTRUCT_ARRAY1954 }1955 fn cast(syntax: SyntaxNode) -> Option<Self> {1956 if Self::can_cast(syntax.kind()) {1957 Some(Self { syntax })1958 } else {1959 None1960 }1961 }1962 fn syntax(&self) -> &SyntaxNode {1963 &self.syntax1964 }1965}1966impl AstNode for DestructObject {1967 fn can_cast(kind: SyntaxKind) -> bool {1968 kind == DESTRUCT_OBJECT1969 }1970 fn cast(syntax: SyntaxNode) -> Option<Self> {1971 if Self::can_cast(syntax.kind()) {1972 Some(Self { syntax })1973 } else {1974 None1975 }1976 }1977 fn syntax(&self) -> &SyntaxNode {1978 &self.syntax1979 }1980}1981impl AstNode for DestructObjectField {1982 fn can_cast(kind: SyntaxKind) -> bool {1983 kind == DESTRUCT_OBJECT_FIELD1984 }1985 fn cast(syntax: SyntaxNode) -> Option<Self> {1986 if Self::can_cast(syntax.kind()) {1987 Some(Self { syntax })1988 } else {1989 None1990 }1991 }1992 fn syntax(&self) -> &SyntaxNode {1993 &self.syntax1994 }1995}1996impl AstNode for DestructRest {1997 fn can_cast(kind: SyntaxKind) -> bool {1998 kind == DESTRUCT_REST1999 }2000 fn cast(syntax: SyntaxNode) -> Option<Self> {2001 if Self::can_cast(syntax.kind()) {2002 Some(Self { syntax })2003 } else {2004 None2005 }2006 }2007 fn syntax(&self) -> &SyntaxNode {2008 &self.syntax2009 }2010}2011impl AstNode for DestructArrayElement {2012 fn can_cast(kind: SyntaxKind) -> bool {2013 kind == DESTRUCT_ARRAY_ELEMENT2014 }2015 fn cast(syntax: SyntaxNode) -> Option<Self> {2016 if Self::can_cast(syntax.kind()) {2017 Some(Self { syntax })2018 } else {2019 None2020 }2021 }2022 fn syntax(&self) -> &SyntaxNode {2023 &self.syntax2024 }2025}2026impl From<ExprBinary> for Expr {2027 fn from(node: ExprBinary) -> Expr {2028 Expr::ExprBinary(node)2029 }2030}2031impl From<ExprUnary> for Expr {2032 fn from(node: ExprUnary) -> Expr {2033 Expr::ExprUnary(node)2034 }2035}2036impl From<ExprSlice> for Expr {2037 fn from(node: ExprSlice) -> Expr {2038 Expr::ExprSlice(node)2039 }2040}2041impl From<ExprIndex> for Expr {2042 fn from(node: ExprIndex) -> Expr {2043 Expr::ExprIndex(node)2044 }2045}2046impl From<ExprIndexExpr> for Expr {2047 fn from(node: ExprIndexExpr) -> Expr {2048 Expr::ExprIndexExpr(node)2049 }2050}2051impl From<ExprApply> for Expr {2052 fn from(node: ExprApply) -> Expr {2053 Expr::ExprApply(node)2054 }2055}2056impl From<ExprObjExtend> for Expr {2057 fn from(node: ExprObjExtend) -> Expr {2058 Expr::ExprObjExtend(node)2059 }2060}2061impl From<ExprParened> for Expr {2062 fn from(node: ExprParened) -> Expr {2063 Expr::ExprParened(node)2064 }2065}2066impl From<ExprIntrinsicThisFile> for Expr {2067 fn from(node: ExprIntrinsicThisFile) -> Expr {2068 Expr::ExprIntrinsicThisFile(node)2069 }2070}2071impl From<ExprIntrinsicId> for Expr {2072 fn from(node: ExprIntrinsicId) -> Expr {2073 Expr::ExprIntrinsicId(node)2074 }2075}2076impl From<ExprIntrinsic> for Expr {2077 fn from(node: ExprIntrinsic) -> Expr {2078 Expr::ExprIntrinsic(node)2079 }2080}2081impl From<ExprString> for Expr {2082 fn from(node: ExprString) -> Expr {2083 Expr::ExprString(node)2084 }2085}2086impl From<ExprNumber> for Expr {2087 fn from(node: ExprNumber) -> Expr {2088 Expr::ExprNumber(node)2089 }2090}2091impl From<ExprLiteral> for Expr {2092 fn from(node: ExprLiteral) -> Expr {2093 Expr::ExprLiteral(node)2094 }2095}2096impl From<ExprArray> for Expr {2097 fn from(node: ExprArray) -> Expr {2098 Expr::ExprArray(node)2099 }2100}2101impl From<ExprObject> for Expr {2102 fn from(node: ExprObject) -> Expr {2103 Expr::ExprObject(node)2104 }2105}2106impl From<ExprArrayComp> for Expr {2107 fn from(node: ExprArrayComp) -> Expr {2108 Expr::ExprArrayComp(node)2109 }2110}2111impl From<ExprImport> for Expr {2112 fn from(node: ExprImport) -> Expr {2113 Expr::ExprImport(node)2114 }2115}2116impl From<ExprVar> for Expr {2117 fn from(node: ExprVar) -> Expr {2118 Expr::ExprVar(node)2119 }2120}2121impl From<ExprLocal> for Expr {2122 fn from(node: ExprLocal) -> Expr {2123 Expr::ExprLocal(node)2124 }2125}2126impl From<ExprIfThenElse> for Expr {2127 fn from(node: ExprIfThenElse) -> Expr {2128 Expr::ExprIfThenElse(node)2129 }2130}2131impl From<ExprFunction> for Expr {2132 fn from(node: ExprFunction) -> Expr {2133 Expr::ExprFunction(node)2134 }2135}2136impl From<ExprAssert> for Expr {2137 fn from(node: ExprAssert) -> Expr {2138 Expr::ExprAssert(node)2139 }2140}2141impl From<ExprError> for Expr {2142 fn from(node: ExprError) -> Expr {2143 Expr::ExprError(node)2144 }2145}2146impl AstNode for Expr {2147 fn can_cast(kind: SyntaxKind) -> bool {2148 match kind {2149 EXPR_BINARY2150 | EXPR_UNARY2151 | EXPR_SLICE2152 | EXPR_INDEX2153 | EXPR_INDEX_EXPR2154 | EXPR_APPLY2155 | EXPR_OBJ_EXTEND2156 | EXPR_PARENED2157 | EXPR_INTRINSIC_THIS_FILE2158 | EXPR_INTRINSIC_ID2159 | EXPR_INTRINSIC2160 | EXPR_STRING2161 | EXPR_NUMBER2162 | EXPR_LITERAL2163 | EXPR_ARRAY2164 | EXPR_OBJECT2165 | EXPR_ARRAY_COMP2166 | EXPR_IMPORT2167 | EXPR_VAR2168 | EXPR_LOCAL2169 | EXPR_IF_THEN_ELSE2170 | EXPR_FUNCTION2171 | EXPR_ASSERT2172 | EXPR_ERROR => true,2173 _ => false,2174 }2175 }2176 fn cast(syntax: SyntaxNode) -> Option<Self> {2177 let res = match syntax.kind() {2178 EXPR_BINARY => Expr::ExprBinary(ExprBinary { syntax }),2179 EXPR_UNARY => Expr::ExprUnary(ExprUnary { syntax }),2180 EXPR_SLICE => Expr::ExprSlice(ExprSlice { syntax }),2181 EXPR_INDEX => Expr::ExprIndex(ExprIndex { syntax }),2182 EXPR_INDEX_EXPR => Expr::ExprIndexExpr(ExprIndexExpr { syntax }),2183 EXPR_APPLY => Expr::ExprApply(ExprApply { syntax }),2184 EXPR_OBJ_EXTEND => Expr::ExprObjExtend(ExprObjExtend { syntax }),2185 EXPR_PARENED => Expr::ExprParened(ExprParened { syntax }),2186 EXPR_INTRINSIC_THIS_FILE => {2187 Expr::ExprIntrinsicThisFile(ExprIntrinsicThisFile { syntax })2188 }2189 EXPR_INTRINSIC_ID => Expr::ExprIntrinsicId(ExprIntrinsicId { syntax }),2190 EXPR_INTRINSIC => Expr::ExprIntrinsic(ExprIntrinsic { syntax }),2191 EXPR_STRING => Expr::ExprString(ExprString { syntax }),2192 EXPR_NUMBER => Expr::ExprNumber(ExprNumber { syntax }),2193 EXPR_LITERAL => Expr::ExprLiteral(ExprLiteral { syntax }),2194 EXPR_ARRAY => Expr::ExprArray(ExprArray { syntax }),2195 EXPR_OBJECT => Expr::ExprObject(ExprObject { syntax }),2196 EXPR_ARRAY_COMP => Expr::ExprArrayComp(ExprArrayComp { syntax }),2197 EXPR_IMPORT => Expr::ExprImport(ExprImport { syntax }),2198 EXPR_VAR => Expr::ExprVar(ExprVar { syntax }),2199 EXPR_LOCAL => Expr::ExprLocal(ExprLocal { syntax }),2200 EXPR_IF_THEN_ELSE => Expr::ExprIfThenElse(ExprIfThenElse { syntax }),2201 EXPR_FUNCTION => Expr::ExprFunction(ExprFunction { syntax }),2202 EXPR_ASSERT => Expr::ExprAssert(ExprAssert { syntax }),2203 EXPR_ERROR => Expr::ExprError(ExprError { syntax }),2204 _ => return None,2205 };2206 Some(res)2207 }2208 fn syntax(&self) -> &SyntaxNode {2209 match self {2210 Expr::ExprBinary(it) => &it.syntax,2211 Expr::ExprUnary(it) => &it.syntax,2212 Expr::ExprSlice(it) => &it.syntax,2213 Expr::ExprIndex(it) => &it.syntax,2214 Expr::ExprIndexExpr(it) => &it.syntax,2215 Expr::ExprApply(it) => &it.syntax,2216 Expr::ExprObjExtend(it) => &it.syntax,2217 Expr::ExprParened(it) => &it.syntax,2218 Expr::ExprIntrinsicThisFile(it) => &it.syntax,2219 Expr::ExprIntrinsicId(it) => &it.syntax,2220 Expr::ExprIntrinsic(it) => &it.syntax,2221 Expr::ExprString(it) => &it.syntax,2222 Expr::ExprNumber(it) => &it.syntax,2223 Expr::ExprLiteral(it) => &it.syntax,2224 Expr::ExprArray(it) => &it.syntax,2225 Expr::ExprObject(it) => &it.syntax,2226 Expr::ExprArrayComp(it) => &it.syntax,2227 Expr::ExprImport(it) => &it.syntax,2228 Expr::ExprVar(it) => &it.syntax,2229 Expr::ExprLocal(it) => &it.syntax,2230 Expr::ExprIfThenElse(it) => &it.syntax,2231 Expr::ExprFunction(it) => &it.syntax,2232 Expr::ExprAssert(it) => &it.syntax,2233 Expr::ExprError(it) => &it.syntax,2234 }2235 }2236}2237impl From<ObjBodyComp> for ObjBody {2238 fn from(node: ObjBodyComp) -> ObjBody {2239 ObjBody::ObjBodyComp(node)2240 }2241}2242impl From<ObjBodyMemberList> for ObjBody {2243 fn from(node: ObjBodyMemberList) -> ObjBody {2244 ObjBody::ObjBodyMemberList(node)2245 }2246}2247impl AstNode for ObjBody {2248 fn can_cast(kind: SyntaxKind) -> bool {2249 match kind {2250 OBJ_BODY_COMP | OBJ_BODY_MEMBER_LIST => true,2251 _ => false,2252 }2253 }2254 fn cast(syntax: SyntaxNode) -> Option<Self> {2255 let res = match syntax.kind() {2256 OBJ_BODY_COMP => ObjBody::ObjBodyComp(ObjBodyComp { syntax }),2257 OBJ_BODY_MEMBER_LIST => ObjBody::ObjBodyMemberList(ObjBodyMemberList { syntax }),2258 _ => return None,2259 };2260 Some(res)2261 }2262 fn syntax(&self) -> &SyntaxNode {2263 match self {2264 ObjBody::ObjBodyComp(it) => &it.syntax,2265 ObjBody::ObjBodyMemberList(it) => &it.syntax,2266 }2267 }2268}2269impl From<ForSpec> for CompSpec {2270 fn from(node: ForSpec) -> CompSpec {2271 CompSpec::ForSpec(node)2272 }2273}2274impl From<IfSpec> for CompSpec {2275 fn from(node: IfSpec) -> CompSpec {2276 CompSpec::IfSpec(node)2277 }2278}2279impl AstNode for CompSpec {2280 fn can_cast(kind: SyntaxKind) -> bool {2281 match kind {2282 FOR_SPEC | IF_SPEC => true,2283 _ => false,2284 }2285 }2286 fn cast(syntax: SyntaxNode) -> Option<Self> {2287 let res = match syntax.kind() {2288 FOR_SPEC => CompSpec::ForSpec(ForSpec { syntax }),2289 IF_SPEC => CompSpec::IfSpec(IfSpec { syntax }),2290 _ => return None,2291 };2292 Some(res)2293 }2294 fn syntax(&self) -> &SyntaxNode {2295 match self {2296 CompSpec::ForSpec(it) => &it.syntax,2297 CompSpec::IfSpec(it) => &it.syntax,2298 }2299 }2300}2301impl From<BindDestruct> for Bind {2302 fn from(node: BindDestruct) -> Bind {2303 Bind::BindDestruct(node)2304 }2305}2306impl From<BindFunction> for Bind {2307 fn from(node: BindFunction) -> Bind {2308 Bind::BindFunction(node)2309 }2310}2311impl AstNode for Bind {2312 fn can_cast(kind: SyntaxKind) -> bool {2313 match kind {2314 BIND_DESTRUCT | BIND_FUNCTION => true,2315 _ => false,2316 }2317 }2318 fn cast(syntax: SyntaxNode) -> Option<Self> {2319 let res = match syntax.kind() {2320 BIND_DESTRUCT => Bind::BindDestruct(BindDestruct { syntax }),2321 BIND_FUNCTION => Bind::BindFunction(BindFunction { syntax }),2322 _ => return None,2323 };2324 Some(res)2325 }2326 fn syntax(&self) -> &SyntaxNode {2327 match self {2328 Bind::BindDestruct(it) => &it.syntax,2329 Bind::BindFunction(it) => &it.syntax,2330 }2331 }2332}2333impl From<MemberBindStmt> for Member {2334 fn from(node: MemberBindStmt) -> Member {2335 Member::MemberBindStmt(node)2336 }2337}2338impl From<MemberAssertStmt> for Member {2339 fn from(node: MemberAssertStmt) -> Member {2340 Member::MemberAssertStmt(node)2341 }2342}2343impl From<MemberField> for Member {2344 fn from(node: MemberField) -> Member {2345 Member::MemberField(node)2346 }2347}2348impl AstNode for Member {2349 fn can_cast(kind: SyntaxKind) -> bool {2350 match kind {2351 MEMBER_BIND_STMT | MEMBER_ASSERT_STMT | MEMBER_FIELD => true,2352 _ => false,2353 }2354 }2355 fn cast(syntax: SyntaxNode) -> Option<Self> {2356 let res = match syntax.kind() {2357 MEMBER_BIND_STMT => Member::MemberBindStmt(MemberBindStmt { syntax }),2358 MEMBER_ASSERT_STMT => Member::MemberAssertStmt(MemberAssertStmt { syntax }),2359 MEMBER_FIELD => Member::MemberField(MemberField { syntax }),2360 _ => return None,2361 };2362 Some(res)2363 }2364 fn syntax(&self) -> &SyntaxNode {2365 match self {2366 Member::MemberBindStmt(it) => &it.syntax,2367 Member::MemberAssertStmt(it) => &it.syntax,2368 Member::MemberField(it) => &it.syntax,2369 }2370 }2371}2372impl From<FieldNormal> for Field {2373 fn from(node: FieldNormal) -> Field {2374 Field::FieldNormal(node)2375 }2376}2377impl From<FieldMethod> for Field {2378 fn from(node: FieldMethod) -> Field {2379 Field::FieldMethod(node)2380 }2381}2382impl AstNode for Field {2383 fn can_cast(kind: SyntaxKind) -> bool {2384 match kind {2385 FIELD_NORMAL | FIELD_METHOD => true,2386 _ => false,2387 }2388 }2389 fn cast(syntax: SyntaxNode) -> Option<Self> {2390 let res = match syntax.kind() {2391 FIELD_NORMAL => Field::FieldNormal(FieldNormal { syntax }),2392 FIELD_METHOD => Field::FieldMethod(FieldMethod { syntax }),2393 _ => return None,2394 };2395 Some(res)2396 }2397 fn syntax(&self) -> &SyntaxNode {2398 match self {2399 Field::FieldNormal(it) => &it.syntax,2400 Field::FieldMethod(it) => &it.syntax,2401 }2402 }2403}2404impl From<FieldNameFixed> for FieldName {2405 fn from(node: FieldNameFixed) -> FieldName {2406 FieldName::FieldNameFixed(node)2407 }2408}2409impl From<FieldNameDynamic> for FieldName {2410 fn from(node: FieldNameDynamic) -> FieldName {2411 FieldName::FieldNameDynamic(node)2412 }2413}2414impl AstNode for FieldName {2415 fn can_cast(kind: SyntaxKind) -> bool {2416 match kind {2417 FIELD_NAME_FIXED | FIELD_NAME_DYNAMIC => true,2418 _ => false,2419 }2420 }2421 fn cast(syntax: SyntaxNode) -> Option<Self> {2422 let res = match syntax.kind() {2423 FIELD_NAME_FIXED => FieldName::FieldNameFixed(FieldNameFixed { syntax }),2424 FIELD_NAME_DYNAMIC => FieldName::FieldNameDynamic(FieldNameDynamic { syntax }),2425 _ => return None,2426 };2427 Some(res)2428 }2429 fn syntax(&self) -> &SyntaxNode {2430 match self {2431 FieldName::FieldNameFixed(it) => &it.syntax,2432 FieldName::FieldNameDynamic(it) => &it.syntax,2433 }2434 }2435}2436impl From<DestructFull> for Destruct {2437 fn from(node: DestructFull) -> Destruct {2438 Destruct::DestructFull(node)2439 }2440}2441impl From<DestructSkip> for Destruct {2442 fn from(node: DestructSkip) -> Destruct {2443 Destruct::DestructSkip(node)2444 }2445}2446impl From<DestructArray> for Destruct {2447 fn from(node: DestructArray) -> Destruct {2448 Destruct::DestructArray(node)2449 }2450}2451impl From<DestructObject> for Destruct {2452 fn from(node: DestructObject) -> Destruct {2453 Destruct::DestructObject(node)2454 }2455}2456impl AstNode for Destruct {2457 fn can_cast(kind: SyntaxKind) -> bool {2458 match kind {2459 DESTRUCT_FULL | DESTRUCT_SKIP | DESTRUCT_ARRAY | DESTRUCT_OBJECT => true,2460 _ => false,2461 }2462 }2463 fn cast(syntax: SyntaxNode) -> Option<Self> {2464 let res = match syntax.kind() {2465 DESTRUCT_FULL => Destruct::DestructFull(DestructFull { syntax }),2466 DESTRUCT_SKIP => Destruct::DestructSkip(DestructSkip { syntax }),2467 DESTRUCT_ARRAY => Destruct::DestructArray(DestructArray { syntax }),2468 DESTRUCT_OBJECT => Destruct::DestructObject(DestructObject { syntax }),2469 _ => return None,2470 };2471 Some(res)2472 }2473 fn syntax(&self) -> &SyntaxNode {2474 match self {2475 Destruct::DestructFull(it) => &it.syntax,2476 Destruct::DestructSkip(it) => &it.syntax,2477 Destruct::DestructArray(it) => &it.syntax,2478 Destruct::DestructObject(it) => &it.syntax,2479 }2480 }2481}2482impl From<DestructArrayElement> for DestructArrayPart {2483 fn from(node: DestructArrayElement) -> DestructArrayPart {2484 DestructArrayPart::DestructArrayElement(node)2485 }2486}2487impl From<DestructRest> for DestructArrayPart {2488 fn from(node: DestructRest) -> DestructArrayPart {2489 DestructArrayPart::DestructRest(node)2490 }2491}2492impl AstNode for DestructArrayPart {2493 fn can_cast(kind: SyntaxKind) -> bool {2494 match kind {2495 DESTRUCT_ARRAY_ELEMENT | DESTRUCT_REST => true,2496 _ => false,2497 }2498 }2499 fn cast(syntax: SyntaxNode) -> Option<Self> {2500 let res = match syntax.kind() {2501 DESTRUCT_ARRAY_ELEMENT => {2502 DestructArrayPart::DestructArrayElement(DestructArrayElement { syntax })2503 }2504 DESTRUCT_REST => DestructArrayPart::DestructRest(DestructRest { syntax }),2505 _ => return None,2506 };2507 Some(res)2508 }2509 fn syntax(&self) -> &SyntaxNode {2510 match self {2511 DestructArrayPart::DestructArrayElement(it) => &it.syntax,2512 DestructArrayPart::DestructRest(it) => &it.syntax,2513 }2514 }2515}2516impl AstToken for BinaryOperator {2517 fn can_cast(kind: SyntaxKind) -> bool {2518 BinaryOperatorKind::can_cast(kind)2519 }2520 fn cast(syntax: SyntaxToken) -> Option<Self> {2521 let kind = BinaryOperatorKind::cast(syntax.kind())?;2522 Some(BinaryOperator { syntax, kind })2523 }2524 fn syntax(&self) -> &SyntaxToken {2525 &self.syntax2526 }2527}2528impl BinaryOperatorKind {2529 fn can_cast(kind: SyntaxKind) -> bool {2530 match kind {2531 OR | AND | BIT_OR | BIT_XOR | BIT_AND | EQ | NE | LT | GT | LE | GE | IN_KW | LHS2532 | RHS | PLUS | MINUS | MUL | DIV | MODULO | META_OBJECT_APPLY | ERROR_NO_OPERATOR => true,2533 _ => false,2534 }2535 }2536 pub fn cast(kind: SyntaxKind) -> Option<Self> {2537 let res = match kind {2538 OR => Self::Or,2539 AND => Self::And,2540 BIT_OR => Self::BitOr,2541 BIT_XOR => Self::BitXor,2542 BIT_AND => Self::BitAnd,2543 EQ => Self::Eq,2544 NE => Self::Ne,2545 LT => Self::Lt,2546 GT => Self::Gt,2547 LE => Self::Le,2548 GE => Self::Ge,2549 IN_KW => Self::InKw,2550 LHS => Self::Lhs,2551 RHS => Self::Rhs,2552 PLUS => Self::Plus,2553 MINUS => Self::Minus,2554 MUL => Self::Mul,2555 DIV => Self::Div,2556 MODULO => Self::Modulo,2557 META_OBJECT_APPLY => Self::MetaObjectApply,2558 ERROR_NO_OPERATOR => Self::ErrorNoOperator,2559 _ => return None,2560 };2561 Some(res)2562 }2563}2564impl BinaryOperator {2565 pub fn kind(&self) -> BinaryOperatorKind {2566 self.kind2567 }2568}2569impl std::fmt::Display for BinaryOperator {2570 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2571 std::fmt::Display::fmt(self.syntax(), f)2572 }2573}2574impl AstToken for UnaryOperator {2575 fn can_cast(kind: SyntaxKind) -> bool {2576 UnaryOperatorKind::can_cast(kind)2577 }2578 fn cast(syntax: SyntaxToken) -> Option<Self> {2579 let kind = UnaryOperatorKind::cast(syntax.kind())?;2580 Some(UnaryOperator { syntax, kind })2581 }2582 fn syntax(&self) -> &SyntaxToken {2583 &self.syntax2584 }2585}2586impl UnaryOperatorKind {2587 fn can_cast(kind: SyntaxKind) -> bool {2588 match kind {2589 MINUS | NOT | BIT_NOT => true,2590 _ => false,2591 }2592 }2593 pub fn cast(kind: SyntaxKind) -> Option<Self> {2594 let res = match kind {2595 MINUS => Self::Minus,2596 NOT => Self::Not,2597 BIT_NOT => Self::BitNot,2598 _ => return None,2599 };2600 Some(res)2601 }2602}2603impl UnaryOperator {2604 pub fn kind(&self) -> UnaryOperatorKind {2605 self.kind2606 }2607}2608impl std::fmt::Display for UnaryOperator {2609 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2610 std::fmt::Display::fmt(self.syntax(), f)2611 }2612}2613impl AstToken for Literal {2614 fn can_cast(kind: SyntaxKind) -> bool {2615 LiteralKind::can_cast(kind)2616 }2617 fn cast(syntax: SyntaxToken) -> Option<Self> {2618 let kind = LiteralKind::cast(syntax.kind())?;2619 Some(Literal { syntax, kind })2620 }2621 fn syntax(&self) -> &SyntaxToken {2622 &self.syntax2623 }2624}2625impl LiteralKind {2626 fn can_cast(kind: SyntaxKind) -> bool {2627 match kind {2628 NULL_KW | TRUE_KW | FALSE_KW | SELF_KW | DOLLAR | SUPER_KW => true,2629 _ => false,2630 }2631 }2632 pub fn cast(kind: SyntaxKind) -> Option<Self> {2633 let res = match kind {2634 NULL_KW => Self::NullKw,2635 TRUE_KW => Self::TrueKw,2636 FALSE_KW => Self::FalseKw,2637 SELF_KW => Self::SelfKw,2638 DOLLAR => Self::Dollar,2639 SUPER_KW => Self::SuperKw,2640 _ => return None,2641 };2642 Some(res)2643 }2644}2645impl Literal {2646 pub fn kind(&self) -> LiteralKind {2647 self.kind2648 }2649}2650impl std::fmt::Display for Literal {2651 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2652 std::fmt::Display::fmt(self.syntax(), f)2653 }2654}2655impl AstToken for Text {2656 fn can_cast(kind: SyntaxKind) -> bool {2657 TextKind::can_cast(kind)2658 }2659 fn cast(syntax: SyntaxToken) -> Option<Self> {2660 let kind = TextKind::cast(syntax.kind())?;2661 Some(Text { syntax, kind })2662 }2663 fn syntax(&self) -> &SyntaxToken {2664 &self.syntax2665 }2666}2667impl TextKind {2668 fn can_cast(kind: SyntaxKind) -> bool {2669 match kind {2670 STRING_DOUBLE2671 | ERROR_STRING_DOUBLE_UNTERMINATED2672 | STRING_SINGLE2673 | ERROR_STRING_SINGLE_UNTERMINATED2674 | STRING_DOUBLE_VERBATIM2675 | ERROR_STRING_DOUBLE_VERBATIM_UNTERMINATED2676 | STRING_SINGLE_VERBATIM2677 | ERROR_STRING_SINGLE_VERBATIM_UNTERMINATED2678 | ERROR_STRING_VERBATIM_MISSING_QUOTES2679 | STRING_BLOCK2680 | ERROR_STRING_BLOCK_UNEXPECTED_END2681 | ERROR_STRING_BLOCK_MISSING_NEW_LINE2682 | ERROR_STRING_BLOCK_MISSING_TERMINATION2683 | ERROR_STRING_BLOCK_MISSING_INDENT => true,2684 _ => false,2685 }2686 }2687 pub fn cast(kind: SyntaxKind) -> Option<Self> {2688 let res = match kind {2689 STRING_DOUBLE => Self::StringDouble,2690 ERROR_STRING_DOUBLE_UNTERMINATED => Self::ErrorStringDoubleUnterminated,2691 STRING_SINGLE => Self::StringSingle,2692 ERROR_STRING_SINGLE_UNTERMINATED => Self::ErrorStringSingleUnterminated,2693 STRING_DOUBLE_VERBATIM => Self::StringDoubleVerbatim,2694 ERROR_STRING_DOUBLE_VERBATIM_UNTERMINATED => {2695 Self::ErrorStringDoubleVerbatimUnterminated2696 }2697 STRING_SINGLE_VERBATIM => Self::StringSingleVerbatim,2698 ERROR_STRING_SINGLE_VERBATIM_UNTERMINATED => {2699 Self::ErrorStringSingleVerbatimUnterminated2700 }2701 ERROR_STRING_VERBATIM_MISSING_QUOTES => Self::ErrorStringVerbatimMissingQuotes,2702 STRING_BLOCK => Self::StringBlock,2703 ERROR_STRING_BLOCK_UNEXPECTED_END => Self::ErrorStringBlockUnexpectedEnd,2704 ERROR_STRING_BLOCK_MISSING_NEW_LINE => Self::ErrorStringBlockMissingNewLine,2705 ERROR_STRING_BLOCK_MISSING_TERMINATION => Self::ErrorStringBlockMissingTermination,2706 ERROR_STRING_BLOCK_MISSING_INDENT => Self::ErrorStringBlockMissingIndent,2707 _ => return None,2708 };2709 Some(res)2710 }2711}2712impl Text {2713 pub fn kind(&self) -> TextKind {2714 self.kind2715 }2716}2717impl std::fmt::Display for Text {2718 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2719 std::fmt::Display::fmt(self.syntax(), f)2720 }2721}2722impl AstToken for Number {2723 fn can_cast(kind: SyntaxKind) -> bool {2724 NumberKind::can_cast(kind)2725 }2726 fn cast(syntax: SyntaxToken) -> Option<Self> {2727 let kind = NumberKind::cast(syntax.kind())?;2728 Some(Number { syntax, kind })2729 }2730 fn syntax(&self) -> &SyntaxToken {2731 &self.syntax2732 }2733}2734impl NumberKind {2735 fn can_cast(kind: SyntaxKind) -> bool {2736 match kind {2737 FLOAT2738 | ERROR_FLOAT_JUNK_AFTER_POINT2739 | ERROR_FLOAT_JUNK_AFTER_EXPONENT2740 | ERROR_FLOAT_JUNK_AFTER_EXPONENT_SIGN => true,2741 _ => false,2742 }2743 }2744 pub fn cast(kind: SyntaxKind) -> Option<Self> {2745 let res = match kind {2746 FLOAT => Self::Float,2747 ERROR_FLOAT_JUNK_AFTER_POINT => Self::ErrorFloatJunkAfterPoint,2748 ERROR_FLOAT_JUNK_AFTER_EXPONENT => Self::ErrorFloatJunkAfterExponent,2749 ERROR_FLOAT_JUNK_AFTER_EXPONENT_SIGN => Self::ErrorFloatJunkAfterExponentSign,2750 _ => return None,2751 };2752 Some(res)2753 }2754}2755impl Number {2756 pub fn kind(&self) -> NumberKind {2757 self.kind2758 }2759}2760impl std::fmt::Display for Number {2761 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2762 std::fmt::Display::fmt(self.syntax(), f)2763 }2764}2765impl AstToken for ImportKind {2766 fn can_cast(kind: SyntaxKind) -> bool {2767 ImportKindKind::can_cast(kind)2768 }2769 fn cast(syntax: SyntaxToken) -> Option<Self> {2770 let kind = ImportKindKind::cast(syntax.kind())?;2771 Some(ImportKind { syntax, kind })2772 }2773 fn syntax(&self) -> &SyntaxToken {2774 &self.syntax2775 }2776}2777impl ImportKindKind {2778 fn can_cast(kind: SyntaxKind) -> bool {2779 match kind {2780 IMPORTSTR_KW | IMPORTBIN_KW | IMPORT_KW => true,2781 _ => false,2782 }2783 }2784 pub fn cast(kind: SyntaxKind) -> Option<Self> {2785 let res = match kind {2786 IMPORTSTR_KW => Self::ImportstrKw,2787 IMPORTBIN_KW => Self::ImportbinKw,2788 IMPORT_KW => Self::ImportKw,2789 _ => return None,2790 };2791 Some(res)2792 }2793}2794impl ImportKind {2795 pub fn kind(&self) -> ImportKindKind {2796 self.kind2797 }2798}2799impl std::fmt::Display for ImportKind {2800 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2801 std::fmt::Display::fmt(self.syntax(), f)2802 }2803}2804impl AstToken for Visibility {2805 fn can_cast(kind: SyntaxKind) -> bool {2806 VisibilityKind::can_cast(kind)2807 }2808 fn cast(syntax: SyntaxToken) -> Option<Self> {2809 let kind = VisibilityKind::cast(syntax.kind())?;2810 Some(Visibility { syntax, kind })2811 }2812 fn syntax(&self) -> &SyntaxToken {2813 &self.syntax2814 }2815}2816impl VisibilityKind {2817 fn can_cast(kind: SyntaxKind) -> bool {2818 match kind {2819 COLONCOLONCOLON | COLONCOLON | COLON => true,2820 _ => false,2821 }2822 }2823 pub fn cast(kind: SyntaxKind) -> Option<Self> {2824 let res = match kind {2825 COLONCOLONCOLON => Self::Coloncoloncolon,2826 COLONCOLON => Self::Coloncolon,2827 COLON => Self::Colon,2828 _ => return None,2829 };2830 Some(res)2831 }2832}2833impl Visibility {2834 pub fn kind(&self) -> VisibilityKind {2835 self.kind2836 }2837}2838impl std::fmt::Display for Visibility {2839 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2840 std::fmt::Display::fmt(self.syntax(), f)2841 }2842}2843impl AstToken for Trivia {2844 fn can_cast(kind: SyntaxKind) -> bool {2845 TriviaKind::can_cast(kind)2846 }2847 fn cast(syntax: SyntaxToken) -> Option<Self> {2848 let kind = TriviaKind::cast(syntax.kind())?;2849 Some(Trivia { syntax, kind })2850 }2851 fn syntax(&self) -> &SyntaxToken {2852 &self.syntax2853 }2854}2855impl TriviaKind {2856 fn can_cast(kind: SyntaxKind) -> bool {2857 match kind {2858 WHITESPACE2859 | MULTI_LINE_COMMENT2860 | ERROR_COMMENT_TOO_SHORT2861 | ERROR_COMMENT_UNTERMINATED2862 | SINGLE_LINE_HASH_COMMENT2863 | SINGLE_LINE_SLASH_COMMENT => true,2864 _ => false,2865 }2866 }2867 pub fn cast(kind: SyntaxKind) -> Option<Self> {2868 let res = match kind {2869 WHITESPACE => Self::Whitespace,2870 MULTI_LINE_COMMENT => Self::MultiLineComment,2871 ERROR_COMMENT_TOO_SHORT => Self::ErrorCommentTooShort,2872 ERROR_COMMENT_UNTERMINATED => Self::ErrorCommentUnterminated,2873 SINGLE_LINE_HASH_COMMENT => Self::SingleLineHashComment,2874 SINGLE_LINE_SLASH_COMMENT => Self::SingleLineSlashComment,2875 _ => return None,2876 };2877 Some(res)2878 }2879}2880impl Trivia {2881 pub fn kind(&self) -> TriviaKind {2882 self.kind2883 }2884}2885impl std::fmt::Display for Trivia {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 Expr {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 ObjBody {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 CompSpec {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 Bind {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 Member {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 Field {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 FieldName {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 Destruct {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 DestructArrayPart {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 SourceFile {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 ExprBinary {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 LhsExpr {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 ExprUnary {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 ExprSlice {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 SliceDesc {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 ExprIndex {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 Name {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 ExprIndexExpr {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 ExprApply {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 ArgsDesc {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 ExprObjExtend {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 ExprParened {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 ExprLiteral {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 ExprIntrinsicThisFile {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 ExprIntrinsicId {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 ExprIntrinsic {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 ExprString {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 ExprNumber {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 ExprArray {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 ExprObject {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 ExprArrayComp {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 ExprImport {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 ExprVar {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 ExprLocal {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 ExprIfThenElse {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 TrueExpr {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 FalseExpr {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 ExprFunction {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 ParamsDesc {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 ExprAssert {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 Assertion {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 ExprError {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 SliceDescEnd {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 SliceDescStep {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 Arg {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 ObjBodyComp {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 ObjLocalPostComma {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 ObjLocalPreComma {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 ObjBodyMemberList {3131 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3132 std::fmt::Display::fmt(self.syntax(), f)3133 }3134}3135impl std::fmt::Display for ObjLocal {3136 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3137 std::fmt::Display::fmt(self.syntax(), f)3138 }3139}3140impl std::fmt::Display for MemberBindStmt {3141 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3142 std::fmt::Display::fmt(self.syntax(), f)3143 }3144}3145impl std::fmt::Display for MemberAssertStmt {3146 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3147 std::fmt::Display::fmt(self.syntax(), f)3148 }3149}3150impl std::fmt::Display for MemberField {3151 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3152 std::fmt::Display::fmt(self.syntax(), f)3153 }3154}3155impl std::fmt::Display for FieldNormal {3156 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3157 std::fmt::Display::fmt(self.syntax(), f)3158 }3159}3160impl std::fmt::Display for FieldMethod {3161 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3162 std::fmt::Display::fmt(self.syntax(), f)3163 }3164}3165impl std::fmt::Display for FieldNameFixed {3166 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3167 std::fmt::Display::fmt(self.syntax(), f)3168 }3169}3170impl std::fmt::Display for FieldNameDynamic {3171 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3172 std::fmt::Display::fmt(self.syntax(), f)3173 }3174}3175impl std::fmt::Display for ForSpec {3176 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3177 std::fmt::Display::fmt(self.syntax(), f)3178 }3179}3180impl std::fmt::Display for IfSpec {3181 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3182 std::fmt::Display::fmt(self.syntax(), f)3183 }3184}3185impl std::fmt::Display for BindDestruct {3186 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3187 std::fmt::Display::fmt(self.syntax(), f)3188 }3189}3190impl std::fmt::Display for BindFunction {3191 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3192 std::fmt::Display::fmt(self.syntax(), f)3193 }3194}3195impl std::fmt::Display for Param {3196 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3197 std::fmt::Display::fmt(self.syntax(), f)3198 }3199}3200impl std::fmt::Display for DestructFull {3201 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3202 std::fmt::Display::fmt(self.syntax(), f)3203 }3204}3205impl std::fmt::Display for DestructSkip {3206 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3207 std::fmt::Display::fmt(self.syntax(), f)3208 }3209}3210impl std::fmt::Display for DestructArray {3211 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3212 std::fmt::Display::fmt(self.syntax(), f)3213 }3214}3215impl std::fmt::Display for DestructObject {3216 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3217 std::fmt::Display::fmt(self.syntax(), f)3218 }3219}3220impl std::fmt::Display for DestructObjectField {3221 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3222 std::fmt::Display::fmt(self.syntax(), f)3223 }3224}3225impl std::fmt::Display for DestructRest {3226 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3227 std::fmt::Display::fmt(self.syntax(), f)3228 }3229}3230impl std::fmt::Display for DestructArrayElement {3231 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {3232 std::fmt::Display::fmt(self.syntax(), f)3233 }3234}