1use crate::nodes::InnerNode;
4use crate::nodes::*;
5
6#[allow(missing_docs)]
8#[derive(Debug, Clone, PartialEq)]
9#[repr(C)]
10pub enum Node {
11 Alias(Alias),
12 And(And),
13 AndAsgn(AndAsgn),
14 Arg(Arg),
15 Args(Args),
16 Array(Array),
17 ArrayPattern(ArrayPattern),
18 ArrayPatternWithTail(ArrayPatternWithTail),
19 BackRef(BackRef),
20 Begin(Begin),
21 Block(Block),
22 Blockarg(Blockarg),
23 BlockPass(BlockPass),
24 Break(Break),
25 Case(Case),
26 CaseMatch(CaseMatch),
27 Casgn(Casgn),
28 Cbase(Cbase),
29 Class(Class),
30 Complex(Complex),
31 Const(Const),
32 ConstPattern(ConstPattern),
33 CSend(CSend),
34 Cvar(Cvar),
35 Cvasgn(Cvasgn),
36 Def(Def),
37 Defined(Defined),
38 Defs(Defs),
39 Dstr(Dstr),
40 Dsym(Dsym),
41 EFlipFlop(EFlipFlop),
42 EmptyElse(EmptyElse),
43 Encoding(Encoding),
44 Ensure(Ensure),
45 Erange(Erange),
46 False(False),
47 File(File),
48 FindPattern(FindPattern),
49 Float(Float),
50 For(For),
51 ForwardArg(ForwardArg),
52 ForwardedArgs(ForwardedArgs),
53 Gvar(Gvar),
54 Gvasgn(Gvasgn),
55 Hash(Hash),
56 HashPattern(HashPattern),
57 Heredoc(Heredoc),
58 If(If),
59 IfGuard(IfGuard),
60 IFlipFlop(IFlipFlop),
61 IfMod(IfMod),
62 IfTernary(IfTernary),
63 Index(Index),
64 IndexAsgn(IndexAsgn),
65 InPattern(InPattern),
66 Int(Int),
67 Irange(Irange),
68 Ivar(Ivar),
69 Ivasgn(Ivasgn),
70 Kwarg(Kwarg),
71 Kwargs(Kwargs),
72 KwBegin(KwBegin),
73 Kwnilarg(Kwnilarg),
74 Kwoptarg(Kwoptarg),
75 Kwrestarg(Kwrestarg),
76 Kwsplat(Kwsplat),
77 Lambda(Lambda),
78 Line(Line),
79 Lvar(Lvar),
80 Lvasgn(Lvasgn),
81 Masgn(Masgn),
82 MatchAlt(MatchAlt),
83 MatchAs(MatchAs),
84 MatchCurrentLine(MatchCurrentLine),
85 MatchNilPattern(MatchNilPattern),
86 MatchPattern(MatchPattern),
87 MatchPatternP(MatchPatternP),
88 MatchRest(MatchRest),
89 MatchVar(MatchVar),
90 MatchWithLvasgn(MatchWithLvasgn),
91 Mlhs(Mlhs),
92 Module(Module),
93 Next(Next),
94 Nil(Nil),
95 NthRef(NthRef),
96 Numblock(Numblock),
97 OpAsgn(OpAsgn),
98 Optarg(Optarg),
99 Or(Or),
100 OrAsgn(OrAsgn),
101 Pair(Pair),
102 Pin(Pin),
103 Postexe(Postexe),
104 Preexe(Preexe),
105 Procarg0(Procarg0),
106 Rational(Rational),
107 Redo(Redo),
108 Regexp(Regexp),
109 RegOpt(RegOpt),
110 Rescue(Rescue),
111 RescueBody(RescueBody),
112 Restarg(Restarg),
113 Retry(Retry),
114 Return(Return),
115 SClass(SClass),
116 Self_(Self_),
117 Send(Send),
118 Shadowarg(Shadowarg),
119 Splat(Splat),
120 Str(Str),
121 Super(Super),
122 Sym(Sym),
123 True(True),
124 Undef(Undef),
125 UnlessGuard(UnlessGuard),
126 Until(Until),
127 UntilPost(UntilPost),
128 When(When),
129 While(While),
130 WhilePost(WhilePost),
131 XHeredoc(XHeredoc),
132 Xstr(Xstr),
133 Yield(Yield),
134 ZSuper(ZSuper),
135}
136
137impl Node {
138 pub(crate) fn inner_ref(&self) -> &dyn InnerNode {
139 match &self {
140 Node::Alias(inner) => inner,
141 Node::And(inner) => inner,
142 Node::AndAsgn(inner) => inner,
143 Node::Arg(inner) => inner,
144 Node::Args(inner) => inner,
145 Node::Array(inner) => inner,
146 Node::ArrayPattern(inner) => inner,
147 Node::ArrayPatternWithTail(inner) => inner,
148 Node::BackRef(inner) => inner,
149 Node::Begin(inner) => inner,
150 Node::Block(inner) => inner,
151 Node::Blockarg(inner) => inner,
152 Node::BlockPass(inner) => inner,
153 Node::Break(inner) => inner,
154 Node::Case(inner) => inner,
155 Node::CaseMatch(inner) => inner,
156 Node::Casgn(inner) => inner,
157 Node::Cbase(inner) => inner,
158 Node::Class(inner) => inner,
159 Node::Complex(inner) => inner,
160 Node::Const(inner) => inner,
161 Node::ConstPattern(inner) => inner,
162 Node::CSend(inner) => inner,
163 Node::Cvar(inner) => inner,
164 Node::Cvasgn(inner) => inner,
165 Node::Def(inner) => inner,
166 Node::Defined(inner) => inner,
167 Node::Defs(inner) => inner,
168 Node::Dstr(inner) => inner,
169 Node::Dsym(inner) => inner,
170 Node::EFlipFlop(inner) => inner,
171 Node::EmptyElse(inner) => inner,
172 Node::Encoding(inner) => inner,
173 Node::Ensure(inner) => inner,
174 Node::Erange(inner) => inner,
175 Node::False(inner) => inner,
176 Node::File(inner) => inner,
177 Node::FindPattern(inner) => inner,
178 Node::Float(inner) => inner,
179 Node::For(inner) => inner,
180 Node::ForwardArg(inner) => inner,
181 Node::ForwardedArgs(inner) => inner,
182 Node::Gvar(inner) => inner,
183 Node::Gvasgn(inner) => inner,
184 Node::Hash(inner) => inner,
185 Node::HashPattern(inner) => inner,
186 Node::Heredoc(inner) => inner,
187 Node::If(inner) => inner,
188 Node::IfGuard(inner) => inner,
189 Node::IFlipFlop(inner) => inner,
190 Node::IfMod(inner) => inner,
191 Node::IfTernary(inner) => inner,
192 Node::Index(inner) => inner,
193 Node::IndexAsgn(inner) => inner,
194 Node::InPattern(inner) => inner,
195 Node::Int(inner) => inner,
196 Node::Irange(inner) => inner,
197 Node::Ivar(inner) => inner,
198 Node::Ivasgn(inner) => inner,
199 Node::Kwarg(inner) => inner,
200 Node::Kwargs(inner) => inner,
201 Node::KwBegin(inner) => inner,
202 Node::Kwnilarg(inner) => inner,
203 Node::Kwoptarg(inner) => inner,
204 Node::Kwrestarg(inner) => inner,
205 Node::Kwsplat(inner) => inner,
206 Node::Lambda(inner) => inner,
207 Node::Line(inner) => inner,
208 Node::Lvar(inner) => inner,
209 Node::Lvasgn(inner) => inner,
210 Node::Masgn(inner) => inner,
211 Node::MatchAlt(inner) => inner,
212 Node::MatchAs(inner) => inner,
213 Node::MatchCurrentLine(inner) => inner,
214 Node::MatchNilPattern(inner) => inner,
215 Node::MatchPattern(inner) => inner,
216 Node::MatchPatternP(inner) => inner,
217 Node::MatchRest(inner) => inner,
218 Node::MatchVar(inner) => inner,
219 Node::MatchWithLvasgn(inner) => inner,
220 Node::Mlhs(inner) => inner,
221 Node::Module(inner) => inner,
222 Node::Next(inner) => inner,
223 Node::Nil(inner) => inner,
224 Node::NthRef(inner) => inner,
225 Node::Numblock(inner) => inner,
226 Node::OpAsgn(inner) => inner,
227 Node::Optarg(inner) => inner,
228 Node::Or(inner) => inner,
229 Node::OrAsgn(inner) => inner,
230 Node::Pair(inner) => inner,
231 Node::Pin(inner) => inner,
232 Node::Postexe(inner) => inner,
233 Node::Preexe(inner) => inner,
234 Node::Procarg0(inner) => inner,
235 Node::Rational(inner) => inner,
236 Node::Redo(inner) => inner,
237 Node::Regexp(inner) => inner,
238 Node::RegOpt(inner) => inner,
239 Node::Rescue(inner) => inner,
240 Node::RescueBody(inner) => inner,
241 Node::Restarg(inner) => inner,
242 Node::Retry(inner) => inner,
243 Node::Return(inner) => inner,
244 Node::SClass(inner) => inner,
245 Node::Self_(inner) => inner,
246 Node::Send(inner) => inner,
247 Node::Shadowarg(inner) => inner,
248 Node::Splat(inner) => inner,
249 Node::Str(inner) => inner,
250 Node::Super(inner) => inner,
251 Node::Sym(inner) => inner,
252 Node::True(inner) => inner,
253 Node::Undef(inner) => inner,
254 Node::UnlessGuard(inner) => inner,
255 Node::Until(inner) => inner,
256 Node::UntilPost(inner) => inner,
257 Node::When(inner) => inner,
258 Node::While(inner) => inner,
259 Node::WhilePost(inner) => inner,
260 Node::XHeredoc(inner) => inner,
261 Node::Xstr(inner) => inner,
262 Node::Yield(inner) => inner,
263 Node::ZSuper(inner) => inner,
264 }
265 }
266}