use crate::nodes::*;
use crate::Node;
pub trait Visitor: Sized {
fn on_alias(&mut self, node: &Alias) {
visit_alias(self, node);
}
fn on_and(&mut self, node: &And) {
visit_and(self, node);
}
fn on_and_asgn(&mut self, node: &AndAsgn) {
visit_and_asgn(self, node);
}
fn on_arg(&mut self, node: &Arg) {
visit_arg(self, node);
}
fn on_args(&mut self, node: &Args) {
visit_args(self, node);
}
fn on_array(&mut self, node: &Array) {
visit_array(self, node);
}
fn on_array_pattern(&mut self, node: &ArrayPattern) {
visit_array_pattern(self, node);
}
fn on_array_pattern_with_tail(&mut self, node: &ArrayPatternWithTail) {
visit_array_pattern_with_tail(self, node);
}
fn on_back_ref(&mut self, node: &BackRef) {
visit_back_ref(self, node);
}
fn on_begin(&mut self, node: &Begin) {
visit_begin(self, node);
}
fn on_block(&mut self, node: &Block) {
visit_block(self, node);
}
fn on_blockarg(&mut self, node: &Blockarg) {
visit_blockarg(self, node);
}
fn on_block_pass(&mut self, node: &BlockPass) {
visit_block_pass(self, node);
}
fn on_break(&mut self, node: &Break) {
visit_break(self, node);
}
fn on_case(&mut self, node: &Case) {
visit_case(self, node);
}
fn on_case_match(&mut self, node: &CaseMatch) {
visit_case_match(self, node);
}
fn on_casgn(&mut self, node: &Casgn) {
visit_casgn(self, node);
}
fn on_cbase(&mut self, node: &Cbase) {
visit_cbase(self, node);
}
fn on_class(&mut self, node: &Class) {
visit_class(self, node);
}
fn on_complex(&mut self, node: &Complex) {
visit_complex(self, node);
}
fn on_const(&mut self, node: &Const) {
visit_const(self, node);
}
fn on_const_pattern(&mut self, node: &ConstPattern) {
visit_const_pattern(self, node);
}
fn on_c_send(&mut self, node: &CSend) {
visit_c_send(self, node);
}
fn on_cvar(&mut self, node: &Cvar) {
visit_cvar(self, node);
}
fn on_cvasgn(&mut self, node: &Cvasgn) {
visit_cvasgn(self, node);
}
fn on_def(&mut self, node: &Def) {
visit_def(self, node);
}
fn on_defined(&mut self, node: &Defined) {
visit_defined(self, node);
}
fn on_defs(&mut self, node: &Defs) {
visit_defs(self, node);
}
fn on_dstr(&mut self, node: &Dstr) {
visit_dstr(self, node);
}
fn on_dsym(&mut self, node: &Dsym) {
visit_dsym(self, node);
}
fn on_e_flip_flop(&mut self, node: &EFlipFlop) {
visit_e_flip_flop(self, node);
}
fn on_empty_else(&mut self, node: &EmptyElse) {
visit_empty_else(self, node);
}
fn on_encoding(&mut self, node: &Encoding) {
visit_encoding(self, node);
}
fn on_ensure(&mut self, node: &Ensure) {
visit_ensure(self, node);
}
fn on_erange(&mut self, node: &Erange) {
visit_erange(self, node);
}
fn on_false(&mut self, node: &False) {
visit_false(self, node);
}
fn on_file(&mut self, node: &File) {
visit_file(self, node);
}
fn on_find_pattern(&mut self, node: &FindPattern) {
visit_find_pattern(self, node);
}
fn on_float(&mut self, node: &Float) {
visit_float(self, node);
}
fn on_for(&mut self, node: &For) {
visit_for(self, node);
}
fn on_forward_arg(&mut self, node: &ForwardArg) {
visit_forward_arg(self, node);
}
fn on_forwarded_args(&mut self, node: &ForwardedArgs) {
visit_forwarded_args(self, node);
}
fn on_gvar(&mut self, node: &Gvar) {
visit_gvar(self, node);
}
fn on_gvasgn(&mut self, node: &Gvasgn) {
visit_gvasgn(self, node);
}
fn on_hash(&mut self, node: &Hash) {
visit_hash(self, node);
}
fn on_hash_pattern(&mut self, node: &HashPattern) {
visit_hash_pattern(self, node);
}
fn on_heredoc(&mut self, node: &Heredoc) {
visit_heredoc(self, node);
}
fn on_if(&mut self, node: &If) {
visit_if(self, node);
}
fn on_if_guard(&mut self, node: &IfGuard) {
visit_if_guard(self, node);
}
fn on_i_flip_flop(&mut self, node: &IFlipFlop) {
visit_i_flip_flop(self, node);
}
fn on_if_mod(&mut self, node: &IfMod) {
visit_if_mod(self, node);
}
fn on_if_ternary(&mut self, node: &IfTernary) {
visit_if_ternary(self, node);
}
fn on_index(&mut self, node: &Index) {
visit_index(self, node);
}
fn on_index_asgn(&mut self, node: &IndexAsgn) {
visit_index_asgn(self, node);
}
fn on_in_pattern(&mut self, node: &InPattern) {
visit_in_pattern(self, node);
}
fn on_int(&mut self, node: &Int) {
visit_int(self, node);
}
fn on_irange(&mut self, node: &Irange) {
visit_irange(self, node);
}
fn on_ivar(&mut self, node: &Ivar) {
visit_ivar(self, node);
}
fn on_ivasgn(&mut self, node: &Ivasgn) {
visit_ivasgn(self, node);
}
fn on_kwarg(&mut self, node: &Kwarg) {
visit_kwarg(self, node);
}
fn on_kwargs(&mut self, node: &Kwargs) {
visit_kwargs(self, node);
}
fn on_kw_begin(&mut self, node: &KwBegin) {
visit_kw_begin(self, node);
}
fn on_kwnilarg(&mut self, node: &Kwnilarg) {
visit_kwnilarg(self, node);
}
fn on_kwoptarg(&mut self, node: &Kwoptarg) {
visit_kwoptarg(self, node);
}
fn on_kwrestarg(&mut self, node: &Kwrestarg) {
visit_kwrestarg(self, node);
}
fn on_kwsplat(&mut self, node: &Kwsplat) {
visit_kwsplat(self, node);
}
fn on_lambda(&mut self, node: &Lambda) {
visit_lambda(self, node);
}
fn on_line(&mut self, node: &Line) {
visit_line(self, node);
}
fn on_lvar(&mut self, node: &Lvar) {
visit_lvar(self, node);
}
fn on_lvasgn(&mut self, node: &Lvasgn) {
visit_lvasgn(self, node);
}
fn on_masgn(&mut self, node: &Masgn) {
visit_masgn(self, node);
}
fn on_match_alt(&mut self, node: &MatchAlt) {
visit_match_alt(self, node);
}
fn on_match_as(&mut self, node: &MatchAs) {
visit_match_as(self, node);
}
fn on_match_current_line(&mut self, node: &MatchCurrentLine) {
visit_match_current_line(self, node);
}
fn on_match_nil_pattern(&mut self, node: &MatchNilPattern) {
visit_match_nil_pattern(self, node);
}
fn on_match_pattern(&mut self, node: &MatchPattern) {
visit_match_pattern(self, node);
}
fn on_match_pattern_p(&mut self, node: &MatchPatternP) {
visit_match_pattern_p(self, node);
}
fn on_match_rest(&mut self, node: &MatchRest) {
visit_match_rest(self, node);
}
fn on_match_var(&mut self, node: &MatchVar) {
visit_match_var(self, node);
}
fn on_match_with_lvasgn(&mut self, node: &MatchWithLvasgn) {
visit_match_with_lvasgn(self, node);
}
fn on_mlhs(&mut self, node: &Mlhs) {
visit_mlhs(self, node);
}
fn on_module(&mut self, node: &Module) {
visit_module(self, node);
}
fn on_next(&mut self, node: &Next) {
visit_next(self, node);
}
fn on_nil(&mut self, node: &Nil) {
visit_nil(self, node);
}
fn on_nth_ref(&mut self, node: &NthRef) {
visit_nth_ref(self, node);
}
fn on_numblock(&mut self, node: &Numblock) {
visit_numblock(self, node);
}
fn on_op_asgn(&mut self, node: &OpAsgn) {
visit_op_asgn(self, node);
}
fn on_optarg(&mut self, node: &Optarg) {
visit_optarg(self, node);
}
fn on_or(&mut self, node: &Or) {
visit_or(self, node);
}
fn on_or_asgn(&mut self, node: &OrAsgn) {
visit_or_asgn(self, node);
}
fn on_pair(&mut self, node: &Pair) {
visit_pair(self, node);
}
fn on_pin(&mut self, node: &Pin) {
visit_pin(self, node);
}
fn on_postexe(&mut self, node: &Postexe) {
visit_postexe(self, node);
}
fn on_preexe(&mut self, node: &Preexe) {
visit_preexe(self, node);
}
fn on_procarg0(&mut self, node: &Procarg0) {
visit_procarg0(self, node);
}
fn on_rational(&mut self, node: &Rational) {
visit_rational(self, node);
}
fn on_redo(&mut self, node: &Redo) {
visit_redo(self, node);
}
fn on_regexp(&mut self, node: &Regexp) {
visit_regexp(self, node);
}
fn on_reg_opt(&mut self, node: &RegOpt) {
visit_reg_opt(self, node);
}
fn on_rescue(&mut self, node: &Rescue) {
visit_rescue(self, node);
}
fn on_rescue_body(&mut self, node: &RescueBody) {
visit_rescue_body(self, node);
}
fn on_restarg(&mut self, node: &Restarg) {
visit_restarg(self, node);
}
fn on_retry(&mut self, node: &Retry) {
visit_retry(self, node);
}
fn on_return(&mut self, node: &Return) {
visit_return(self, node);
}
fn on_s_class(&mut self, node: &SClass) {
visit_s_class(self, node);
}
fn on_self_(&mut self, node: &Self_) {
visit_self_(self, node);
}
fn on_send(&mut self, node: &Send) {
visit_send(self, node);
}
fn on_shadowarg(&mut self, node: &Shadowarg) {
visit_shadowarg(self, node);
}
fn on_splat(&mut self, node: &Splat) {
visit_splat(self, node);
}
fn on_str(&mut self, node: &Str) {
visit_str(self, node);
}
fn on_super(&mut self, node: &Super) {
visit_super(self, node);
}
fn on_sym(&mut self, node: &Sym) {
visit_sym(self, node);
}
fn on_true(&mut self, node: &True) {
visit_true(self, node);
}
fn on_undef(&mut self, node: &Undef) {
visit_undef(self, node);
}
fn on_unless_guard(&mut self, node: &UnlessGuard) {
visit_unless_guard(self, node);
}
fn on_until(&mut self, node: &Until) {
visit_until(self, node);
}
fn on_until_post(&mut self, node: &UntilPost) {
visit_until_post(self, node);
}
fn on_when(&mut self, node: &When) {
visit_when(self, node);
}
fn on_while(&mut self, node: &While) {
visit_while(self, node);
}
fn on_while_post(&mut self, node: &WhilePost) {
visit_while_post(self, node);
}
fn on_x_heredoc(&mut self, node: &XHeredoc) {
visit_x_heredoc(self, node);
}
fn on_xstr(&mut self, node: &Xstr) {
visit_xstr(self, node);
}
fn on_yield(&mut self, node: &Yield) {
visit_yield(self, node);
}
fn on_z_super(&mut self, node: &ZSuper) {
visit_z_super(self, node);
}
fn visit(&mut self, node: &Node) {
match node {
Node::Alias(inner) => {
self.on_alias(inner);
}
Node::And(inner) => {
self.on_and(inner);
}
Node::AndAsgn(inner) => {
self.on_and_asgn(inner);
}
Node::Arg(inner) => {
self.on_arg(inner);
}
Node::Args(inner) => {
self.on_args(inner);
}
Node::Array(inner) => {
self.on_array(inner);
}
Node::ArrayPattern(inner) => {
self.on_array_pattern(inner);
}
Node::ArrayPatternWithTail(inner) => {
self.on_array_pattern_with_tail(inner);
}
Node::BackRef(inner) => {
self.on_back_ref(inner);
}
Node::Begin(inner) => {
self.on_begin(inner);
}
Node::Block(inner) => {
self.on_block(inner);
}
Node::Blockarg(inner) => {
self.on_blockarg(inner);
}
Node::BlockPass(inner) => {
self.on_block_pass(inner);
}
Node::Break(inner) => {
self.on_break(inner);
}
Node::Case(inner) => {
self.on_case(inner);
}
Node::CaseMatch(inner) => {
self.on_case_match(inner);
}
Node::Casgn(inner) => {
self.on_casgn(inner);
}
Node::Cbase(inner) => {
self.on_cbase(inner);
}
Node::Class(inner) => {
self.on_class(inner);
}
Node::Complex(inner) => {
self.on_complex(inner);
}
Node::Const(inner) => {
self.on_const(inner);
}
Node::ConstPattern(inner) => {
self.on_const_pattern(inner);
}
Node::CSend(inner) => {
self.on_c_send(inner);
}
Node::Cvar(inner) => {
self.on_cvar(inner);
}
Node::Cvasgn(inner) => {
self.on_cvasgn(inner);
}
Node::Def(inner) => {
self.on_def(inner);
}
Node::Defined(inner) => {
self.on_defined(inner);
}
Node::Defs(inner) => {
self.on_defs(inner);
}
Node::Dstr(inner) => {
self.on_dstr(inner);
}
Node::Dsym(inner) => {
self.on_dsym(inner);
}
Node::EFlipFlop(inner) => {
self.on_e_flip_flop(inner);
}
Node::EmptyElse(inner) => {
self.on_empty_else(inner);
}
Node::Encoding(inner) => {
self.on_encoding(inner);
}
Node::Ensure(inner) => {
self.on_ensure(inner);
}
Node::Erange(inner) => {
self.on_erange(inner);
}
Node::False(inner) => {
self.on_false(inner);
}
Node::File(inner) => {
self.on_file(inner);
}
Node::FindPattern(inner) => {
self.on_find_pattern(inner);
}
Node::Float(inner) => {
self.on_float(inner);
}
Node::For(inner) => {
self.on_for(inner);
}
Node::ForwardArg(inner) => {
self.on_forward_arg(inner);
}
Node::ForwardedArgs(inner) => {
self.on_forwarded_args(inner);
}
Node::Gvar(inner) => {
self.on_gvar(inner);
}
Node::Gvasgn(inner) => {
self.on_gvasgn(inner);
}
Node::Hash(inner) => {
self.on_hash(inner);
}
Node::HashPattern(inner) => {
self.on_hash_pattern(inner);
}
Node::Heredoc(inner) => {
self.on_heredoc(inner);
}
Node::If(inner) => {
self.on_if(inner);
}
Node::IfGuard(inner) => {
self.on_if_guard(inner);
}
Node::IFlipFlop(inner) => {
self.on_i_flip_flop(inner);
}
Node::IfMod(inner) => {
self.on_if_mod(inner);
}
Node::IfTernary(inner) => {
self.on_if_ternary(inner);
}
Node::Index(inner) => {
self.on_index(inner);
}
Node::IndexAsgn(inner) => {
self.on_index_asgn(inner);
}
Node::InPattern(inner) => {
self.on_in_pattern(inner);
}
Node::Int(inner) => {
self.on_int(inner);
}
Node::Irange(inner) => {
self.on_irange(inner);
}
Node::Ivar(inner) => {
self.on_ivar(inner);
}
Node::Ivasgn(inner) => {
self.on_ivasgn(inner);
}
Node::Kwarg(inner) => {
self.on_kwarg(inner);
}
Node::Kwargs(inner) => {
self.on_kwargs(inner);
}
Node::KwBegin(inner) => {
self.on_kw_begin(inner);
}
Node::Kwnilarg(inner) => {
self.on_kwnilarg(inner);
}
Node::Kwoptarg(inner) => {
self.on_kwoptarg(inner);
}
Node::Kwrestarg(inner) => {
self.on_kwrestarg(inner);
}
Node::Kwsplat(inner) => {
self.on_kwsplat(inner);
}
Node::Lambda(inner) => {
self.on_lambda(inner);
}
Node::Line(inner) => {
self.on_line(inner);
}
Node::Lvar(inner) => {
self.on_lvar(inner);
}
Node::Lvasgn(inner) => {
self.on_lvasgn(inner);
}
Node::Masgn(inner) => {
self.on_masgn(inner);
}
Node::MatchAlt(inner) => {
self.on_match_alt(inner);
}
Node::MatchAs(inner) => {
self.on_match_as(inner);
}
Node::MatchCurrentLine(inner) => {
self.on_match_current_line(inner);
}
Node::MatchNilPattern(inner) => {
self.on_match_nil_pattern(inner);
}
Node::MatchPattern(inner) => {
self.on_match_pattern(inner);
}
Node::MatchPatternP(inner) => {
self.on_match_pattern_p(inner);
}
Node::MatchRest(inner) => {
self.on_match_rest(inner);
}
Node::MatchVar(inner) => {
self.on_match_var(inner);
}
Node::MatchWithLvasgn(inner) => {
self.on_match_with_lvasgn(inner);
}
Node::Mlhs(inner) => {
self.on_mlhs(inner);
}
Node::Module(inner) => {
self.on_module(inner);
}
Node::Next(inner) => {
self.on_next(inner);
}
Node::Nil(inner) => {
self.on_nil(inner);
}
Node::NthRef(inner) => {
self.on_nth_ref(inner);
}
Node::Numblock(inner) => {
self.on_numblock(inner);
}
Node::OpAsgn(inner) => {
self.on_op_asgn(inner);
}
Node::Optarg(inner) => {
self.on_optarg(inner);
}
Node::Or(inner) => {
self.on_or(inner);
}
Node::OrAsgn(inner) => {
self.on_or_asgn(inner);
}
Node::Pair(inner) => {
self.on_pair(inner);
}
Node::Pin(inner) => {
self.on_pin(inner);
}
Node::Postexe(inner) => {
self.on_postexe(inner);
}
Node::Preexe(inner) => {
self.on_preexe(inner);
}
Node::Procarg0(inner) => {
self.on_procarg0(inner);
}
Node::Rational(inner) => {
self.on_rational(inner);
}
Node::Redo(inner) => {
self.on_redo(inner);
}
Node::Regexp(inner) => {
self.on_regexp(inner);
}
Node::RegOpt(inner) => {
self.on_reg_opt(inner);
}
Node::Rescue(inner) => {
self.on_rescue(inner);
}
Node::RescueBody(inner) => {
self.on_rescue_body(inner);
}
Node::Restarg(inner) => {
self.on_restarg(inner);
}
Node::Retry(inner) => {
self.on_retry(inner);
}
Node::Return(inner) => {
self.on_return(inner);
}
Node::SClass(inner) => {
self.on_s_class(inner);
}
Node::Self_(inner) => {
self.on_self_(inner);
}
Node::Send(inner) => {
self.on_send(inner);
}
Node::Shadowarg(inner) => {
self.on_shadowarg(inner);
}
Node::Splat(inner) => {
self.on_splat(inner);
}
Node::Str(inner) => {
self.on_str(inner);
}
Node::Super(inner) => {
self.on_super(inner);
}
Node::Sym(inner) => {
self.on_sym(inner);
}
Node::True(inner) => {
self.on_true(inner);
}
Node::Undef(inner) => {
self.on_undef(inner);
}
Node::UnlessGuard(inner) => {
self.on_unless_guard(inner);
}
Node::Until(inner) => {
self.on_until(inner);
}
Node::UntilPost(inner) => {
self.on_until_post(inner);
}
Node::When(inner) => {
self.on_when(inner);
}
Node::While(inner) => {
self.on_while(inner);
}
Node::WhilePost(inner) => {
self.on_while_post(inner);
}
Node::XHeredoc(inner) => {
self.on_x_heredoc(inner);
}
Node::Xstr(inner) => {
self.on_xstr(inner);
}
Node::Yield(inner) => {
self.on_yield(inner);
}
Node::ZSuper(inner) => {
self.on_z_super(inner);
}
}
}
}
#[allow(unused_variables)]
pub fn visit_alias<V: Visitor>(visitor: &mut V, node: &Alias) {
visitor.visit(&node.to);
visitor.visit(&node.from);
}
#[allow(unused_variables)]
pub fn visit_and<V: Visitor>(visitor: &mut V, node: &And) {
visitor.visit(&node.lhs);
visitor.visit(&node.rhs);
}
#[allow(unused_variables)]
pub fn visit_and_asgn<V: Visitor>(visitor: &mut V, node: &AndAsgn) {
visitor.visit(&node.recv);
visitor.visit(&node.value);
}
#[allow(unused_variables)]
pub fn visit_arg<V: Visitor>(visitor: &mut V, node: &Arg) {
}
#[allow(unused_variables)]
pub fn visit_args<V: Visitor>(visitor: &mut V, node: &Args) {
for item in &node.args { visitor.visit(item); }
}
#[allow(unused_variables)]
pub fn visit_array<V: Visitor>(visitor: &mut V, node: &Array) {
for item in &node.elements { visitor.visit(item); }
}
#[allow(unused_variables)]
pub fn visit_array_pattern<V: Visitor>(visitor: &mut V, node: &ArrayPattern) {
for item in &node.elements { visitor.visit(item); }
}
#[allow(unused_variables)]
pub fn visit_array_pattern_with_tail<V: Visitor>(visitor: &mut V, node: &ArrayPatternWithTail) {
for item in &node.elements { visitor.visit(item); }
}
#[allow(unused_variables)]
pub fn visit_back_ref<V: Visitor>(visitor: &mut V, node: &BackRef) {
}
#[allow(unused_variables)]
pub fn visit_begin<V: Visitor>(visitor: &mut V, node: &Begin) {
for item in &node.statements { visitor.visit(item); }
}
#[allow(unused_variables)]
pub fn visit_block<V: Visitor>(visitor: &mut V, node: &Block) {
visitor.visit(&node.call);
if let Some(inner) = node.args.as_ref() { visitor.visit(inner); }
if let Some(inner) = node.body.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_blockarg<V: Visitor>(visitor: &mut V, node: &Blockarg) {
}
#[allow(unused_variables)]
pub fn visit_block_pass<V: Visitor>(visitor: &mut V, node: &BlockPass) {
if let Some(inner) = node.value.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_break<V: Visitor>(visitor: &mut V, node: &Break) {
for item in &node.args { visitor.visit(item); }
}
#[allow(unused_variables)]
pub fn visit_case<V: Visitor>(visitor: &mut V, node: &Case) {
if let Some(inner) = node.expr.as_ref() { visitor.visit(inner); }
for item in &node.when_bodies { visitor.visit(item); }
if let Some(inner) = node.else_body.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_case_match<V: Visitor>(visitor: &mut V, node: &CaseMatch) {
visitor.visit(&node.expr);
for item in &node.in_bodies { visitor.visit(item); }
if let Some(inner) = node.else_body.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_casgn<V: Visitor>(visitor: &mut V, node: &Casgn) {
if let Some(inner) = node.scope.as_ref() { visitor.visit(inner); }
if let Some(inner) = node.value.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_cbase<V: Visitor>(visitor: &mut V, node: &Cbase) {
}
#[allow(unused_variables)]
pub fn visit_class<V: Visitor>(visitor: &mut V, node: &Class) {
visitor.visit(&node.name);
if let Some(inner) = node.superclass.as_ref() { visitor.visit(inner); }
if let Some(inner) = node.body.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_complex<V: Visitor>(visitor: &mut V, node: &Complex) {
}
#[allow(unused_variables)]
pub fn visit_const<V: Visitor>(visitor: &mut V, node: &Const) {
if let Some(inner) = node.scope.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_const_pattern<V: Visitor>(visitor: &mut V, node: &ConstPattern) {
visitor.visit(&node.const_);
visitor.visit(&node.pattern);
}
#[allow(unused_variables)]
pub fn visit_c_send<V: Visitor>(visitor: &mut V, node: &CSend) {
visitor.visit(&node.recv);
for item in &node.args { visitor.visit(item); }
}
#[allow(unused_variables)]
pub fn visit_cvar<V: Visitor>(visitor: &mut V, node: &Cvar) {
}
#[allow(unused_variables)]
pub fn visit_cvasgn<V: Visitor>(visitor: &mut V, node: &Cvasgn) {
if let Some(inner) = node.value.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_def<V: Visitor>(visitor: &mut V, node: &Def) {
if let Some(inner) = node.args.as_ref() { visitor.visit(inner); }
if let Some(inner) = node.body.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_defined<V: Visitor>(visitor: &mut V, node: &Defined) {
visitor.visit(&node.value);
}
#[allow(unused_variables)]
pub fn visit_defs<V: Visitor>(visitor: &mut V, node: &Defs) {
visitor.visit(&node.definee);
if let Some(inner) = node.args.as_ref() { visitor.visit(inner); }
if let Some(inner) = node.body.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_dstr<V: Visitor>(visitor: &mut V, node: &Dstr) {
for item in &node.parts { visitor.visit(item); }
}
#[allow(unused_variables)]
pub fn visit_dsym<V: Visitor>(visitor: &mut V, node: &Dsym) {
for item in &node.parts { visitor.visit(item); }
}
#[allow(unused_variables)]
pub fn visit_e_flip_flop<V: Visitor>(visitor: &mut V, node: &EFlipFlop) {
if let Some(inner) = node.left.as_ref() { visitor.visit(inner); }
if let Some(inner) = node.right.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_empty_else<V: Visitor>(visitor: &mut V, node: &EmptyElse) {
}
#[allow(unused_variables)]
pub fn visit_encoding<V: Visitor>(visitor: &mut V, node: &Encoding) {
}
#[allow(unused_variables)]
pub fn visit_ensure<V: Visitor>(visitor: &mut V, node: &Ensure) {
if let Some(inner) = node.body.as_ref() { visitor.visit(inner); }
if let Some(inner) = node.ensure.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_erange<V: Visitor>(visitor: &mut V, node: &Erange) {
if let Some(inner) = node.left.as_ref() { visitor.visit(inner); }
if let Some(inner) = node.right.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_false<V: Visitor>(visitor: &mut V, node: &False) {
}
#[allow(unused_variables)]
pub fn visit_file<V: Visitor>(visitor: &mut V, node: &File) {
}
#[allow(unused_variables)]
pub fn visit_find_pattern<V: Visitor>(visitor: &mut V, node: &FindPattern) {
for item in &node.elements { visitor.visit(item); }
}
#[allow(unused_variables)]
pub fn visit_float<V: Visitor>(visitor: &mut V, node: &Float) {
}
#[allow(unused_variables)]
pub fn visit_for<V: Visitor>(visitor: &mut V, node: &For) {
visitor.visit(&node.iterator);
visitor.visit(&node.iteratee);
if let Some(inner) = node.body.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_forward_arg<V: Visitor>(visitor: &mut V, node: &ForwardArg) {
}
#[allow(unused_variables)]
pub fn visit_forwarded_args<V: Visitor>(visitor: &mut V, node: &ForwardedArgs) {
}
#[allow(unused_variables)]
pub fn visit_gvar<V: Visitor>(visitor: &mut V, node: &Gvar) {
}
#[allow(unused_variables)]
pub fn visit_gvasgn<V: Visitor>(visitor: &mut V, node: &Gvasgn) {
if let Some(inner) = node.value.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_hash<V: Visitor>(visitor: &mut V, node: &Hash) {
for item in &node.pairs { visitor.visit(item); }
}
#[allow(unused_variables)]
pub fn visit_hash_pattern<V: Visitor>(visitor: &mut V, node: &HashPattern) {
for item in &node.elements { visitor.visit(item); }
}
#[allow(unused_variables)]
pub fn visit_heredoc<V: Visitor>(visitor: &mut V, node: &Heredoc) {
for item in &node.parts { visitor.visit(item); }
}
#[allow(unused_variables)]
pub fn visit_if<V: Visitor>(visitor: &mut V, node: &If) {
visitor.visit(&node.cond);
if let Some(inner) = node.if_true.as_ref() { visitor.visit(inner); }
if let Some(inner) = node.if_false.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_if_guard<V: Visitor>(visitor: &mut V, node: &IfGuard) {
visitor.visit(&node.cond);
}
#[allow(unused_variables)]
pub fn visit_i_flip_flop<V: Visitor>(visitor: &mut V, node: &IFlipFlop) {
if let Some(inner) = node.left.as_ref() { visitor.visit(inner); }
if let Some(inner) = node.right.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_if_mod<V: Visitor>(visitor: &mut V, node: &IfMod) {
visitor.visit(&node.cond);
if let Some(inner) = node.if_true.as_ref() { visitor.visit(inner); }
if let Some(inner) = node.if_false.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_if_ternary<V: Visitor>(visitor: &mut V, node: &IfTernary) {
visitor.visit(&node.cond);
visitor.visit(&node.if_true);
visitor.visit(&node.if_false);
}
#[allow(unused_variables)]
pub fn visit_index<V: Visitor>(visitor: &mut V, node: &Index) {
visitor.visit(&node.recv);
for item in &node.indexes { visitor.visit(item); }
}
#[allow(unused_variables)]
pub fn visit_index_asgn<V: Visitor>(visitor: &mut V, node: &IndexAsgn) {
visitor.visit(&node.recv);
for item in &node.indexes { visitor.visit(item); }
if let Some(inner) = node.value.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_in_pattern<V: Visitor>(visitor: &mut V, node: &InPattern) {
visitor.visit(&node.pattern);
if let Some(inner) = node.guard.as_ref() { visitor.visit(inner); }
if let Some(inner) = node.body.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_int<V: Visitor>(visitor: &mut V, node: &Int) {
}
#[allow(unused_variables)]
pub fn visit_irange<V: Visitor>(visitor: &mut V, node: &Irange) {
if let Some(inner) = node.left.as_ref() { visitor.visit(inner); }
if let Some(inner) = node.right.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_ivar<V: Visitor>(visitor: &mut V, node: &Ivar) {
}
#[allow(unused_variables)]
pub fn visit_ivasgn<V: Visitor>(visitor: &mut V, node: &Ivasgn) {
if let Some(inner) = node.value.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_kwarg<V: Visitor>(visitor: &mut V, node: &Kwarg) {
}
#[allow(unused_variables)]
pub fn visit_kwargs<V: Visitor>(visitor: &mut V, node: &Kwargs) {
for item in &node.pairs { visitor.visit(item); }
}
#[allow(unused_variables)]
pub fn visit_kw_begin<V: Visitor>(visitor: &mut V, node: &KwBegin) {
for item in &node.statements { visitor.visit(item); }
}
#[allow(unused_variables)]
pub fn visit_kwnilarg<V: Visitor>(visitor: &mut V, node: &Kwnilarg) {
}
#[allow(unused_variables)]
pub fn visit_kwoptarg<V: Visitor>(visitor: &mut V, node: &Kwoptarg) {
visitor.visit(&node.default);
}
#[allow(unused_variables)]
pub fn visit_kwrestarg<V: Visitor>(visitor: &mut V, node: &Kwrestarg) {
}
#[allow(unused_variables)]
pub fn visit_kwsplat<V: Visitor>(visitor: &mut V, node: &Kwsplat) {
visitor.visit(&node.value);
}
#[allow(unused_variables)]
pub fn visit_lambda<V: Visitor>(visitor: &mut V, node: &Lambda) {
}
#[allow(unused_variables)]
pub fn visit_line<V: Visitor>(visitor: &mut V, node: &Line) {
}
#[allow(unused_variables)]
pub fn visit_lvar<V: Visitor>(visitor: &mut V, node: &Lvar) {
}
#[allow(unused_variables)]
pub fn visit_lvasgn<V: Visitor>(visitor: &mut V, node: &Lvasgn) {
if let Some(inner) = node.value.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_masgn<V: Visitor>(visitor: &mut V, node: &Masgn) {
visitor.visit(&node.lhs);
visitor.visit(&node.rhs);
}
#[allow(unused_variables)]
pub fn visit_match_alt<V: Visitor>(visitor: &mut V, node: &MatchAlt) {
visitor.visit(&node.lhs);
visitor.visit(&node.rhs);
}
#[allow(unused_variables)]
pub fn visit_match_as<V: Visitor>(visitor: &mut V, node: &MatchAs) {
visitor.visit(&node.value);
visitor.visit(&node.as_);
}
#[allow(unused_variables)]
pub fn visit_match_current_line<V: Visitor>(visitor: &mut V, node: &MatchCurrentLine) {
visitor.visit(&node.re);
}
#[allow(unused_variables)]
pub fn visit_match_nil_pattern<V: Visitor>(visitor: &mut V, node: &MatchNilPattern) {
}
#[allow(unused_variables)]
pub fn visit_match_pattern<V: Visitor>(visitor: &mut V, node: &MatchPattern) {
visitor.visit(&node.value);
visitor.visit(&node.pattern);
}
#[allow(unused_variables)]
pub fn visit_match_pattern_p<V: Visitor>(visitor: &mut V, node: &MatchPatternP) {
visitor.visit(&node.value);
visitor.visit(&node.pattern);
}
#[allow(unused_variables)]
pub fn visit_match_rest<V: Visitor>(visitor: &mut V, node: &MatchRest) {
if let Some(inner) = node.name.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_match_var<V: Visitor>(visitor: &mut V, node: &MatchVar) {
}
#[allow(unused_variables)]
pub fn visit_match_with_lvasgn<V: Visitor>(visitor: &mut V, node: &MatchWithLvasgn) {
visitor.visit(&node.re);
visitor.visit(&node.value);
}
#[allow(unused_variables)]
pub fn visit_mlhs<V: Visitor>(visitor: &mut V, node: &Mlhs) {
for item in &node.items { visitor.visit(item); }
}
#[allow(unused_variables)]
pub fn visit_module<V: Visitor>(visitor: &mut V, node: &Module) {
visitor.visit(&node.name);
if let Some(inner) = node.body.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_next<V: Visitor>(visitor: &mut V, node: &Next) {
for item in &node.args { visitor.visit(item); }
}
#[allow(unused_variables)]
pub fn visit_nil<V: Visitor>(visitor: &mut V, node: &Nil) {
}
#[allow(unused_variables)]
pub fn visit_nth_ref<V: Visitor>(visitor: &mut V, node: &NthRef) {
}
#[allow(unused_variables)]
pub fn visit_numblock<V: Visitor>(visitor: &mut V, node: &Numblock) {
visitor.visit(&node.call);
visitor.visit(&node.body);
}
#[allow(unused_variables)]
pub fn visit_op_asgn<V: Visitor>(visitor: &mut V, node: &OpAsgn) {
visitor.visit(&node.recv);
visitor.visit(&node.value);
}
#[allow(unused_variables)]
pub fn visit_optarg<V: Visitor>(visitor: &mut V, node: &Optarg) {
visitor.visit(&node.default);
}
#[allow(unused_variables)]
pub fn visit_or<V: Visitor>(visitor: &mut V, node: &Or) {
visitor.visit(&node.lhs);
visitor.visit(&node.rhs);
}
#[allow(unused_variables)]
pub fn visit_or_asgn<V: Visitor>(visitor: &mut V, node: &OrAsgn) {
visitor.visit(&node.recv);
visitor.visit(&node.value);
}
#[allow(unused_variables)]
pub fn visit_pair<V: Visitor>(visitor: &mut V, node: &Pair) {
visitor.visit(&node.key);
visitor.visit(&node.value);
}
#[allow(unused_variables)]
pub fn visit_pin<V: Visitor>(visitor: &mut V, node: &Pin) {
visitor.visit(&node.var);
}
#[allow(unused_variables)]
pub fn visit_postexe<V: Visitor>(visitor: &mut V, node: &Postexe) {
if let Some(inner) = node.body.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_preexe<V: Visitor>(visitor: &mut V, node: &Preexe) {
if let Some(inner) = node.body.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_procarg0<V: Visitor>(visitor: &mut V, node: &Procarg0) {
for item in &node.args { visitor.visit(item); }
}
#[allow(unused_variables)]
pub fn visit_rational<V: Visitor>(visitor: &mut V, node: &Rational) {
}
#[allow(unused_variables)]
pub fn visit_redo<V: Visitor>(visitor: &mut V, node: &Redo) {
}
#[allow(unused_variables)]
pub fn visit_regexp<V: Visitor>(visitor: &mut V, node: &Regexp) {
for item in &node.parts { visitor.visit(item); }
if let Some(inner) = node.options.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_reg_opt<V: Visitor>(visitor: &mut V, node: &RegOpt) {
}
#[allow(unused_variables)]
pub fn visit_rescue<V: Visitor>(visitor: &mut V, node: &Rescue) {
if let Some(inner) = node.body.as_ref() { visitor.visit(inner); }
for item in &node.rescue_bodies { visitor.visit(item); }
if let Some(inner) = node.else_.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_rescue_body<V: Visitor>(visitor: &mut V, node: &RescueBody) {
if let Some(inner) = node.exc_list.as_ref() { visitor.visit(inner); }
if let Some(inner) = node.exc_var.as_ref() { visitor.visit(inner); }
if let Some(inner) = node.body.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_restarg<V: Visitor>(visitor: &mut V, node: &Restarg) {
}
#[allow(unused_variables)]
pub fn visit_retry<V: Visitor>(visitor: &mut V, node: &Retry) {
}
#[allow(unused_variables)]
pub fn visit_return<V: Visitor>(visitor: &mut V, node: &Return) {
for item in &node.args { visitor.visit(item); }
}
#[allow(unused_variables)]
pub fn visit_s_class<V: Visitor>(visitor: &mut V, node: &SClass) {
visitor.visit(&node.expr);
if let Some(inner) = node.body.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_self_<V: Visitor>(visitor: &mut V, node: &Self_) {
}
#[allow(unused_variables)]
pub fn visit_send<V: Visitor>(visitor: &mut V, node: &Send) {
if let Some(inner) = node.recv.as_ref() { visitor.visit(inner); }
for item in &node.args { visitor.visit(item); }
}
#[allow(unused_variables)]
pub fn visit_shadowarg<V: Visitor>(visitor: &mut V, node: &Shadowarg) {
}
#[allow(unused_variables)]
pub fn visit_splat<V: Visitor>(visitor: &mut V, node: &Splat) {
if let Some(inner) = node.value.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_str<V: Visitor>(visitor: &mut V, node: &Str) {
}
#[allow(unused_variables)]
pub fn visit_super<V: Visitor>(visitor: &mut V, node: &Super) {
for item in &node.args { visitor.visit(item); }
}
#[allow(unused_variables)]
pub fn visit_sym<V: Visitor>(visitor: &mut V, node: &Sym) {
}
#[allow(unused_variables)]
pub fn visit_true<V: Visitor>(visitor: &mut V, node: &True) {
}
#[allow(unused_variables)]
pub fn visit_undef<V: Visitor>(visitor: &mut V, node: &Undef) {
for item in &node.names { visitor.visit(item); }
}
#[allow(unused_variables)]
pub fn visit_unless_guard<V: Visitor>(visitor: &mut V, node: &UnlessGuard) {
visitor.visit(&node.cond);
}
#[allow(unused_variables)]
pub fn visit_until<V: Visitor>(visitor: &mut V, node: &Until) {
visitor.visit(&node.cond);
if let Some(inner) = node.body.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_until_post<V: Visitor>(visitor: &mut V, node: &UntilPost) {
visitor.visit(&node.cond);
visitor.visit(&node.body);
}
#[allow(unused_variables)]
pub fn visit_when<V: Visitor>(visitor: &mut V, node: &When) {
for item in &node.patterns { visitor.visit(item); }
if let Some(inner) = node.body.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_while<V: Visitor>(visitor: &mut V, node: &While) {
visitor.visit(&node.cond);
if let Some(inner) = node.body.as_ref() { visitor.visit(inner); }
}
#[allow(unused_variables)]
pub fn visit_while_post<V: Visitor>(visitor: &mut V, node: &WhilePost) {
visitor.visit(&node.cond);
visitor.visit(&node.body);
}
#[allow(unused_variables)]
pub fn visit_x_heredoc<V: Visitor>(visitor: &mut V, node: &XHeredoc) {
for item in &node.parts { visitor.visit(item); }
}
#[allow(unused_variables)]
pub fn visit_xstr<V: Visitor>(visitor: &mut V, node: &Xstr) {
for item in &node.parts { visitor.visit(item); }
}
#[allow(unused_variables)]
pub fn visit_yield<V: Visitor>(visitor: &mut V, node: &Yield) {
for item in &node.args { visitor.visit(item); }
}
#[allow(unused_variables)]
pub fn visit_z_super<V: Visitor>(visitor: &mut V, node: &ZSuper) {
}