use crate::nodes::InnerNode;
use crate::nodes::*;
use crate::Loc;
use crate::Bytes;
crate::use_native_or_external!(Ptr);
crate::use_native_or_external!(List);
crate::use_native_or_external!(Maybe);
crate::use_native_or_external!(StringPtr);
#[allow(missing_docs)]
#[derive(Debug, Clone, PartialEq)]
#[repr(C)]
pub enum Node {
Alias(Alias),
And(And),
AndAsgn(AndAsgn),
Arg(Arg),
Args(Args),
Array(Array),
ArrayPattern(ArrayPattern),
ArrayPatternWithTail(ArrayPatternWithTail),
BackRef(BackRef),
Begin(Begin),
Block(Block),
Blockarg(Blockarg),
BlockPass(BlockPass),
Break(Break),
Case(Case),
CaseMatch(CaseMatch),
Casgn(Casgn),
Cbase(Cbase),
Class(Class),
Complex(Complex),
Const(Const),
ConstPattern(ConstPattern),
CSend(CSend),
Cvar(Cvar),
Cvasgn(Cvasgn),
Def(Def),
Defined(Defined),
Defs(Defs),
Dstr(Dstr),
Dsym(Dsym),
EFlipFlop(EFlipFlop),
EmptyElse(EmptyElse),
Encoding(Encoding),
Ensure(Ensure),
Erange(Erange),
False(False),
File(File),
FindPattern(FindPattern),
Float(Float),
For(For),
ForwardArg(ForwardArg),
ForwardedArgs(ForwardedArgs),
Gvar(Gvar),
Gvasgn(Gvasgn),
Hash(Hash),
HashPattern(HashPattern),
Heredoc(Heredoc),
If(If),
IfGuard(IfGuard),
IFlipFlop(IFlipFlop),
IfMod(IfMod),
IfTernary(IfTernary),
Index(Index),
IndexAsgn(IndexAsgn),
InPattern(InPattern),
Int(Int),
Irange(Irange),
Ivar(Ivar),
Ivasgn(Ivasgn),
Kwarg(Kwarg),
Kwargs(Kwargs),
KwBegin(KwBegin),
Kwnilarg(Kwnilarg),
Kwoptarg(Kwoptarg),
Kwrestarg(Kwrestarg),
Kwsplat(Kwsplat),
Lambda(Lambda),
Line(Line),
Lvar(Lvar),
Lvasgn(Lvasgn),
Masgn(Masgn),
MatchAlt(MatchAlt),
MatchAs(MatchAs),
MatchCurrentLine(MatchCurrentLine),
MatchNilPattern(MatchNilPattern),
MatchPattern(MatchPattern),
MatchPatternP(MatchPatternP),
MatchRest(MatchRest),
MatchVar(MatchVar),
MatchWithLvasgn(MatchWithLvasgn),
Mlhs(Mlhs),
Module(Module),
Next(Next),
Nil(Nil),
NthRef(NthRef),
Numblock(Numblock),
OpAsgn(OpAsgn),
Optarg(Optarg),
Or(Or),
OrAsgn(OrAsgn),
Pair(Pair),
Pin(Pin),
Postexe(Postexe),
Preexe(Preexe),
Procarg0(Procarg0),
Rational(Rational),
Redo(Redo),
Regexp(Regexp),
RegOpt(RegOpt),
Rescue(Rescue),
RescueBody(RescueBody),
Restarg(Restarg),
Retry(Retry),
Return(Return),
SClass(SClass),
Self_(Self_),
Send(Send),
Shadowarg(Shadowarg),
Splat(Splat),
Str(Str),
Super(Super),
Sym(Sym),
True(True),
Undef(Undef),
UnlessGuard(UnlessGuard),
Until(Until),
UntilPost(UntilPost),
When(When),
While(While),
WhilePost(WhilePost),
XHeredoc(XHeredoc),
Xstr(Xstr),
Yield(Yield),
ZSuper(ZSuper),
}
impl Node {
pub(crate) fn inner_ref(&self) -> &dyn InnerNode {
match &self {
Node::Alias(inner) => inner,
Node::And(inner) => inner,
Node::AndAsgn(inner) => inner,
Node::Arg(inner) => inner,
Node::Args(inner) => inner,
Node::Array(inner) => inner,
Node::ArrayPattern(inner) => inner,
Node::ArrayPatternWithTail(inner) => inner,
Node::BackRef(inner) => inner,
Node::Begin(inner) => inner,
Node::Block(inner) => inner,
Node::Blockarg(inner) => inner,
Node::BlockPass(inner) => inner,
Node::Break(inner) => inner,
Node::Case(inner) => inner,
Node::CaseMatch(inner) => inner,
Node::Casgn(inner) => inner,
Node::Cbase(inner) => inner,
Node::Class(inner) => inner,
Node::Complex(inner) => inner,
Node::Const(inner) => inner,
Node::ConstPattern(inner) => inner,
Node::CSend(inner) => inner,
Node::Cvar(inner) => inner,
Node::Cvasgn(inner) => inner,
Node::Def(inner) => inner,
Node::Defined(inner) => inner,
Node::Defs(inner) => inner,
Node::Dstr(inner) => inner,
Node::Dsym(inner) => inner,
Node::EFlipFlop(inner) => inner,
Node::EmptyElse(inner) => inner,
Node::Encoding(inner) => inner,
Node::Ensure(inner) => inner,
Node::Erange(inner) => inner,
Node::False(inner) => inner,
Node::File(inner) => inner,
Node::FindPattern(inner) => inner,
Node::Float(inner) => inner,
Node::For(inner) => inner,
Node::ForwardArg(inner) => inner,
Node::ForwardedArgs(inner) => inner,
Node::Gvar(inner) => inner,
Node::Gvasgn(inner) => inner,
Node::Hash(inner) => inner,
Node::HashPattern(inner) => inner,
Node::Heredoc(inner) => inner,
Node::If(inner) => inner,
Node::IfGuard(inner) => inner,
Node::IFlipFlop(inner) => inner,
Node::IfMod(inner) => inner,
Node::IfTernary(inner) => inner,
Node::Index(inner) => inner,
Node::IndexAsgn(inner) => inner,
Node::InPattern(inner) => inner,
Node::Int(inner) => inner,
Node::Irange(inner) => inner,
Node::Ivar(inner) => inner,
Node::Ivasgn(inner) => inner,
Node::Kwarg(inner) => inner,
Node::Kwargs(inner) => inner,
Node::KwBegin(inner) => inner,
Node::Kwnilarg(inner) => inner,
Node::Kwoptarg(inner) => inner,
Node::Kwrestarg(inner) => inner,
Node::Kwsplat(inner) => inner,
Node::Lambda(inner) => inner,
Node::Line(inner) => inner,
Node::Lvar(inner) => inner,
Node::Lvasgn(inner) => inner,
Node::Masgn(inner) => inner,
Node::MatchAlt(inner) => inner,
Node::MatchAs(inner) => inner,
Node::MatchCurrentLine(inner) => inner,
Node::MatchNilPattern(inner) => inner,
Node::MatchPattern(inner) => inner,
Node::MatchPatternP(inner) => inner,
Node::MatchRest(inner) => inner,
Node::MatchVar(inner) => inner,
Node::MatchWithLvasgn(inner) => inner,
Node::Mlhs(inner) => inner,
Node::Module(inner) => inner,
Node::Next(inner) => inner,
Node::Nil(inner) => inner,
Node::NthRef(inner) => inner,
Node::Numblock(inner) => inner,
Node::OpAsgn(inner) => inner,
Node::Optarg(inner) => inner,
Node::Or(inner) => inner,
Node::OrAsgn(inner) => inner,
Node::Pair(inner) => inner,
Node::Pin(inner) => inner,
Node::Postexe(inner) => inner,
Node::Preexe(inner) => inner,
Node::Procarg0(inner) => inner,
Node::Rational(inner) => inner,
Node::Redo(inner) => inner,
Node::Regexp(inner) => inner,
Node::RegOpt(inner) => inner,
Node::Rescue(inner) => inner,
Node::RescueBody(inner) => inner,
Node::Restarg(inner) => inner,
Node::Retry(inner) => inner,
Node::Return(inner) => inner,
Node::SClass(inner) => inner,
Node::Self_(inner) => inner,
Node::Send(inner) => inner,
Node::Shadowarg(inner) => inner,
Node::Splat(inner) => inner,
Node::Str(inner) => inner,
Node::Super(inner) => inner,
Node::Sym(inner) => inner,
Node::True(inner) => inner,
Node::Undef(inner) => inner,
Node::UnlessGuard(inner) => inner,
Node::Until(inner) => inner,
Node::UntilPost(inner) => inner,
Node::When(inner) => inner,
Node::While(inner) => inner,
Node::WhilePost(inner) => inner,
Node::XHeredoc(inner) => inner,
Node::Xstr(inner) => inner,
Node::Yield(inner) => inner,
Node::ZSuper(inner) => inner,
}
}
pub(crate) fn new_alias(to: Ptr<Node>, from: Ptr<Node>, keyword_l: Loc, expression_l: Loc, ) -> Self {
Self::Alias(Alias { to, from, keyword_l, expression_l, })
}
pub(crate) fn new_and(lhs: Ptr<Node>, rhs: Ptr<Node>, operator_l: Loc, expression_l: Loc, ) -> Self {
Self::And(And { lhs, rhs, operator_l, expression_l, })
}
pub(crate) fn new_and_asgn(recv: Ptr<Node>, value: Ptr<Node>, operator_l: Loc, expression_l: Loc, ) -> Self {
Self::AndAsgn(AndAsgn { recv, value, operator_l, expression_l, })
}
pub(crate) fn new_arg(name: StringPtr, expression_l: Loc, ) -> Self {
Self::Arg(Arg { name, expression_l, })
}
pub(crate) fn new_args(args: List<Node>, expression_l: Loc, begin_l: Maybe<Loc>, end_l: Maybe<Loc>, ) -> Self {
Self::Args(Args { args, expression_l, begin_l, end_l, })
}
pub(crate) fn new_array(elements: List<Node>, begin_l: Maybe<Loc>, end_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::Array(Array { elements, begin_l, end_l, expression_l, })
}
pub(crate) fn new_array_pattern(elements: List<Node>, begin_l: Maybe<Loc>, end_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::ArrayPattern(ArrayPattern { elements, begin_l, end_l, expression_l, })
}
pub(crate) fn new_array_pattern_with_tail(elements: List<Node>, begin_l: Maybe<Loc>, end_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::ArrayPatternWithTail(ArrayPatternWithTail { elements, begin_l, end_l, expression_l, })
}
pub(crate) fn new_back_ref(name: StringPtr, expression_l: Loc, ) -> Self {
Self::BackRef(BackRef { name, expression_l, })
}
pub(crate) fn new_begin(statements: List<Node>, begin_l: Maybe<Loc>, end_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::Begin(Begin { statements, begin_l, end_l, expression_l, })
}
pub(crate) fn new_block(call: Ptr<Node>, args: Maybe<Ptr<Node>>, body: Maybe<Ptr<Node>>, begin_l: Loc, end_l: Loc, expression_l: Loc, ) -> Self {
Self::Block(Block { call, args, body, begin_l, end_l, expression_l, })
}
pub(crate) fn new_blockarg(name: StringPtr, operator_l: Loc, name_l: Loc, expression_l: Loc, ) -> Self {
Self::Blockarg(Blockarg { name, operator_l, name_l, expression_l, })
}
pub(crate) fn new_block_pass(value: Ptr<Node>, operator_l: Loc, expression_l: Loc, ) -> Self {
Self::BlockPass(BlockPass { value, operator_l, expression_l, })
}
pub(crate) fn new_break(args: List<Node>, keyword_l: Loc, expression_l: Loc, ) -> Self {
Self::Break(Break { args, keyword_l, expression_l, })
}
pub(crate) fn new_case(expr: Maybe<Ptr<Node>>, when_bodies: List<Node>, else_body: Maybe<Ptr<Node>>, keyword_l: Loc, else_l: Maybe<Loc>, end_l: Loc, expression_l: Loc, ) -> Self {
Self::Case(Case { expr, when_bodies, else_body, keyword_l, else_l, end_l, expression_l, })
}
pub(crate) fn new_case_match(expr: Ptr<Node>, in_bodies: List<Node>, else_body: Maybe<Ptr<Node>>, keyword_l: Loc, else_l: Maybe<Loc>, end_l: Loc, expression_l: Loc, ) -> Self {
Self::CaseMatch(CaseMatch { expr, in_bodies, else_body, keyword_l, else_l, end_l, expression_l, })
}
pub(crate) fn new_casgn(scope: Maybe<Ptr<Node>>, name: StringPtr, value: Maybe<Ptr<Node>>, double_colon_l: Maybe<Loc>, name_l: Loc, operator_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::Casgn(Casgn { scope, name, value, double_colon_l, name_l, operator_l, expression_l, })
}
pub(crate) fn new_cbase(expression_l: Loc, ) -> Self {
Self::Cbase(Cbase { expression_l, })
}
pub(crate) fn new_class(name: Ptr<Node>, superclass: Maybe<Ptr<Node>>, body: Maybe<Ptr<Node>>, keyword_l: Loc, operator_l: Maybe<Loc>, end_l: Loc, expression_l: Loc, ) -> Self {
Self::Class(Class { name, superclass, body, keyword_l, operator_l, end_l, expression_l, })
}
pub(crate) fn new_complex(value: StringPtr, operator_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::Complex(Complex { value, operator_l, expression_l, })
}
pub(crate) fn new_const(scope: Maybe<Ptr<Node>>, name: StringPtr, double_colon_l: Maybe<Loc>, name_l: Loc, expression_l: Loc, ) -> Self {
Self::Const(Const { scope, name, double_colon_l, name_l, expression_l, })
}
pub(crate) fn new_const_pattern(const_: Ptr<Node>, pattern: Ptr<Node>, begin_l: Loc, end_l: Loc, expression_l: Loc, ) -> Self {
Self::ConstPattern(ConstPattern { const_, pattern, begin_l, end_l, expression_l, })
}
pub(crate) fn new_c_send(recv: Ptr<Node>, method_name: StringPtr, args: List<Node>, dot_l: Loc, selector_l: Maybe<Loc>, begin_l: Maybe<Loc>, end_l: Maybe<Loc>, operator_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::CSend(CSend { recv, method_name, args, dot_l, selector_l, begin_l, end_l, operator_l, expression_l, })
}
pub(crate) fn new_cvar(name: StringPtr, expression_l: Loc, ) -> Self {
Self::Cvar(Cvar { name, expression_l, })
}
pub(crate) fn new_cvasgn(name: StringPtr, value: Maybe<Ptr<Node>>, name_l: Loc, operator_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::Cvasgn(Cvasgn { name, value, name_l, operator_l, expression_l, })
}
pub(crate) fn new_def(name: StringPtr, args: Maybe<Ptr<Node>>, body: Maybe<Ptr<Node>>, keyword_l: Loc, name_l: Loc, end_l: Maybe<Loc>, assignment_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::Def(Def { name, args, body, keyword_l, name_l, end_l, assignment_l, expression_l, })
}
pub(crate) fn new_defined(value: Ptr<Node>, keyword_l: Loc, begin_l: Maybe<Loc>, end_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::Defined(Defined { value, keyword_l, begin_l, end_l, expression_l, })
}
pub(crate) fn new_defs(definee: Ptr<Node>, name: StringPtr, args: Maybe<Ptr<Node>>, body: Maybe<Ptr<Node>>, keyword_l: Loc, operator_l: Loc, name_l: Loc, assignment_l: Maybe<Loc>, end_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::Defs(Defs { definee, name, args, body, keyword_l, operator_l, name_l, assignment_l, end_l, expression_l, })
}
pub(crate) fn new_dstr(parts: List<Node>, begin_l: Maybe<Loc>, end_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::Dstr(Dstr { parts, begin_l, end_l, expression_l, })
}
pub(crate) fn new_dsym(parts: List<Node>, begin_l: Maybe<Loc>, end_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::Dsym(Dsym { parts, begin_l, end_l, expression_l, })
}
pub(crate) fn new_e_flip_flop(left: Maybe<Ptr<Node>>, right: Maybe<Ptr<Node>>, operator_l: Loc, expression_l: Loc, ) -> Self {
Self::EFlipFlop(EFlipFlop { left, right, operator_l, expression_l, })
}
pub(crate) fn new_empty_else(expression_l: Loc, ) -> Self {
Self::EmptyElse(EmptyElse { expression_l, })
}
pub(crate) fn new_encoding(expression_l: Loc, ) -> Self {
Self::Encoding(Encoding { expression_l, })
}
pub(crate) fn new_ensure(body: Maybe<Ptr<Node>>, ensure: Maybe<Ptr<Node>>, keyword_l: Loc, expression_l: Loc, ) -> Self {
Self::Ensure(Ensure { body, ensure, keyword_l, expression_l, })
}
pub(crate) fn new_erange(left: Maybe<Ptr<Node>>, right: Maybe<Ptr<Node>>, operator_l: Loc, expression_l: Loc, ) -> Self {
Self::Erange(Erange { left, right, operator_l, expression_l, })
}
pub(crate) fn new_false(expression_l: Loc, ) -> Self {
Self::False(False { expression_l, })
}
pub(crate) fn new_file(expression_l: Loc, ) -> Self {
Self::File(File { expression_l, })
}
pub(crate) fn new_find_pattern(elements: List<Node>, begin_l: Maybe<Loc>, end_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::FindPattern(FindPattern { elements, begin_l, end_l, expression_l, })
}
pub(crate) fn new_float(value: StringPtr, operator_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::Float(Float { value, operator_l, expression_l, })
}
pub(crate) fn new_for(iterator: Ptr<Node>, iteratee: Ptr<Node>, body: Maybe<Ptr<Node>>, keyword_l: Loc, operator_l: Loc, begin_l: Loc, end_l: Loc, expression_l: Loc, ) -> Self {
Self::For(For { iterator, iteratee, body, keyword_l, operator_l, begin_l, end_l, expression_l, })
}
pub(crate) fn new_forward_arg(expression_l: Loc, ) -> Self {
Self::ForwardArg(ForwardArg { expression_l, })
}
pub(crate) fn new_forwarded_args(expression_l: Loc, ) -> Self {
Self::ForwardedArgs(ForwardedArgs { expression_l, })
}
pub(crate) fn new_gvar(name: StringPtr, expression_l: Loc, ) -> Self {
Self::Gvar(Gvar { name, expression_l, })
}
pub(crate) fn new_gvasgn(name: StringPtr, value: Maybe<Ptr<Node>>, name_l: Loc, operator_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::Gvasgn(Gvasgn { name, value, name_l, operator_l, expression_l, })
}
pub(crate) fn new_hash(pairs: List<Node>, begin_l: Maybe<Loc>, end_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::Hash(Hash { pairs, begin_l, end_l, expression_l, })
}
pub(crate) fn new_hash_pattern(elements: List<Node>, begin_l: Maybe<Loc>, end_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::HashPattern(HashPattern { elements, begin_l, end_l, expression_l, })
}
pub(crate) fn new_heredoc(parts: List<Node>, heredoc_body_l: Loc, heredoc_end_l: Loc, expression_l: Loc, ) -> Self {
Self::Heredoc(Heredoc { parts, heredoc_body_l, heredoc_end_l, expression_l, })
}
pub(crate) fn new_if(cond: Ptr<Node>, if_true: Maybe<Ptr<Node>>, if_false: Maybe<Ptr<Node>>, keyword_l: Loc, begin_l: Loc, else_l: Maybe<Loc>, end_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::If(If { cond, if_true, if_false, keyword_l, begin_l, else_l, end_l, expression_l, })
}
pub(crate) fn new_if_guard(cond: Ptr<Node>, keyword_l: Loc, expression_l: Loc, ) -> Self {
Self::IfGuard(IfGuard { cond, keyword_l, expression_l, })
}
pub(crate) fn new_i_flip_flop(left: Maybe<Ptr<Node>>, right: Maybe<Ptr<Node>>, operator_l: Loc, expression_l: Loc, ) -> Self {
Self::IFlipFlop(IFlipFlop { left, right, operator_l, expression_l, })
}
pub(crate) fn new_if_mod(cond: Ptr<Node>, if_true: Maybe<Ptr<Node>>, if_false: Maybe<Ptr<Node>>, keyword_l: Loc, expression_l: Loc, ) -> Self {
Self::IfMod(IfMod { cond, if_true, if_false, keyword_l, expression_l, })
}
pub(crate) fn new_if_ternary(cond: Ptr<Node>, if_true: Ptr<Node>, if_false: Ptr<Node>, question_l: Loc, colon_l: Loc, expression_l: Loc, ) -> Self {
Self::IfTernary(IfTernary { cond, if_true, if_false, question_l, colon_l, expression_l, })
}
pub(crate) fn new_index(recv: Ptr<Node>, indexes: List<Node>, begin_l: Loc, end_l: Loc, expression_l: Loc, ) -> Self {
Self::Index(Index { recv, indexes, begin_l, end_l, expression_l, })
}
pub(crate) fn new_index_asgn(recv: Ptr<Node>, indexes: List<Node>, value: Maybe<Ptr<Node>>, begin_l: Loc, end_l: Loc, operator_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::IndexAsgn(IndexAsgn { recv, indexes, value, begin_l, end_l, operator_l, expression_l, })
}
pub(crate) fn new_in_pattern(pattern: Ptr<Node>, guard: Maybe<Ptr<Node>>, body: Maybe<Ptr<Node>>, keyword_l: Loc, begin_l: Loc, expression_l: Loc, ) -> Self {
Self::InPattern(InPattern { pattern, guard, body, keyword_l, begin_l, expression_l, })
}
pub(crate) fn new_int(value: StringPtr, operator_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::Int(Int { value, operator_l, expression_l, })
}
pub(crate) fn new_irange(left: Maybe<Ptr<Node>>, right: Maybe<Ptr<Node>>, operator_l: Loc, expression_l: Loc, ) -> Self {
Self::Irange(Irange { left, right, operator_l, expression_l, })
}
pub(crate) fn new_ivar(name: StringPtr, expression_l: Loc, ) -> Self {
Self::Ivar(Ivar { name, expression_l, })
}
pub(crate) fn new_ivasgn(name: StringPtr, value: Maybe<Ptr<Node>>, name_l: Loc, operator_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::Ivasgn(Ivasgn { name, value, name_l, operator_l, expression_l, })
}
pub(crate) fn new_kwarg(name: StringPtr, name_l: Loc, expression_l: Loc, ) -> Self {
Self::Kwarg(Kwarg { name, name_l, expression_l, })
}
pub(crate) fn new_kwargs(pairs: List<Node>, expression_l: Loc, ) -> Self {
Self::Kwargs(Kwargs { pairs, expression_l, })
}
pub(crate) fn new_kw_begin(statements: List<Node>, begin_l: Maybe<Loc>, end_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::KwBegin(KwBegin { statements, begin_l, end_l, expression_l, })
}
pub(crate) fn new_kwnilarg(name_l: Loc, expression_l: Loc, ) -> Self {
Self::Kwnilarg(Kwnilarg { name_l, expression_l, })
}
pub(crate) fn new_kwoptarg(name: StringPtr, default: Ptr<Node>, name_l: Loc, expression_l: Loc, ) -> Self {
Self::Kwoptarg(Kwoptarg { name, default, name_l, expression_l, })
}
pub(crate) fn new_kwrestarg(name: Maybe<StringPtr>, operator_l: Loc, name_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::Kwrestarg(Kwrestarg { name, operator_l, name_l, expression_l, })
}
pub(crate) fn new_kwsplat(value: Ptr<Node>, operator_l: Loc, expression_l: Loc, ) -> Self {
Self::Kwsplat(Kwsplat { value, operator_l, expression_l, })
}
pub(crate) fn new_lambda(expression_l: Loc, ) -> Self {
Self::Lambda(Lambda { expression_l, })
}
pub(crate) fn new_line(expression_l: Loc, ) -> Self {
Self::Line(Line { expression_l, })
}
pub(crate) fn new_lvar(name: StringPtr, expression_l: Loc, ) -> Self {
Self::Lvar(Lvar { name, expression_l, })
}
pub(crate) fn new_lvasgn(name: StringPtr, value: Maybe<Ptr<Node>>, name_l: Loc, operator_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::Lvasgn(Lvasgn { name, value, name_l, operator_l, expression_l, })
}
pub(crate) fn new_masgn(lhs: Ptr<Node>, rhs: Ptr<Node>, operator_l: Loc, expression_l: Loc, ) -> Self {
Self::Masgn(Masgn { lhs, rhs, operator_l, expression_l, })
}
pub(crate) fn new_match_alt(lhs: Ptr<Node>, rhs: Ptr<Node>, operator_l: Loc, expression_l: Loc, ) -> Self {
Self::MatchAlt(MatchAlt { lhs, rhs, operator_l, expression_l, })
}
pub(crate) fn new_match_as(value: Ptr<Node>, as_: Ptr<Node>, operator_l: Loc, expression_l: Loc, ) -> Self {
Self::MatchAs(MatchAs { value, as_, operator_l, expression_l, })
}
pub(crate) fn new_match_current_line(re: Ptr<Node>, expression_l: Loc, ) -> Self {
Self::MatchCurrentLine(MatchCurrentLine { re, expression_l, })
}
pub(crate) fn new_match_nil_pattern(operator_l: Loc, name_l: Loc, expression_l: Loc, ) -> Self {
Self::MatchNilPattern(MatchNilPattern { operator_l, name_l, expression_l, })
}
pub(crate) fn new_match_pattern(value: Ptr<Node>, pattern: Ptr<Node>, operator_l: Loc, expression_l: Loc, ) -> Self {
Self::MatchPattern(MatchPattern { value, pattern, operator_l, expression_l, })
}
pub(crate) fn new_match_pattern_p(value: Ptr<Node>, pattern: Ptr<Node>, operator_l: Loc, expression_l: Loc, ) -> Self {
Self::MatchPatternP(MatchPatternP { value, pattern, operator_l, expression_l, })
}
pub(crate) fn new_match_rest(name: Maybe<Ptr<Node>>, operator_l: Loc, expression_l: Loc, ) -> Self {
Self::MatchRest(MatchRest { name, operator_l, expression_l, })
}
pub(crate) fn new_match_var(name: StringPtr, name_l: Loc, expression_l: Loc, ) -> Self {
Self::MatchVar(MatchVar { name, name_l, expression_l, })
}
pub(crate) fn new_match_with_lvasgn(re: Ptr<Node>, value: Ptr<Node>, operator_l: Loc, expression_l: Loc, ) -> Self {
Self::MatchWithLvasgn(MatchWithLvasgn { re, value, operator_l, expression_l, })
}
pub(crate) fn new_mlhs(items: List<Node>, begin_l: Maybe<Loc>, end_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::Mlhs(Mlhs { items, begin_l, end_l, expression_l, })
}
pub(crate) fn new_module(name: Ptr<Node>, body: Maybe<Ptr<Node>>, keyword_l: Loc, end_l: Loc, expression_l: Loc, ) -> Self {
Self::Module(Module { name, body, keyword_l, end_l, expression_l, })
}
pub(crate) fn new_next(args: List<Node>, keyword_l: Loc, expression_l: Loc, ) -> Self {
Self::Next(Next { args, keyword_l, expression_l, })
}
pub(crate) fn new_nil(expression_l: Loc, ) -> Self {
Self::Nil(Nil { expression_l, })
}
pub(crate) fn new_nth_ref(name: StringPtr, expression_l: Loc, ) -> Self {
Self::NthRef(NthRef { name, expression_l, })
}
pub(crate) fn new_numblock(call: Ptr<Node>, numargs: u8, body: Ptr<Node>, begin_l: Loc, end_l: Loc, expression_l: Loc, ) -> Self {
Self::Numblock(Numblock { call, numargs, body, begin_l, end_l, expression_l, })
}
pub(crate) fn new_op_asgn(recv: Ptr<Node>, operator: StringPtr, value: Ptr<Node>, operator_l: Loc, expression_l: Loc, ) -> Self {
Self::OpAsgn(OpAsgn { recv, operator, value, operator_l, expression_l, })
}
pub(crate) fn new_optarg(name: StringPtr, default: Ptr<Node>, name_l: Loc, operator_l: Loc, expression_l: Loc, ) -> Self {
Self::Optarg(Optarg { name, default, name_l, operator_l, expression_l, })
}
pub(crate) fn new_or(lhs: Ptr<Node>, rhs: Ptr<Node>, operator_l: Loc, expression_l: Loc, ) -> Self {
Self::Or(Or { lhs, rhs, operator_l, expression_l, })
}
pub(crate) fn new_or_asgn(recv: Ptr<Node>, value: Ptr<Node>, operator_l: Loc, expression_l: Loc, ) -> Self {
Self::OrAsgn(OrAsgn { recv, value, operator_l, expression_l, })
}
pub(crate) fn new_pair(key: Ptr<Node>, value: Ptr<Node>, operator_l: Loc, expression_l: Loc, ) -> Self {
Self::Pair(Pair { key, value, operator_l, expression_l, })
}
pub(crate) fn new_pin(var: Ptr<Node>, selector_l: Loc, expression_l: Loc, ) -> Self {
Self::Pin(Pin { var, selector_l, expression_l, })
}
pub(crate) fn new_postexe(body: Maybe<Ptr<Node>>, keyword_l: Loc, begin_l: Loc, end_l: Loc, expression_l: Loc, ) -> Self {
Self::Postexe(Postexe { body, keyword_l, begin_l, end_l, expression_l, })
}
pub(crate) fn new_preexe(body: Maybe<Ptr<Node>>, keyword_l: Loc, begin_l: Loc, end_l: Loc, expression_l: Loc, ) -> Self {
Self::Preexe(Preexe { body, keyword_l, begin_l, end_l, expression_l, })
}
pub(crate) fn new_procarg0(args: List<Node>, begin_l: Maybe<Loc>, end_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::Procarg0(Procarg0 { args, begin_l, end_l, expression_l, })
}
pub(crate) fn new_rational(value: StringPtr, operator_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::Rational(Rational { value, operator_l, expression_l, })
}
pub(crate) fn new_redo(expression_l: Loc, ) -> Self {
Self::Redo(Redo { expression_l, })
}
pub(crate) fn new_regexp(parts: List<Node>, options: Maybe<Ptr<Node>>, begin_l: Loc, end_l: Loc, expression_l: Loc, ) -> Self {
Self::Regexp(Regexp { parts, options, begin_l, end_l, expression_l, })
}
pub(crate) fn new_reg_opt(options: Maybe<StringPtr>, expression_l: Loc, ) -> Self {
Self::RegOpt(RegOpt { options, expression_l, })
}
pub(crate) fn new_rescue(body: Maybe<Ptr<Node>>, rescue_bodies: List<Node>, else_: Maybe<Ptr<Node>>, else_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::Rescue(Rescue { body, rescue_bodies, else_, else_l, expression_l, })
}
pub(crate) fn new_rescue_body(exc_list: Maybe<Ptr<Node>>, exc_var: Maybe<Ptr<Node>>, body: Maybe<Ptr<Node>>, keyword_l: Loc, assoc_l: Maybe<Loc>, begin_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::RescueBody(RescueBody { exc_list, exc_var, body, keyword_l, assoc_l, begin_l, expression_l, })
}
pub(crate) fn new_restarg(name: Maybe<StringPtr>, operator_l: Loc, name_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::Restarg(Restarg { name, operator_l, name_l, expression_l, })
}
pub(crate) fn new_retry(expression_l: Loc, ) -> Self {
Self::Retry(Retry { expression_l, })
}
pub(crate) fn new_return(args: List<Node>, keyword_l: Loc, expression_l: Loc, ) -> Self {
Self::Return(Return { args, keyword_l, expression_l, })
}
pub(crate) fn new_s_class(expr: Ptr<Node>, body: Maybe<Ptr<Node>>, keyword_l: Loc, operator_l: Loc, end_l: Loc, expression_l: Loc, ) -> Self {
Self::SClass(SClass { expr, body, keyword_l, operator_l, end_l, expression_l, })
}
pub(crate) fn new_self_(expression_l: Loc, ) -> Self {
Self::Self_(Self_ { expression_l, })
}
pub(crate) fn new_send(recv: Maybe<Ptr<Node>>, method_name: StringPtr, args: List<Node>, dot_l: Maybe<Loc>, selector_l: Maybe<Loc>, begin_l: Maybe<Loc>, end_l: Maybe<Loc>, operator_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::Send(Send { recv, method_name, args, dot_l, selector_l, begin_l, end_l, operator_l, expression_l, })
}
pub(crate) fn new_shadowarg(name: StringPtr, expression_l: Loc, ) -> Self {
Self::Shadowarg(Shadowarg { name, expression_l, })
}
pub(crate) fn new_splat(value: Maybe<Ptr<Node>>, operator_l: Loc, expression_l: Loc, ) -> Self {
Self::Splat(Splat { value, operator_l, expression_l, })
}
pub(crate) fn new_str(value: Bytes, begin_l: Maybe<Loc>, end_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::Str(Str { value, begin_l, end_l, expression_l, })
}
pub(crate) fn new_super(args: List<Node>, keyword_l: Loc, begin_l: Maybe<Loc>, end_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::Super(Super { args, keyword_l, begin_l, end_l, expression_l, })
}
pub(crate) fn new_sym(name: Bytes, begin_l: Maybe<Loc>, end_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::Sym(Sym { name, begin_l, end_l, expression_l, })
}
pub(crate) fn new_true(expression_l: Loc, ) -> Self {
Self::True(True { expression_l, })
}
pub(crate) fn new_undef(names: List<Node>, keyword_l: Loc, expression_l: Loc, ) -> Self {
Self::Undef(Undef { names, keyword_l, expression_l, })
}
pub(crate) fn new_unless_guard(cond: Ptr<Node>, keyword_l: Loc, expression_l: Loc, ) -> Self {
Self::UnlessGuard(UnlessGuard { cond, keyword_l, expression_l, })
}
pub(crate) fn new_until(cond: Ptr<Node>, body: Maybe<Ptr<Node>>, keyword_l: Loc, begin_l: Maybe<Loc>, end_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::Until(Until { cond, body, keyword_l, begin_l, end_l, expression_l, })
}
pub(crate) fn new_until_post(cond: Ptr<Node>, body: Ptr<Node>, keyword_l: Loc, expression_l: Loc, ) -> Self {
Self::UntilPost(UntilPost { cond, body, keyword_l, expression_l, })
}
pub(crate) fn new_when(patterns: List<Node>, body: Maybe<Ptr<Node>>, keyword_l: Loc, begin_l: Loc, expression_l: Loc, ) -> Self {
Self::When(When { patterns, body, keyword_l, begin_l, expression_l, })
}
pub(crate) fn new_while(cond: Ptr<Node>, body: Maybe<Ptr<Node>>, keyword_l: Loc, begin_l: Maybe<Loc>, end_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::While(While { cond, body, keyword_l, begin_l, end_l, expression_l, })
}
pub(crate) fn new_while_post(cond: Ptr<Node>, body: Ptr<Node>, keyword_l: Loc, expression_l: Loc, ) -> Self {
Self::WhilePost(WhilePost { cond, body, keyword_l, expression_l, })
}
pub(crate) fn new_x_heredoc(parts: List<Node>, heredoc_body_l: Loc, heredoc_end_l: Loc, expression_l: Loc, ) -> Self {
Self::XHeredoc(XHeredoc { parts, heredoc_body_l, heredoc_end_l, expression_l, })
}
pub(crate) fn new_xstr(parts: List<Node>, begin_l: Loc, end_l: Loc, expression_l: Loc, ) -> Self {
Self::Xstr(Xstr { parts, begin_l, end_l, expression_l, })
}
pub(crate) fn new_yield(args: List<Node>, keyword_l: Loc, begin_l: Maybe<Loc>, end_l: Maybe<Loc>, expression_l: Loc, ) -> Self {
Self::Yield(Yield { args, keyword_l, begin_l, end_l, expression_l, })
}
pub(crate) fn new_z_super(expression_l: Loc, ) -> Self {
Self::ZSuper(ZSuper { expression_l, })
}
pub fn is_alias(&self) -> bool {
matches!(self, Self::Alias(_))
}
pub fn is_and(&self) -> bool {
matches!(self, Self::And(_))
}
pub fn is_and_asgn(&self) -> bool {
matches!(self, Self::AndAsgn(_))
}
pub fn is_arg(&self) -> bool {
matches!(self, Self::Arg(_))
}
pub fn is_args(&self) -> bool {
matches!(self, Self::Args(_))
}
pub fn is_array(&self) -> bool {
matches!(self, Self::Array(_))
}
pub fn is_array_pattern(&self) -> bool {
matches!(self, Self::ArrayPattern(_))
}
pub fn is_array_pattern_with_tail(&self) -> bool {
matches!(self, Self::ArrayPatternWithTail(_))
}
pub fn is_back_ref(&self) -> bool {
matches!(self, Self::BackRef(_))
}
pub fn is_begin(&self) -> bool {
matches!(self, Self::Begin(_))
}
pub fn is_block(&self) -> bool {
matches!(self, Self::Block(_))
}
pub fn is_blockarg(&self) -> bool {
matches!(self, Self::Blockarg(_))
}
pub fn is_block_pass(&self) -> bool {
matches!(self, Self::BlockPass(_))
}
pub fn is_break(&self) -> bool {
matches!(self, Self::Break(_))
}
pub fn is_case(&self) -> bool {
matches!(self, Self::Case(_))
}
pub fn is_case_match(&self) -> bool {
matches!(self, Self::CaseMatch(_))
}
pub fn is_casgn(&self) -> bool {
matches!(self, Self::Casgn(_))
}
pub fn is_cbase(&self) -> bool {
matches!(self, Self::Cbase(_))
}
pub fn is_class(&self) -> bool {
matches!(self, Self::Class(_))
}
pub fn is_complex(&self) -> bool {
matches!(self, Self::Complex(_))
}
pub fn is_const(&self) -> bool {
matches!(self, Self::Const(_))
}
pub fn is_const_pattern(&self) -> bool {
matches!(self, Self::ConstPattern(_))
}
pub fn is_c_send(&self) -> bool {
matches!(self, Self::CSend(_))
}
pub fn is_cvar(&self) -> bool {
matches!(self, Self::Cvar(_))
}
pub fn is_cvasgn(&self) -> bool {
matches!(self, Self::Cvasgn(_))
}
pub fn is_def(&self) -> bool {
matches!(self, Self::Def(_))
}
pub fn is_defined(&self) -> bool {
matches!(self, Self::Defined(_))
}
pub fn is_defs(&self) -> bool {
matches!(self, Self::Defs(_))
}
pub fn is_dstr(&self) -> bool {
matches!(self, Self::Dstr(_))
}
pub fn is_dsym(&self) -> bool {
matches!(self, Self::Dsym(_))
}
pub fn is_e_flip_flop(&self) -> bool {
matches!(self, Self::EFlipFlop(_))
}
pub fn is_empty_else(&self) -> bool {
matches!(self, Self::EmptyElse(_))
}
pub fn is_encoding(&self) -> bool {
matches!(self, Self::Encoding(_))
}
pub fn is_ensure(&self) -> bool {
matches!(self, Self::Ensure(_))
}
pub fn is_erange(&self) -> bool {
matches!(self, Self::Erange(_))
}
pub fn is_false(&self) -> bool {
matches!(self, Self::False(_))
}
pub fn is_file(&self) -> bool {
matches!(self, Self::File(_))
}
pub fn is_find_pattern(&self) -> bool {
matches!(self, Self::FindPattern(_))
}
pub fn is_float(&self) -> bool {
matches!(self, Self::Float(_))
}
pub fn is_for(&self) -> bool {
matches!(self, Self::For(_))
}
pub fn is_forward_arg(&self) -> bool {
matches!(self, Self::ForwardArg(_))
}
pub fn is_forwarded_args(&self) -> bool {
matches!(self, Self::ForwardedArgs(_))
}
pub fn is_gvar(&self) -> bool {
matches!(self, Self::Gvar(_))
}
pub fn is_gvasgn(&self) -> bool {
matches!(self, Self::Gvasgn(_))
}
pub fn is_hash(&self) -> bool {
matches!(self, Self::Hash(_))
}
pub fn is_hash_pattern(&self) -> bool {
matches!(self, Self::HashPattern(_))
}
pub fn is_heredoc(&self) -> bool {
matches!(self, Self::Heredoc(_))
}
pub fn is_if(&self) -> bool {
matches!(self, Self::If(_))
}
pub fn is_if_guard(&self) -> bool {
matches!(self, Self::IfGuard(_))
}
pub fn is_i_flip_flop(&self) -> bool {
matches!(self, Self::IFlipFlop(_))
}
pub fn is_if_mod(&self) -> bool {
matches!(self, Self::IfMod(_))
}
pub fn is_if_ternary(&self) -> bool {
matches!(self, Self::IfTernary(_))
}
pub fn is_index(&self) -> bool {
matches!(self, Self::Index(_))
}
pub fn is_index_asgn(&self) -> bool {
matches!(self, Self::IndexAsgn(_))
}
pub fn is_in_pattern(&self) -> bool {
matches!(self, Self::InPattern(_))
}
pub fn is_int(&self) -> bool {
matches!(self, Self::Int(_))
}
pub fn is_irange(&self) -> bool {
matches!(self, Self::Irange(_))
}
pub fn is_ivar(&self) -> bool {
matches!(self, Self::Ivar(_))
}
pub fn is_ivasgn(&self) -> bool {
matches!(self, Self::Ivasgn(_))
}
pub fn is_kwarg(&self) -> bool {
matches!(self, Self::Kwarg(_))
}
pub fn is_kwargs(&self) -> bool {
matches!(self, Self::Kwargs(_))
}
pub fn is_kw_begin(&self) -> bool {
matches!(self, Self::KwBegin(_))
}
pub fn is_kwnilarg(&self) -> bool {
matches!(self, Self::Kwnilarg(_))
}
pub fn is_kwoptarg(&self) -> bool {
matches!(self, Self::Kwoptarg(_))
}
pub fn is_kwrestarg(&self) -> bool {
matches!(self, Self::Kwrestarg(_))
}
pub fn is_kwsplat(&self) -> bool {
matches!(self, Self::Kwsplat(_))
}
pub fn is_lambda(&self) -> bool {
matches!(self, Self::Lambda(_))
}
pub fn is_line(&self) -> bool {
matches!(self, Self::Line(_))
}
pub fn is_lvar(&self) -> bool {
matches!(self, Self::Lvar(_))
}
pub fn is_lvasgn(&self) -> bool {
matches!(self, Self::Lvasgn(_))
}
pub fn is_masgn(&self) -> bool {
matches!(self, Self::Masgn(_))
}
pub fn is_match_alt(&self) -> bool {
matches!(self, Self::MatchAlt(_))
}
pub fn is_match_as(&self) -> bool {
matches!(self, Self::MatchAs(_))
}
pub fn is_match_current_line(&self) -> bool {
matches!(self, Self::MatchCurrentLine(_))
}
pub fn is_match_nil_pattern(&self) -> bool {
matches!(self, Self::MatchNilPattern(_))
}
pub fn is_match_pattern(&self) -> bool {
matches!(self, Self::MatchPattern(_))
}
pub fn is_match_pattern_p(&self) -> bool {
matches!(self, Self::MatchPatternP(_))
}
pub fn is_match_rest(&self) -> bool {
matches!(self, Self::MatchRest(_))
}
pub fn is_match_var(&self) -> bool {
matches!(self, Self::MatchVar(_))
}
pub fn is_match_with_lvasgn(&self) -> bool {
matches!(self, Self::MatchWithLvasgn(_))
}
pub fn is_mlhs(&self) -> bool {
matches!(self, Self::Mlhs(_))
}
pub fn is_module(&self) -> bool {
matches!(self, Self::Module(_))
}
pub fn is_next(&self) -> bool {
matches!(self, Self::Next(_))
}
pub fn is_nil(&self) -> bool {
matches!(self, Self::Nil(_))
}
pub fn is_nth_ref(&self) -> bool {
matches!(self, Self::NthRef(_))
}
pub fn is_numblock(&self) -> bool {
matches!(self, Self::Numblock(_))
}
pub fn is_op_asgn(&self) -> bool {
matches!(self, Self::OpAsgn(_))
}
pub fn is_optarg(&self) -> bool {
matches!(self, Self::Optarg(_))
}
pub fn is_or(&self) -> bool {
matches!(self, Self::Or(_))
}
pub fn is_or_asgn(&self) -> bool {
matches!(self, Self::OrAsgn(_))
}
pub fn is_pair(&self) -> bool {
matches!(self, Self::Pair(_))
}
pub fn is_pin(&self) -> bool {
matches!(self, Self::Pin(_))
}
pub fn is_postexe(&self) -> bool {
matches!(self, Self::Postexe(_))
}
pub fn is_preexe(&self) -> bool {
matches!(self, Self::Preexe(_))
}
pub fn is_procarg0(&self) -> bool {
matches!(self, Self::Procarg0(_))
}
pub fn is_rational(&self) -> bool {
matches!(self, Self::Rational(_))
}
pub fn is_redo(&self) -> bool {
matches!(self, Self::Redo(_))
}
pub fn is_regexp(&self) -> bool {
matches!(self, Self::Regexp(_))
}
pub fn is_reg_opt(&self) -> bool {
matches!(self, Self::RegOpt(_))
}
pub fn is_rescue(&self) -> bool {
matches!(self, Self::Rescue(_))
}
pub fn is_rescue_body(&self) -> bool {
matches!(self, Self::RescueBody(_))
}
pub fn is_restarg(&self) -> bool {
matches!(self, Self::Restarg(_))
}
pub fn is_retry(&self) -> bool {
matches!(self, Self::Retry(_))
}
pub fn is_return(&self) -> bool {
matches!(self, Self::Return(_))
}
pub fn is_s_class(&self) -> bool {
matches!(self, Self::SClass(_))
}
pub fn is_self_(&self) -> bool {
matches!(self, Self::Self_(_))
}
pub fn is_send(&self) -> bool {
matches!(self, Self::Send(_))
}
pub fn is_shadowarg(&self) -> bool {
matches!(self, Self::Shadowarg(_))
}
pub fn is_splat(&self) -> bool {
matches!(self, Self::Splat(_))
}
pub fn is_str(&self) -> bool {
matches!(self, Self::Str(_))
}
pub fn is_super(&self) -> bool {
matches!(self, Self::Super(_))
}
pub fn is_sym(&self) -> bool {
matches!(self, Self::Sym(_))
}
pub fn is_true(&self) -> bool {
matches!(self, Self::True(_))
}
pub fn is_undef(&self) -> bool {
matches!(self, Self::Undef(_))
}
pub fn is_unless_guard(&self) -> bool {
matches!(self, Self::UnlessGuard(_))
}
pub fn is_until(&self) -> bool {
matches!(self, Self::Until(_))
}
pub fn is_until_post(&self) -> bool {
matches!(self, Self::UntilPost(_))
}
pub fn is_when(&self) -> bool {
matches!(self, Self::When(_))
}
pub fn is_while(&self) -> bool {
matches!(self, Self::While(_))
}
pub fn is_while_post(&self) -> bool {
matches!(self, Self::WhilePost(_))
}
pub fn is_x_heredoc(&self) -> bool {
matches!(self, Self::XHeredoc(_))
}
pub fn is_xstr(&self) -> bool {
matches!(self, Self::Xstr(_))
}
pub fn is_yield(&self) -> bool {
matches!(self, Self::Yield(_))
}
pub fn is_z_super(&self) -> bool {
matches!(self, Self::ZSuper(_))
}
pub fn as_alias(&self) -> Option<&Alias> {
if let Self::Alias(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_and(&self) -> Option<&And> {
if let Self::And(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_and_asgn(&self) -> Option<&AndAsgn> {
if let Self::AndAsgn(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_arg(&self) -> Option<&Arg> {
if let Self::Arg(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_args(&self) -> Option<&Args> {
if let Self::Args(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_array(&self) -> Option<&Array> {
if let Self::Array(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_array_pattern(&self) -> Option<&ArrayPattern> {
if let Self::ArrayPattern(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_array_pattern_with_tail(&self) -> Option<&ArrayPatternWithTail> {
if let Self::ArrayPatternWithTail(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_back_ref(&self) -> Option<&BackRef> {
if let Self::BackRef(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_begin(&self) -> Option<&Begin> {
if let Self::Begin(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_block(&self) -> Option<&Block> {
if let Self::Block(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_blockarg(&self) -> Option<&Blockarg> {
if let Self::Blockarg(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_block_pass(&self) -> Option<&BlockPass> {
if let Self::BlockPass(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_break(&self) -> Option<&Break> {
if let Self::Break(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_case(&self) -> Option<&Case> {
if let Self::Case(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_case_match(&self) -> Option<&CaseMatch> {
if let Self::CaseMatch(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_casgn(&self) -> Option<&Casgn> {
if let Self::Casgn(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_cbase(&self) -> Option<&Cbase> {
if let Self::Cbase(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_class(&self) -> Option<&Class> {
if let Self::Class(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_complex(&self) -> Option<&Complex> {
if let Self::Complex(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_const(&self) -> Option<&Const> {
if let Self::Const(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_const_pattern(&self) -> Option<&ConstPattern> {
if let Self::ConstPattern(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_c_send(&self) -> Option<&CSend> {
if let Self::CSend(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_cvar(&self) -> Option<&Cvar> {
if let Self::Cvar(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_cvasgn(&self) -> Option<&Cvasgn> {
if let Self::Cvasgn(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_def(&self) -> Option<&Def> {
if let Self::Def(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_defined(&self) -> Option<&Defined> {
if let Self::Defined(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_defs(&self) -> Option<&Defs> {
if let Self::Defs(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_dstr(&self) -> Option<&Dstr> {
if let Self::Dstr(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_dsym(&self) -> Option<&Dsym> {
if let Self::Dsym(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_e_flip_flop(&self) -> Option<&EFlipFlop> {
if let Self::EFlipFlop(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_empty_else(&self) -> Option<&EmptyElse> {
if let Self::EmptyElse(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_encoding(&self) -> Option<&Encoding> {
if let Self::Encoding(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_ensure(&self) -> Option<&Ensure> {
if let Self::Ensure(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_erange(&self) -> Option<&Erange> {
if let Self::Erange(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_false(&self) -> Option<&False> {
if let Self::False(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_file(&self) -> Option<&File> {
if let Self::File(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_find_pattern(&self) -> Option<&FindPattern> {
if let Self::FindPattern(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_float(&self) -> Option<&Float> {
if let Self::Float(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_for(&self) -> Option<&For> {
if let Self::For(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_forward_arg(&self) -> Option<&ForwardArg> {
if let Self::ForwardArg(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_forwarded_args(&self) -> Option<&ForwardedArgs> {
if let Self::ForwardedArgs(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_gvar(&self) -> Option<&Gvar> {
if let Self::Gvar(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_gvasgn(&self) -> Option<&Gvasgn> {
if let Self::Gvasgn(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_hash(&self) -> Option<&Hash> {
if let Self::Hash(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_hash_pattern(&self) -> Option<&HashPattern> {
if let Self::HashPattern(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_heredoc(&self) -> Option<&Heredoc> {
if let Self::Heredoc(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_if(&self) -> Option<&If> {
if let Self::If(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_if_guard(&self) -> Option<&IfGuard> {
if let Self::IfGuard(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_i_flip_flop(&self) -> Option<&IFlipFlop> {
if let Self::IFlipFlop(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_if_mod(&self) -> Option<&IfMod> {
if let Self::IfMod(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_if_ternary(&self) -> Option<&IfTernary> {
if let Self::IfTernary(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_index(&self) -> Option<&Index> {
if let Self::Index(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_index_asgn(&self) -> Option<&IndexAsgn> {
if let Self::IndexAsgn(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_in_pattern(&self) -> Option<&InPattern> {
if let Self::InPattern(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_int(&self) -> Option<&Int> {
if let Self::Int(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_irange(&self) -> Option<&Irange> {
if let Self::Irange(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_ivar(&self) -> Option<&Ivar> {
if let Self::Ivar(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_ivasgn(&self) -> Option<&Ivasgn> {
if let Self::Ivasgn(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_kwarg(&self) -> Option<&Kwarg> {
if let Self::Kwarg(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_kwargs(&self) -> Option<&Kwargs> {
if let Self::Kwargs(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_kw_begin(&self) -> Option<&KwBegin> {
if let Self::KwBegin(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_kwnilarg(&self) -> Option<&Kwnilarg> {
if let Self::Kwnilarg(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_kwoptarg(&self) -> Option<&Kwoptarg> {
if let Self::Kwoptarg(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_kwrestarg(&self) -> Option<&Kwrestarg> {
if let Self::Kwrestarg(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_kwsplat(&self) -> Option<&Kwsplat> {
if let Self::Kwsplat(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_lambda(&self) -> Option<&Lambda> {
if let Self::Lambda(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_line(&self) -> Option<&Line> {
if let Self::Line(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_lvar(&self) -> Option<&Lvar> {
if let Self::Lvar(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_lvasgn(&self) -> Option<&Lvasgn> {
if let Self::Lvasgn(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_masgn(&self) -> Option<&Masgn> {
if let Self::Masgn(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_match_alt(&self) -> Option<&MatchAlt> {
if let Self::MatchAlt(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_match_as(&self) -> Option<&MatchAs> {
if let Self::MatchAs(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_match_current_line(&self) -> Option<&MatchCurrentLine> {
if let Self::MatchCurrentLine(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_match_nil_pattern(&self) -> Option<&MatchNilPattern> {
if let Self::MatchNilPattern(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_match_pattern(&self) -> Option<&MatchPattern> {
if let Self::MatchPattern(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_match_pattern_p(&self) -> Option<&MatchPatternP> {
if let Self::MatchPatternP(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_match_rest(&self) -> Option<&MatchRest> {
if let Self::MatchRest(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_match_var(&self) -> Option<&MatchVar> {
if let Self::MatchVar(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_match_with_lvasgn(&self) -> Option<&MatchWithLvasgn> {
if let Self::MatchWithLvasgn(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_mlhs(&self) -> Option<&Mlhs> {
if let Self::Mlhs(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_module(&self) -> Option<&Module> {
if let Self::Module(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_next(&self) -> Option<&Next> {
if let Self::Next(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_nil(&self) -> Option<&Nil> {
if let Self::Nil(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_nth_ref(&self) -> Option<&NthRef> {
if let Self::NthRef(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_numblock(&self) -> Option<&Numblock> {
if let Self::Numblock(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_op_asgn(&self) -> Option<&OpAsgn> {
if let Self::OpAsgn(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_optarg(&self) -> Option<&Optarg> {
if let Self::Optarg(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_or(&self) -> Option<&Or> {
if let Self::Or(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_or_asgn(&self) -> Option<&OrAsgn> {
if let Self::OrAsgn(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_pair(&self) -> Option<&Pair> {
if let Self::Pair(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_pin(&self) -> Option<&Pin> {
if let Self::Pin(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_postexe(&self) -> Option<&Postexe> {
if let Self::Postexe(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_preexe(&self) -> Option<&Preexe> {
if let Self::Preexe(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_procarg0(&self) -> Option<&Procarg0> {
if let Self::Procarg0(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_rational(&self) -> Option<&Rational> {
if let Self::Rational(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_redo(&self) -> Option<&Redo> {
if let Self::Redo(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_regexp(&self) -> Option<&Regexp> {
if let Self::Regexp(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_reg_opt(&self) -> Option<&RegOpt> {
if let Self::RegOpt(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_rescue(&self) -> Option<&Rescue> {
if let Self::Rescue(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_rescue_body(&self) -> Option<&RescueBody> {
if let Self::RescueBody(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_restarg(&self) -> Option<&Restarg> {
if let Self::Restarg(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_retry(&self) -> Option<&Retry> {
if let Self::Retry(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_return(&self) -> Option<&Return> {
if let Self::Return(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_s_class(&self) -> Option<&SClass> {
if let Self::SClass(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_self_(&self) -> Option<&Self_> {
if let Self::Self_(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_send(&self) -> Option<&Send> {
if let Self::Send(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_shadowarg(&self) -> Option<&Shadowarg> {
if let Self::Shadowarg(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_splat(&self) -> Option<&Splat> {
if let Self::Splat(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_str(&self) -> Option<&Str> {
if let Self::Str(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_super(&self) -> Option<&Super> {
if let Self::Super(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_sym(&self) -> Option<&Sym> {
if let Self::Sym(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_true(&self) -> Option<&True> {
if let Self::True(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_undef(&self) -> Option<&Undef> {
if let Self::Undef(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_unless_guard(&self) -> Option<&UnlessGuard> {
if let Self::UnlessGuard(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_until(&self) -> Option<&Until> {
if let Self::Until(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_until_post(&self) -> Option<&UntilPost> {
if let Self::UntilPost(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_when(&self) -> Option<&When> {
if let Self::When(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_while(&self) -> Option<&While> {
if let Self::While(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_while_post(&self) -> Option<&WhilePost> {
if let Self::WhilePost(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_x_heredoc(&self) -> Option<&XHeredoc> {
if let Self::XHeredoc(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_xstr(&self) -> Option<&Xstr> {
if let Self::Xstr(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_yield(&self) -> Option<&Yield> {
if let Self::Yield(inner) = self {
Some(inner)
} else {
None
}
}
pub fn as_z_super(&self) -> Option<&ZSuper> {
if let Self::ZSuper(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_alias_mut(&mut self) -> Option<&mut Alias> {
if let Self::Alias(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_and_mut(&mut self) -> Option<&mut And> {
if let Self::And(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_and_asgn_mut(&mut self) -> Option<&mut AndAsgn> {
if let Self::AndAsgn(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_arg_mut(&mut self) -> Option<&mut Arg> {
if let Self::Arg(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_args_mut(&mut self) -> Option<&mut Args> {
if let Self::Args(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_array_mut(&mut self) -> Option<&mut Array> {
if let Self::Array(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_array_pattern_mut(&mut self) -> Option<&mut ArrayPattern> {
if let Self::ArrayPattern(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_array_pattern_with_tail_mut(&mut self) -> Option<&mut ArrayPatternWithTail> {
if let Self::ArrayPatternWithTail(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_back_ref_mut(&mut self) -> Option<&mut BackRef> {
if let Self::BackRef(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_begin_mut(&mut self) -> Option<&mut Begin> {
if let Self::Begin(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_block_mut(&mut self) -> Option<&mut Block> {
if let Self::Block(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_blockarg_mut(&mut self) -> Option<&mut Blockarg> {
if let Self::Blockarg(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_block_pass_mut(&mut self) -> Option<&mut BlockPass> {
if let Self::BlockPass(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_break_mut(&mut self) -> Option<&mut Break> {
if let Self::Break(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_case_mut(&mut self) -> Option<&mut Case> {
if let Self::Case(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_case_match_mut(&mut self) -> Option<&mut CaseMatch> {
if let Self::CaseMatch(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_casgn_mut(&mut self) -> Option<&mut Casgn> {
if let Self::Casgn(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_cbase_mut(&mut self) -> Option<&mut Cbase> {
if let Self::Cbase(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_class_mut(&mut self) -> Option<&mut Class> {
if let Self::Class(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_complex_mut(&mut self) -> Option<&mut Complex> {
if let Self::Complex(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_const_mut(&mut self) -> Option<&mut Const> {
if let Self::Const(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_const_pattern_mut(&mut self) -> Option<&mut ConstPattern> {
if let Self::ConstPattern(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_c_send_mut(&mut self) -> Option<&mut CSend> {
if let Self::CSend(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_cvar_mut(&mut self) -> Option<&mut Cvar> {
if let Self::Cvar(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_cvasgn_mut(&mut self) -> Option<&mut Cvasgn> {
if let Self::Cvasgn(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_def_mut(&mut self) -> Option<&mut Def> {
if let Self::Def(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_defined_mut(&mut self) -> Option<&mut Defined> {
if let Self::Defined(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_defs_mut(&mut self) -> Option<&mut Defs> {
if let Self::Defs(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_dstr_mut(&mut self) -> Option<&mut Dstr> {
if let Self::Dstr(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_dsym_mut(&mut self) -> Option<&mut Dsym> {
if let Self::Dsym(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_e_flip_flop_mut(&mut self) -> Option<&mut EFlipFlop> {
if let Self::EFlipFlop(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_empty_else_mut(&mut self) -> Option<&mut EmptyElse> {
if let Self::EmptyElse(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_encoding_mut(&mut self) -> Option<&mut Encoding> {
if let Self::Encoding(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_ensure_mut(&mut self) -> Option<&mut Ensure> {
if let Self::Ensure(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_erange_mut(&mut self) -> Option<&mut Erange> {
if let Self::Erange(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_false_mut(&mut self) -> Option<&mut False> {
if let Self::False(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_file_mut(&mut self) -> Option<&mut File> {
if let Self::File(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_find_pattern_mut(&mut self) -> Option<&mut FindPattern> {
if let Self::FindPattern(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_float_mut(&mut self) -> Option<&mut Float> {
if let Self::Float(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_for_mut(&mut self) -> Option<&mut For> {
if let Self::For(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_forward_arg_mut(&mut self) -> Option<&mut ForwardArg> {
if let Self::ForwardArg(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_forwarded_args_mut(&mut self) -> Option<&mut ForwardedArgs> {
if let Self::ForwardedArgs(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_gvar_mut(&mut self) -> Option<&mut Gvar> {
if let Self::Gvar(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_gvasgn_mut(&mut self) -> Option<&mut Gvasgn> {
if let Self::Gvasgn(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_hash_mut(&mut self) -> Option<&mut Hash> {
if let Self::Hash(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_hash_pattern_mut(&mut self) -> Option<&mut HashPattern> {
if let Self::HashPattern(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_heredoc_mut(&mut self) -> Option<&mut Heredoc> {
if let Self::Heredoc(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_if_mut(&mut self) -> Option<&mut If> {
if let Self::If(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_if_guard_mut(&mut self) -> Option<&mut IfGuard> {
if let Self::IfGuard(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_i_flip_flop_mut(&mut self) -> Option<&mut IFlipFlop> {
if let Self::IFlipFlop(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_if_mod_mut(&mut self) -> Option<&mut IfMod> {
if let Self::IfMod(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_if_ternary_mut(&mut self) -> Option<&mut IfTernary> {
if let Self::IfTernary(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_index_mut(&mut self) -> Option<&mut Index> {
if let Self::Index(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_index_asgn_mut(&mut self) -> Option<&mut IndexAsgn> {
if let Self::IndexAsgn(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_in_pattern_mut(&mut self) -> Option<&mut InPattern> {
if let Self::InPattern(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_int_mut(&mut self) -> Option<&mut Int> {
if let Self::Int(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_irange_mut(&mut self) -> Option<&mut Irange> {
if let Self::Irange(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_ivar_mut(&mut self) -> Option<&mut Ivar> {
if let Self::Ivar(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_ivasgn_mut(&mut self) -> Option<&mut Ivasgn> {
if let Self::Ivasgn(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_kwarg_mut(&mut self) -> Option<&mut Kwarg> {
if let Self::Kwarg(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_kwargs_mut(&mut self) -> Option<&mut Kwargs> {
if let Self::Kwargs(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_kw_begin_mut(&mut self) -> Option<&mut KwBegin> {
if let Self::KwBegin(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_kwnilarg_mut(&mut self) -> Option<&mut Kwnilarg> {
if let Self::Kwnilarg(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_kwoptarg_mut(&mut self) -> Option<&mut Kwoptarg> {
if let Self::Kwoptarg(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_kwrestarg_mut(&mut self) -> Option<&mut Kwrestarg> {
if let Self::Kwrestarg(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_kwsplat_mut(&mut self) -> Option<&mut Kwsplat> {
if let Self::Kwsplat(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_lambda_mut(&mut self) -> Option<&mut Lambda> {
if let Self::Lambda(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_line_mut(&mut self) -> Option<&mut Line> {
if let Self::Line(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_lvar_mut(&mut self) -> Option<&mut Lvar> {
if let Self::Lvar(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_lvasgn_mut(&mut self) -> Option<&mut Lvasgn> {
if let Self::Lvasgn(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_masgn_mut(&mut self) -> Option<&mut Masgn> {
if let Self::Masgn(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_match_alt_mut(&mut self) -> Option<&mut MatchAlt> {
if let Self::MatchAlt(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_match_as_mut(&mut self) -> Option<&mut MatchAs> {
if let Self::MatchAs(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_match_current_line_mut(&mut self) -> Option<&mut MatchCurrentLine> {
if let Self::MatchCurrentLine(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_match_nil_pattern_mut(&mut self) -> Option<&mut MatchNilPattern> {
if let Self::MatchNilPattern(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_match_pattern_mut(&mut self) -> Option<&mut MatchPattern> {
if let Self::MatchPattern(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_match_pattern_p_mut(&mut self) -> Option<&mut MatchPatternP> {
if let Self::MatchPatternP(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_match_rest_mut(&mut self) -> Option<&mut MatchRest> {
if let Self::MatchRest(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_match_var_mut(&mut self) -> Option<&mut MatchVar> {
if let Self::MatchVar(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_match_with_lvasgn_mut(&mut self) -> Option<&mut MatchWithLvasgn> {
if let Self::MatchWithLvasgn(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_mlhs_mut(&mut self) -> Option<&mut Mlhs> {
if let Self::Mlhs(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_module_mut(&mut self) -> Option<&mut Module> {
if let Self::Module(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_next_mut(&mut self) -> Option<&mut Next> {
if let Self::Next(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_nil_mut(&mut self) -> Option<&mut Nil> {
if let Self::Nil(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_nth_ref_mut(&mut self) -> Option<&mut NthRef> {
if let Self::NthRef(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_numblock_mut(&mut self) -> Option<&mut Numblock> {
if let Self::Numblock(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_op_asgn_mut(&mut self) -> Option<&mut OpAsgn> {
if let Self::OpAsgn(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_optarg_mut(&mut self) -> Option<&mut Optarg> {
if let Self::Optarg(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_or_mut(&mut self) -> Option<&mut Or> {
if let Self::Or(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_or_asgn_mut(&mut self) -> Option<&mut OrAsgn> {
if let Self::OrAsgn(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_pair_mut(&mut self) -> Option<&mut Pair> {
if let Self::Pair(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_pin_mut(&mut self) -> Option<&mut Pin> {
if let Self::Pin(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_postexe_mut(&mut self) -> Option<&mut Postexe> {
if let Self::Postexe(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_preexe_mut(&mut self) -> Option<&mut Preexe> {
if let Self::Preexe(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_procarg0_mut(&mut self) -> Option<&mut Procarg0> {
if let Self::Procarg0(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_rational_mut(&mut self) -> Option<&mut Rational> {
if let Self::Rational(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_redo_mut(&mut self) -> Option<&mut Redo> {
if let Self::Redo(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_regexp_mut(&mut self) -> Option<&mut Regexp> {
if let Self::Regexp(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_reg_opt_mut(&mut self) -> Option<&mut RegOpt> {
if let Self::RegOpt(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_rescue_mut(&mut self) -> Option<&mut Rescue> {
if let Self::Rescue(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_rescue_body_mut(&mut self) -> Option<&mut RescueBody> {
if let Self::RescueBody(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_restarg_mut(&mut self) -> Option<&mut Restarg> {
if let Self::Restarg(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_retry_mut(&mut self) -> Option<&mut Retry> {
if let Self::Retry(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_return_mut(&mut self) -> Option<&mut Return> {
if let Self::Return(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_s_class_mut(&mut self) -> Option<&mut SClass> {
if let Self::SClass(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_self__mut(&mut self) -> Option<&mut Self_> {
if let Self::Self_(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_send_mut(&mut self) -> Option<&mut Send> {
if let Self::Send(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_shadowarg_mut(&mut self) -> Option<&mut Shadowarg> {
if let Self::Shadowarg(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_splat_mut(&mut self) -> Option<&mut Splat> {
if let Self::Splat(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_str_mut(&mut self) -> Option<&mut Str> {
if let Self::Str(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_super_mut(&mut self) -> Option<&mut Super> {
if let Self::Super(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_sym_mut(&mut self) -> Option<&mut Sym> {
if let Self::Sym(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_true_mut(&mut self) -> Option<&mut True> {
if let Self::True(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_undef_mut(&mut self) -> Option<&mut Undef> {
if let Self::Undef(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_unless_guard_mut(&mut self) -> Option<&mut UnlessGuard> {
if let Self::UnlessGuard(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_until_mut(&mut self) -> Option<&mut Until> {
if let Self::Until(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_until_post_mut(&mut self) -> Option<&mut UntilPost> {
if let Self::UntilPost(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_when_mut(&mut self) -> Option<&mut When> {
if let Self::When(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_while_mut(&mut self) -> Option<&mut While> {
if let Self::While(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_while_post_mut(&mut self) -> Option<&mut WhilePost> {
if let Self::WhilePost(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_x_heredoc_mut(&mut self) -> Option<&mut XHeredoc> {
if let Self::XHeredoc(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_xstr_mut(&mut self) -> Option<&mut Xstr> {
if let Self::Xstr(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_yield_mut(&mut self) -> Option<&mut Yield> {
if let Self::Yield(inner) = self {
Some(inner)
} else {
None
}
}
#[allow(non_snake_case)]
pub fn as_z_super_mut(&mut self) -> Option<&mut ZSuper> {
if let Self::ZSuper(inner) = self {
Some(inner)
} else {
None
}
}
pub fn into_alias(self) -> Alias {
if let Self::Alias(inner) = self {
inner
} else {
panic!("bug: expected type Alias, got {:?}", self)
}
}
pub fn into_and(self) -> And {
if let Self::And(inner) = self {
inner
} else {
panic!("bug: expected type And, got {:?}", self)
}
}
pub fn into_and_asgn(self) -> AndAsgn {
if let Self::AndAsgn(inner) = self {
inner
} else {
panic!("bug: expected type AndAsgn, got {:?}", self)
}
}
pub fn into_arg(self) -> Arg {
if let Self::Arg(inner) = self {
inner
} else {
panic!("bug: expected type Arg, got {:?}", self)
}
}
pub fn into_args(self) -> Args {
if let Self::Args(inner) = self {
inner
} else {
panic!("bug: expected type Args, got {:?}", self)
}
}
pub fn into_array(self) -> Array {
if let Self::Array(inner) = self {
inner
} else {
panic!("bug: expected type Array, got {:?}", self)
}
}
pub fn into_array_pattern(self) -> ArrayPattern {
if let Self::ArrayPattern(inner) = self {
inner
} else {
panic!("bug: expected type ArrayPattern, got {:?}", self)
}
}
pub fn into_array_pattern_with_tail(self) -> ArrayPatternWithTail {
if let Self::ArrayPatternWithTail(inner) = self {
inner
} else {
panic!("bug: expected type ArrayPatternWithTail, got {:?}", self)
}
}
pub fn into_back_ref(self) -> BackRef {
if let Self::BackRef(inner) = self {
inner
} else {
panic!("bug: expected type BackRef, got {:?}", self)
}
}
pub fn into_begin(self) -> Begin {
if let Self::Begin(inner) = self {
inner
} else {
panic!("bug: expected type Begin, got {:?}", self)
}
}
pub fn into_block(self) -> Block {
if let Self::Block(inner) = self {
inner
} else {
panic!("bug: expected type Block, got {:?}", self)
}
}
pub fn into_blockarg(self) -> Blockarg {
if let Self::Blockarg(inner) = self {
inner
} else {
panic!("bug: expected type Blockarg, got {:?}", self)
}
}
pub fn into_block_pass(self) -> BlockPass {
if let Self::BlockPass(inner) = self {
inner
} else {
panic!("bug: expected type BlockPass, got {:?}", self)
}
}
pub fn into_break(self) -> Break {
if let Self::Break(inner) = self {
inner
} else {
panic!("bug: expected type Break, got {:?}", self)
}
}
pub fn into_case(self) -> Case {
if let Self::Case(inner) = self {
inner
} else {
panic!("bug: expected type Case, got {:?}", self)
}
}
pub fn into_case_match(self) -> CaseMatch {
if let Self::CaseMatch(inner) = self {
inner
} else {
panic!("bug: expected type CaseMatch, got {:?}", self)
}
}
pub fn into_casgn(self) -> Casgn {
if let Self::Casgn(inner) = self {
inner
} else {
panic!("bug: expected type Casgn, got {:?}", self)
}
}
pub fn into_cbase(self) -> Cbase {
if let Self::Cbase(inner) = self {
inner
} else {
panic!("bug: expected type Cbase, got {:?}", self)
}
}
pub fn into_class(self) -> Class {
if let Self::Class(inner) = self {
inner
} else {
panic!("bug: expected type Class, got {:?}", self)
}
}
pub fn into_complex(self) -> Complex {
if let Self::Complex(inner) = self {
inner
} else {
panic!("bug: expected type Complex, got {:?}", self)
}
}
pub fn into_const(self) -> Const {
if let Self::Const(inner) = self {
inner
} else {
panic!("bug: expected type Const, got {:?}", self)
}
}
pub fn into_const_pattern(self) -> ConstPattern {
if let Self::ConstPattern(inner) = self {
inner
} else {
panic!("bug: expected type ConstPattern, got {:?}", self)
}
}
pub fn into_c_send(self) -> CSend {
if let Self::CSend(inner) = self {
inner
} else {
panic!("bug: expected type CSend, got {:?}", self)
}
}
pub fn into_cvar(self) -> Cvar {
if let Self::Cvar(inner) = self {
inner
} else {
panic!("bug: expected type Cvar, got {:?}", self)
}
}
pub fn into_cvasgn(self) -> Cvasgn {
if let Self::Cvasgn(inner) = self {
inner
} else {
panic!("bug: expected type Cvasgn, got {:?}", self)
}
}
pub fn into_def(self) -> Def {
if let Self::Def(inner) = self {
inner
} else {
panic!("bug: expected type Def, got {:?}", self)
}
}
pub fn into_defined(self) -> Defined {
if let Self::Defined(inner) = self {
inner
} else {
panic!("bug: expected type Defined, got {:?}", self)
}
}
pub fn into_defs(self) -> Defs {
if let Self::Defs(inner) = self {
inner
} else {
panic!("bug: expected type Defs, got {:?}", self)
}
}
pub fn into_dstr(self) -> Dstr {
if let Self::Dstr(inner) = self {
inner
} else {
panic!("bug: expected type Dstr, got {:?}", self)
}
}
pub fn into_dsym(self) -> Dsym {
if let Self::Dsym(inner) = self {
inner
} else {
panic!("bug: expected type Dsym, got {:?}", self)
}
}
pub fn into_e_flip_flop(self) -> EFlipFlop {
if let Self::EFlipFlop(inner) = self {
inner
} else {
panic!("bug: expected type EFlipFlop, got {:?}", self)
}
}
pub fn into_empty_else(self) -> EmptyElse {
if let Self::EmptyElse(inner) = self {
inner
} else {
panic!("bug: expected type EmptyElse, got {:?}", self)
}
}
pub fn into_encoding(self) -> Encoding {
if let Self::Encoding(inner) = self {
inner
} else {
panic!("bug: expected type Encoding, got {:?}", self)
}
}
pub fn into_ensure(self) -> Ensure {
if let Self::Ensure(inner) = self {
inner
} else {
panic!("bug: expected type Ensure, got {:?}", self)
}
}
pub fn into_erange(self) -> Erange {
if let Self::Erange(inner) = self {
inner
} else {
panic!("bug: expected type Erange, got {:?}", self)
}
}
pub fn into_false(self) -> False {
if let Self::False(inner) = self {
inner
} else {
panic!("bug: expected type False, got {:?}", self)
}
}
pub fn into_file(self) -> File {
if let Self::File(inner) = self {
inner
} else {
panic!("bug: expected type File, got {:?}", self)
}
}
pub fn into_find_pattern(self) -> FindPattern {
if let Self::FindPattern(inner) = self {
inner
} else {
panic!("bug: expected type FindPattern, got {:?}", self)
}
}
pub fn into_float(self) -> Float {
if let Self::Float(inner) = self {
inner
} else {
panic!("bug: expected type Float, got {:?}", self)
}
}
pub fn into_for(self) -> For {
if let Self::For(inner) = self {
inner
} else {
panic!("bug: expected type For, got {:?}", self)
}
}
pub fn into_forward_arg(self) -> ForwardArg {
if let Self::ForwardArg(inner) = self {
inner
} else {
panic!("bug: expected type ForwardArg, got {:?}", self)
}
}
pub fn into_forwarded_args(self) -> ForwardedArgs {
if let Self::ForwardedArgs(inner) = self {
inner
} else {
panic!("bug: expected type ForwardedArgs, got {:?}", self)
}
}
pub fn into_gvar(self) -> Gvar {
if let Self::Gvar(inner) = self {
inner
} else {
panic!("bug: expected type Gvar, got {:?}", self)
}
}
pub fn into_gvasgn(self) -> Gvasgn {
if let Self::Gvasgn(inner) = self {
inner
} else {
panic!("bug: expected type Gvasgn, got {:?}", self)
}
}
pub fn into_hash(self) -> Hash {
if let Self::Hash(inner) = self {
inner
} else {
panic!("bug: expected type Hash, got {:?}", self)
}
}
pub fn into_hash_pattern(self) -> HashPattern {
if let Self::HashPattern(inner) = self {
inner
} else {
panic!("bug: expected type HashPattern, got {:?}", self)
}
}
pub fn into_heredoc(self) -> Heredoc {
if let Self::Heredoc(inner) = self {
inner
} else {
panic!("bug: expected type Heredoc, got {:?}", self)
}
}
pub fn into_if(self) -> If {
if let Self::If(inner) = self {
inner
} else {
panic!("bug: expected type If, got {:?}", self)
}
}
pub fn into_if_guard(self) -> IfGuard {
if let Self::IfGuard(inner) = self {
inner
} else {
panic!("bug: expected type IfGuard, got {:?}", self)
}
}
pub fn into_i_flip_flop(self) -> IFlipFlop {
if let Self::IFlipFlop(inner) = self {
inner
} else {
panic!("bug: expected type IFlipFlop, got {:?}", self)
}
}
pub fn into_if_mod(self) -> IfMod {
if let Self::IfMod(inner) = self {
inner
} else {
panic!("bug: expected type IfMod, got {:?}", self)
}
}
pub fn into_if_ternary(self) -> IfTernary {
if let Self::IfTernary(inner) = self {
inner
} else {
panic!("bug: expected type IfTernary, got {:?}", self)
}
}
pub fn into_index(self) -> Index {
if let Self::Index(inner) = self {
inner
} else {
panic!("bug: expected type Index, got {:?}", self)
}
}
pub fn into_index_asgn(self) -> IndexAsgn {
if let Self::IndexAsgn(inner) = self {
inner
} else {
panic!("bug: expected type IndexAsgn, got {:?}", self)
}
}
pub fn into_in_pattern(self) -> InPattern {
if let Self::InPattern(inner) = self {
inner
} else {
panic!("bug: expected type InPattern, got {:?}", self)
}
}
pub fn into_int(self) -> Int {
if let Self::Int(inner) = self {
inner
} else {
panic!("bug: expected type Int, got {:?}", self)
}
}
pub fn into_irange(self) -> Irange {
if let Self::Irange(inner) = self {
inner
} else {
panic!("bug: expected type Irange, got {:?}", self)
}
}
pub fn into_ivar(self) -> Ivar {
if let Self::Ivar(inner) = self {
inner
} else {
panic!("bug: expected type Ivar, got {:?}", self)
}
}
pub fn into_ivasgn(self) -> Ivasgn {
if let Self::Ivasgn(inner) = self {
inner
} else {
panic!("bug: expected type Ivasgn, got {:?}", self)
}
}
pub fn into_kwarg(self) -> Kwarg {
if let Self::Kwarg(inner) = self {
inner
} else {
panic!("bug: expected type Kwarg, got {:?}", self)
}
}
pub fn into_kwargs(self) -> Kwargs {
if let Self::Kwargs(inner) = self {
inner
} else {
panic!("bug: expected type Kwargs, got {:?}", self)
}
}
pub fn into_kw_begin(self) -> KwBegin {
if let Self::KwBegin(inner) = self {
inner
} else {
panic!("bug: expected type KwBegin, got {:?}", self)
}
}
pub fn into_kwnilarg(self) -> Kwnilarg {
if let Self::Kwnilarg(inner) = self {
inner
} else {
panic!("bug: expected type Kwnilarg, got {:?}", self)
}
}
pub fn into_kwoptarg(self) -> Kwoptarg {
if let Self::Kwoptarg(inner) = self {
inner
} else {
panic!("bug: expected type Kwoptarg, got {:?}", self)
}
}
pub fn into_kwrestarg(self) -> Kwrestarg {
if let Self::Kwrestarg(inner) = self {
inner
} else {
panic!("bug: expected type Kwrestarg, got {:?}", self)
}
}
pub fn into_kwsplat(self) -> Kwsplat {
if let Self::Kwsplat(inner) = self {
inner
} else {
panic!("bug: expected type Kwsplat, got {:?}", self)
}
}
pub fn into_lambda(self) -> Lambda {
if let Self::Lambda(inner) = self {
inner
} else {
panic!("bug: expected type Lambda, got {:?}", self)
}
}
pub fn into_line(self) -> Line {
if let Self::Line(inner) = self {
inner
} else {
panic!("bug: expected type Line, got {:?}", self)
}
}
pub fn into_lvar(self) -> Lvar {
if let Self::Lvar(inner) = self {
inner
} else {
panic!("bug: expected type Lvar, got {:?}", self)
}
}
pub fn into_lvasgn(self) -> Lvasgn {
if let Self::Lvasgn(inner) = self {
inner
} else {
panic!("bug: expected type Lvasgn, got {:?}", self)
}
}
pub fn into_masgn(self) -> Masgn {
if let Self::Masgn(inner) = self {
inner
} else {
panic!("bug: expected type Masgn, got {:?}", self)
}
}
pub fn into_match_alt(self) -> MatchAlt {
if let Self::MatchAlt(inner) = self {
inner
} else {
panic!("bug: expected type MatchAlt, got {:?}", self)
}
}
pub fn into_match_as(self) -> MatchAs {
if let Self::MatchAs(inner) = self {
inner
} else {
panic!("bug: expected type MatchAs, got {:?}", self)
}
}
pub fn into_match_current_line(self) -> MatchCurrentLine {
if let Self::MatchCurrentLine(inner) = self {
inner
} else {
panic!("bug: expected type MatchCurrentLine, got {:?}", self)
}
}
pub fn into_match_nil_pattern(self) -> MatchNilPattern {
if let Self::MatchNilPattern(inner) = self {
inner
} else {
panic!("bug: expected type MatchNilPattern, got {:?}", self)
}
}
pub fn into_match_pattern(self) -> MatchPattern {
if let Self::MatchPattern(inner) = self {
inner
} else {
panic!("bug: expected type MatchPattern, got {:?}", self)
}
}
pub fn into_match_pattern_p(self) -> MatchPatternP {
if let Self::MatchPatternP(inner) = self {
inner
} else {
panic!("bug: expected type MatchPatternP, got {:?}", self)
}
}
pub fn into_match_rest(self) -> MatchRest {
if let Self::MatchRest(inner) = self {
inner
} else {
panic!("bug: expected type MatchRest, got {:?}", self)
}
}
pub fn into_match_var(self) -> MatchVar {
if let Self::MatchVar(inner) = self {
inner
} else {
panic!("bug: expected type MatchVar, got {:?}", self)
}
}
pub fn into_match_with_lvasgn(self) -> MatchWithLvasgn {
if let Self::MatchWithLvasgn(inner) = self {
inner
} else {
panic!("bug: expected type MatchWithLvasgn, got {:?}", self)
}
}
pub fn into_mlhs(self) -> Mlhs {
if let Self::Mlhs(inner) = self {
inner
} else {
panic!("bug: expected type Mlhs, got {:?}", self)
}
}
pub fn into_module(self) -> Module {
if let Self::Module(inner) = self {
inner
} else {
panic!("bug: expected type Module, got {:?}", self)
}
}
pub fn into_next(self) -> Next {
if let Self::Next(inner) = self {
inner
} else {
panic!("bug: expected type Next, got {:?}", self)
}
}
pub fn into_nil(self) -> Nil {
if let Self::Nil(inner) = self {
inner
} else {
panic!("bug: expected type Nil, got {:?}", self)
}
}
pub fn into_nth_ref(self) -> NthRef {
if let Self::NthRef(inner) = self {
inner
} else {
panic!("bug: expected type NthRef, got {:?}", self)
}
}
pub fn into_numblock(self) -> Numblock {
if let Self::Numblock(inner) = self {
inner
} else {
panic!("bug: expected type Numblock, got {:?}", self)
}
}
pub fn into_op_asgn(self) -> OpAsgn {
if let Self::OpAsgn(inner) = self {
inner
} else {
panic!("bug: expected type OpAsgn, got {:?}", self)
}
}
pub fn into_optarg(self) -> Optarg {
if let Self::Optarg(inner) = self {
inner
} else {
panic!("bug: expected type Optarg, got {:?}", self)
}
}
pub fn into_or(self) -> Or {
if let Self::Or(inner) = self {
inner
} else {
panic!("bug: expected type Or, got {:?}", self)
}
}
pub fn into_or_asgn(self) -> OrAsgn {
if let Self::OrAsgn(inner) = self {
inner
} else {
panic!("bug: expected type OrAsgn, got {:?}", self)
}
}
pub fn into_pair(self) -> Pair {
if let Self::Pair(inner) = self {
inner
} else {
panic!("bug: expected type Pair, got {:?}", self)
}
}
pub fn into_pin(self) -> Pin {
if let Self::Pin(inner) = self {
inner
} else {
panic!("bug: expected type Pin, got {:?}", self)
}
}
pub fn into_postexe(self) -> Postexe {
if let Self::Postexe(inner) = self {
inner
} else {
panic!("bug: expected type Postexe, got {:?}", self)
}
}
pub fn into_preexe(self) -> Preexe {
if let Self::Preexe(inner) = self {
inner
} else {
panic!("bug: expected type Preexe, got {:?}", self)
}
}
pub fn into_procarg0(self) -> Procarg0 {
if let Self::Procarg0(inner) = self {
inner
} else {
panic!("bug: expected type Procarg0, got {:?}", self)
}
}
pub fn into_rational(self) -> Rational {
if let Self::Rational(inner) = self {
inner
} else {
panic!("bug: expected type Rational, got {:?}", self)
}
}
pub fn into_redo(self) -> Redo {
if let Self::Redo(inner) = self {
inner
} else {
panic!("bug: expected type Redo, got {:?}", self)
}
}
pub fn into_regexp(self) -> Regexp {
if let Self::Regexp(inner) = self {
inner
} else {
panic!("bug: expected type Regexp, got {:?}", self)
}
}
pub fn into_reg_opt(self) -> RegOpt {
if let Self::RegOpt(inner) = self {
inner
} else {
panic!("bug: expected type RegOpt, got {:?}", self)
}
}
pub fn into_rescue(self) -> Rescue {
if let Self::Rescue(inner) = self {
inner
} else {
panic!("bug: expected type Rescue, got {:?}", self)
}
}
pub fn into_rescue_body(self) -> RescueBody {
if let Self::RescueBody(inner) = self {
inner
} else {
panic!("bug: expected type RescueBody, got {:?}", self)
}
}
pub fn into_restarg(self) -> Restarg {
if let Self::Restarg(inner) = self {
inner
} else {
panic!("bug: expected type Restarg, got {:?}", self)
}
}
pub fn into_retry(self) -> Retry {
if let Self::Retry(inner) = self {
inner
} else {
panic!("bug: expected type Retry, got {:?}", self)
}
}
pub fn into_return(self) -> Return {
if let Self::Return(inner) = self {
inner
} else {
panic!("bug: expected type Return, got {:?}", self)
}
}
pub fn into_s_class(self) -> SClass {
if let Self::SClass(inner) = self {
inner
} else {
panic!("bug: expected type SClass, got {:?}", self)
}
}
pub fn into_self_(self) -> Self_ {
if let Self::Self_(inner) = self {
inner
} else {
panic!("bug: expected type Self_, got {:?}", self)
}
}
pub fn into_send(self) -> Send {
if let Self::Send(inner) = self {
inner
} else {
panic!("bug: expected type Send, got {:?}", self)
}
}
pub fn into_shadowarg(self) -> Shadowarg {
if let Self::Shadowarg(inner) = self {
inner
} else {
panic!("bug: expected type Shadowarg, got {:?}", self)
}
}
pub fn into_splat(self) -> Splat {
if let Self::Splat(inner) = self {
inner
} else {
panic!("bug: expected type Splat, got {:?}", self)
}
}
pub fn into_str(self) -> Str {
if let Self::Str(inner) = self {
inner
} else {
panic!("bug: expected type Str, got {:?}", self)
}
}
pub fn into_super(self) -> Super {
if let Self::Super(inner) = self {
inner
} else {
panic!("bug: expected type Super, got {:?}", self)
}
}
pub fn into_sym(self) -> Sym {
if let Self::Sym(inner) = self {
inner
} else {
panic!("bug: expected type Sym, got {:?}", self)
}
}
pub fn into_true(self) -> True {
if let Self::True(inner) = self {
inner
} else {
panic!("bug: expected type True, got {:?}", self)
}
}
pub fn into_undef(self) -> Undef {
if let Self::Undef(inner) = self {
inner
} else {
panic!("bug: expected type Undef, got {:?}", self)
}
}
pub fn into_unless_guard(self) -> UnlessGuard {
if let Self::UnlessGuard(inner) = self {
inner
} else {
panic!("bug: expected type UnlessGuard, got {:?}", self)
}
}
pub fn into_until(self) -> Until {
if let Self::Until(inner) = self {
inner
} else {
panic!("bug: expected type Until, got {:?}", self)
}
}
pub fn into_until_post(self) -> UntilPost {
if let Self::UntilPost(inner) = self {
inner
} else {
panic!("bug: expected type UntilPost, got {:?}", self)
}
}
pub fn into_when(self) -> When {
if let Self::When(inner) = self {
inner
} else {
panic!("bug: expected type When, got {:?}", self)
}
}
pub fn into_while(self) -> While {
if let Self::While(inner) = self {
inner
} else {
panic!("bug: expected type While, got {:?}", self)
}
}
pub fn into_while_post(self) -> WhilePost {
if let Self::WhilePost(inner) = self {
inner
} else {
panic!("bug: expected type WhilePost, got {:?}", self)
}
}
pub fn into_x_heredoc(self) -> XHeredoc {
if let Self::XHeredoc(inner) = self {
inner
} else {
panic!("bug: expected type XHeredoc, got {:?}", self)
}
}
pub fn into_xstr(self) -> Xstr {
if let Self::Xstr(inner) = self {
inner
} else {
panic!("bug: expected type Xstr, got {:?}", self)
}
}
pub fn into_yield(self) -> Yield {
if let Self::Yield(inner) = self {
inner
} else {
panic!("bug: expected type Yield, got {:?}", self)
}
}
pub fn into_z_super(self) -> ZSuper {
if let Self::ZSuper(inner) = self {
inner
} else {
panic!("bug: expected type ZSuper, got {:?}", self)
}
}
}