1mod doc;
2mod lua;
3mod test;
4mod token;
5
6#[allow(unused)]
7pub use doc::*;
8#[allow(unused)]
9pub use lua::*;
10#[allow(unused)]
11pub use token::*;
12
13use crate::kind::LuaSyntaxKind;
14
15use super::{LuaSyntaxNode, traits::LuaAstNode};
16
17#[allow(unused)]
18#[derive(Debug, Clone, PartialEq, Eq, Hash)]
19pub enum LuaAst {
20 LuaChunk(LuaChunk),
21 LuaBlock(LuaBlock),
22 LuaAssignStat(LuaAssignStat),
24 LuaLocalStat(LuaLocalStat),
25 LuaCallExprStat(LuaCallExprStat),
26 LuaLabelStat(LuaLabelStat),
27 LuaBreakStat(LuaBreakStat),
28 LuaGotoStat(LuaGotoStat),
29 LuaDoStat(LuaDoStat),
30 LuaWhileStat(LuaWhileStat),
31 LuaRepeatStat(LuaRepeatStat),
32 LuaIfStat(LuaIfStat),
33 LuaForStat(LuaForStat),
34 LuaForRangeStat(LuaForRangeStat),
35 LuaFuncStat(LuaFuncStat),
36 LuaLocalFuncStat(LuaLocalFuncStat),
37 LuaReturnStat(LuaReturnStat),
38 LuaGlobalStat(LuaGlobalStat),
39
40 LuaNameExpr(LuaNameExpr),
42 LuaIndexExpr(LuaIndexExpr),
43 LuaTableExpr(LuaTableExpr),
44 LuaBinaryExpr(LuaBinaryExpr),
45 LuaUnaryExpr(LuaUnaryExpr),
46 LuaParenExpr(LuaParenExpr),
47 LuaCallExpr(LuaCallExpr),
48 LuaLiteralExpr(LuaLiteralExpr),
49 LuaClosureExpr(LuaClosureExpr),
50
51 LuaTableField(LuaTableField),
53 LuaParamList(LuaParamList),
54 LuaParamName(LuaParamName),
55 LuaCallArgList(LuaCallArgList),
56 LuaLocalName(LuaLocalName),
57 LuaLocalAttribute(LuaLocalAttribute),
58 LuaElseIfClauseStat(LuaElseIfClauseStat),
59 LuaElseClauseStat(LuaElseClauseStat),
60
61 LuaComment(LuaComment),
63 LuaDocTagClass(LuaDocTagClass),
65 LuaDocTagEnum(LuaDocTagEnum),
66 LuaDocTagAlias(LuaDocTagAlias),
67 LuaDocTagType(LuaDocTagType),
68 LuaDocTagParam(LuaDocTagParam),
69 LuaDocTagReturn(LuaDocTagReturn),
70 LuaDocTagOverload(LuaDocTagOverload),
71 LuaDocTagField(LuaDocTagField),
72 LuaDocTagModule(LuaDocTagModule),
73 LuaDocTagSee(LuaDocTagSee),
74 LuaDocTagDiagnostic(LuaDocTagDiagnostic),
75 LuaDocTagDeprecated(LuaDocTagDeprecated),
76 LuaDocTagVersion(LuaDocTagVersion),
77 LuaDocTagCast(LuaDocTagCast),
78 LuaDocTagSource(LuaDocTagSource),
79 LuaDocTagOther(LuaDocTagOther),
80 LuaDocTagNamespace(LuaDocTagNamespace),
81 LuaDocTagUsing(LuaDocTagUsing),
82 LuaDocTagMeta(LuaDocTagMeta),
83 LuaDocTagNodiscard(LuaDocTagNodiscard),
84 LuaDocTagReadonly(LuaDocTagReadonly),
85 LuaDocTagOperator(LuaDocTagOperator),
86 LuaDocTagGeneric(LuaDocTagGeneric),
87 LuaDocTagAsync(LuaDocTagAsync),
88 LuaDocTagAs(LuaDocTagAs),
89 LuaDocTagReturnCast(LuaDocTagReturnCast),
90 LuaDocTagExport(LuaDocTagExport),
91 LuaDocTagLanguage(LuaDocTagLanguage),
92 LuaDocTagAttribute(LuaDocTagAttribute),
93 LuaDocTagAttributeUse(LuaDocTagAttributeUse),
94 LuaDocDescription(LuaDocDescription),
96
97 LuaDocNameType(LuaDocNameType),
99 LuaDocInferType(LuaDocInferType),
100 LuaDocArrayType(LuaDocArrayType),
101 LuaDocFuncType(LuaDocFuncType),
102 LuaDocObjectType(LuaDocObjectType),
103 LuaDocBinaryType(LuaDocBinaryType),
104 LuaDocUnaryType(LuaDocUnaryType),
105 LuaDocConditionalType(LuaDocConditionalType),
106 LuaDocTupleType(LuaDocTupleType),
107 LuaDocLiteralType(LuaDocLiteralType),
108 LuaDocVariadicType(LuaDocVariadicType),
109 LuaDocNullableType(LuaDocNullableType),
110 LuaDocGenericType(LuaDocGenericType),
111 LuaDocStrTplType(LuaDocStrTplType),
112 LuaDocMultiLineUnionType(LuaDocMultiLineUnionType),
113 }
115
116impl LuaAstNode for LuaAst {
117 fn syntax(&self) -> &LuaSyntaxNode {
118 match self {
119 LuaAst::LuaChunk(node) => node.syntax(),
120 LuaAst::LuaBlock(node) => node.syntax(),
121 LuaAst::LuaAssignStat(node) => node.syntax(),
122 LuaAst::LuaLocalStat(node) => node.syntax(),
123 LuaAst::LuaCallExprStat(node) => node.syntax(),
124 LuaAst::LuaLabelStat(node) => node.syntax(),
125 LuaAst::LuaBreakStat(node) => node.syntax(),
126 LuaAst::LuaGotoStat(node) => node.syntax(),
127 LuaAst::LuaDoStat(node) => node.syntax(),
128 LuaAst::LuaWhileStat(node) => node.syntax(),
129 LuaAst::LuaRepeatStat(node) => node.syntax(),
130 LuaAst::LuaIfStat(node) => node.syntax(),
131 LuaAst::LuaForStat(node) => node.syntax(),
132 LuaAst::LuaForRangeStat(node) => node.syntax(),
133 LuaAst::LuaFuncStat(node) => node.syntax(),
134 LuaAst::LuaLocalFuncStat(node) => node.syntax(),
135 LuaAst::LuaReturnStat(node) => node.syntax(),
136 LuaAst::LuaGlobalStat(node) => node.syntax(),
137 LuaAst::LuaNameExpr(node) => node.syntax(),
138 LuaAst::LuaIndexExpr(node) => node.syntax(),
139 LuaAst::LuaTableExpr(node) => node.syntax(),
140 LuaAst::LuaBinaryExpr(node) => node.syntax(),
141 LuaAst::LuaUnaryExpr(node) => node.syntax(),
142 LuaAst::LuaParenExpr(node) => node.syntax(),
143 LuaAst::LuaCallExpr(node) => node.syntax(),
144 LuaAst::LuaLiteralExpr(node) => node.syntax(),
145 LuaAst::LuaClosureExpr(node) => node.syntax(),
146 LuaAst::LuaComment(node) => node.syntax(),
147 LuaAst::LuaTableField(node) => node.syntax(),
148 LuaAst::LuaParamList(node) => node.syntax(),
149 LuaAst::LuaParamName(node) => node.syntax(),
150 LuaAst::LuaCallArgList(node) => node.syntax(),
151 LuaAst::LuaLocalName(node) => node.syntax(),
152 LuaAst::LuaLocalAttribute(node) => node.syntax(),
153 LuaAst::LuaElseIfClauseStat(node) => node.syntax(),
154 LuaAst::LuaElseClauseStat(node) => node.syntax(),
155 LuaAst::LuaDocTagClass(node) => node.syntax(),
156 LuaAst::LuaDocTagEnum(node) => node.syntax(),
157 LuaAst::LuaDocTagAlias(node) => node.syntax(),
158 LuaAst::LuaDocTagType(node) => node.syntax(),
159 LuaAst::LuaDocTagParam(node) => node.syntax(),
160 LuaAst::LuaDocTagReturn(node) => node.syntax(),
161 LuaAst::LuaDocTagOverload(node) => node.syntax(),
162 LuaAst::LuaDocTagField(node) => node.syntax(),
163 LuaAst::LuaDocTagModule(node) => node.syntax(),
164 LuaAst::LuaDocTagSee(node) => node.syntax(),
165 LuaAst::LuaDocTagDiagnostic(node) => node.syntax(),
166 LuaAst::LuaDocTagDeprecated(node) => node.syntax(),
167 LuaAst::LuaDocTagVersion(node) => node.syntax(),
168 LuaAst::LuaDocTagCast(node) => node.syntax(),
169 LuaAst::LuaDocTagSource(node) => node.syntax(),
170 LuaAst::LuaDocTagOther(node) => node.syntax(),
171 LuaAst::LuaDocTagNamespace(node) => node.syntax(),
172 LuaAst::LuaDocTagUsing(node) => node.syntax(),
173 LuaAst::LuaDocTagMeta(node) => node.syntax(),
174 LuaAst::LuaDocTagNodiscard(node) => node.syntax(),
175 LuaAst::LuaDocTagReadonly(node) => node.syntax(),
176 LuaAst::LuaDocTagOperator(node) => node.syntax(),
177 LuaAst::LuaDocTagGeneric(node) => node.syntax(),
178 LuaAst::LuaDocTagAsync(node) => node.syntax(),
179 LuaAst::LuaDocTagAs(node) => node.syntax(),
180 LuaAst::LuaDocTagReturnCast(node) => node.syntax(),
181 LuaAst::LuaDocTagExport(node) => node.syntax(),
182 LuaAst::LuaDocTagAttribute(node) => node.syntax(),
183 LuaAst::LuaDocTagAttributeUse(node) => node.syntax(),
184 LuaAst::LuaDocTagLanguage(node) => node.syntax(),
185 LuaAst::LuaDocDescription(node) => node.syntax(),
186 LuaAst::LuaDocNameType(node) => node.syntax(),
187 LuaAst::LuaDocInferType(node) => node.syntax(),
188 LuaAst::LuaDocArrayType(node) => node.syntax(),
189 LuaAst::LuaDocFuncType(node) => node.syntax(),
190 LuaAst::LuaDocObjectType(node) => node.syntax(),
191 LuaAst::LuaDocBinaryType(node) => node.syntax(),
192 LuaAst::LuaDocUnaryType(node) => node.syntax(),
193 LuaAst::LuaDocConditionalType(node) => node.syntax(),
194 LuaAst::LuaDocTupleType(node) => node.syntax(),
195 LuaAst::LuaDocLiteralType(node) => node.syntax(),
196 LuaAst::LuaDocVariadicType(node) => node.syntax(),
197 LuaAst::LuaDocNullableType(node) => node.syntax(),
198 LuaAst::LuaDocGenericType(node) => node.syntax(),
199 LuaAst::LuaDocStrTplType(node) => node.syntax(),
200 LuaAst::LuaDocMultiLineUnionType(node) => node.syntax(),
201 }
202 }
203
204 fn can_cast(kind: LuaSyntaxKind) -> bool
205 where
206 Self: Sized,
207 {
208 matches!(
209 kind,
210 LuaSyntaxKind::Chunk
211 | LuaSyntaxKind::Block
212 | LuaSyntaxKind::AssignStat
213 | LuaSyntaxKind::LocalStat
214 | LuaSyntaxKind::CallExprStat
215 | LuaSyntaxKind::LabelStat
216 | LuaSyntaxKind::BreakStat
217 | LuaSyntaxKind::GotoStat
218 | LuaSyntaxKind::DoStat
219 | LuaSyntaxKind::WhileStat
220 | LuaSyntaxKind::RepeatStat
221 | LuaSyntaxKind::IfStat
222 | LuaSyntaxKind::ForStat
223 | LuaSyntaxKind::ForRangeStat
224 | LuaSyntaxKind::FuncStat
225 | LuaSyntaxKind::LocalFuncStat
226 | LuaSyntaxKind::ReturnStat
227 | LuaSyntaxKind::GlobalStat
228 | LuaSyntaxKind::NameExpr
229 | LuaSyntaxKind::IndexExpr
230 | LuaSyntaxKind::TableEmptyExpr
231 | LuaSyntaxKind::TableArrayExpr
232 | LuaSyntaxKind::TableObjectExpr
233 | LuaSyntaxKind::BinaryExpr
234 | LuaSyntaxKind::UnaryExpr
235 | LuaSyntaxKind::ParenExpr
236 | LuaSyntaxKind::CallExpr
237 | LuaSyntaxKind::AssertCallExpr
238 | LuaSyntaxKind::ErrorCallExpr
239 | LuaSyntaxKind::RequireCallExpr
240 | LuaSyntaxKind::TypeCallExpr
241 | LuaSyntaxKind::SetmetatableCallExpr
242 | LuaSyntaxKind::LiteralExpr
243 | LuaSyntaxKind::ClosureExpr
244 | LuaSyntaxKind::ParamList
245 | LuaSyntaxKind::CallArgList
246 | LuaSyntaxKind::LocalName
247 | LuaSyntaxKind::TableFieldAssign
248 | LuaSyntaxKind::TableFieldValue
249 | LuaSyntaxKind::ParamName
250 | LuaSyntaxKind::Attribute
251 | LuaSyntaxKind::ElseIfClauseStat
252 | LuaSyntaxKind::ElseClauseStat
253 | LuaSyntaxKind::Comment
254 | LuaSyntaxKind::DocTagClass
255 | LuaSyntaxKind::DocTagEnum
256 | LuaSyntaxKind::DocTagAlias
257 | LuaSyntaxKind::DocTagType
258 | LuaSyntaxKind::DocTagParam
259 | LuaSyntaxKind::DocTagReturn
260 | LuaSyntaxKind::DocTagOverload
261 | LuaSyntaxKind::DocTagField
262 | LuaSyntaxKind::DocTagModule
263 | LuaSyntaxKind::DocTagSee
264 | LuaSyntaxKind::DocTagDiagnostic
265 | LuaSyntaxKind::DocTagDeprecated
266 | LuaSyntaxKind::DocTagVersion
267 | LuaSyntaxKind::DocTagCast
268 | LuaSyntaxKind::DocTagSource
269 | LuaSyntaxKind::DocTagOther
270 | LuaSyntaxKind::DocTagNamespace
271 | LuaSyntaxKind::DocTagUsing
272 | LuaSyntaxKind::DocTagMeta
273 | LuaSyntaxKind::DocTagNodiscard
274 | LuaSyntaxKind::DocTagReadonly
275 | LuaSyntaxKind::DocTagOperator
276 | LuaSyntaxKind::DocTagGeneric
277 | LuaSyntaxKind::DocTagAsync
278 | LuaSyntaxKind::DocTagAs
279 | LuaSyntaxKind::DocTagReturnCast
280 | LuaSyntaxKind::DocTagExport
281 | LuaSyntaxKind::DocTagLanguage
282 | LuaSyntaxKind::TypeName
283 | LuaSyntaxKind::TypeInfer
284 | LuaSyntaxKind::TypeArray
285 | LuaSyntaxKind::TypeFun
286 | LuaSyntaxKind::TypeObject
287 | LuaSyntaxKind::TypeBinary
288 | LuaSyntaxKind::TypeUnary
289 | LuaSyntaxKind::TypeConditional
290 | LuaSyntaxKind::TypeTuple
291 | LuaSyntaxKind::TypeLiteral
292 | LuaSyntaxKind::TypeVariadic
293 | LuaSyntaxKind::TypeNullable
294 | LuaSyntaxKind::TypeGeneric
295 | LuaSyntaxKind::TypeStringTemplate
296 | LuaSyntaxKind::TypeMultiLineUnion
297 | LuaSyntaxKind::DocAttributeUse
298 )
299 }
300
301 fn cast(syntax: LuaSyntaxNode) -> Option<Self>
302 where
303 Self: Sized,
304 {
305 match syntax.kind().into() {
306 LuaSyntaxKind::Chunk => LuaChunk::cast(syntax).map(LuaAst::LuaChunk),
307 LuaSyntaxKind::Block => LuaBlock::cast(syntax).map(LuaAst::LuaBlock),
308 LuaSyntaxKind::AssignStat => LuaAssignStat::cast(syntax).map(LuaAst::LuaAssignStat),
309 LuaSyntaxKind::LocalStat => LuaLocalStat::cast(syntax).map(LuaAst::LuaLocalStat),
310 LuaSyntaxKind::CallExprStat => {
311 LuaCallExprStat::cast(syntax).map(LuaAst::LuaCallExprStat)
312 }
313 LuaSyntaxKind::LabelStat => LuaLabelStat::cast(syntax).map(LuaAst::LuaLabelStat),
314 LuaSyntaxKind::BreakStat => LuaBreakStat::cast(syntax).map(LuaAst::LuaBreakStat),
315 LuaSyntaxKind::GotoStat => LuaGotoStat::cast(syntax).map(LuaAst::LuaGotoStat),
316 LuaSyntaxKind::DoStat => LuaDoStat::cast(syntax).map(LuaAst::LuaDoStat),
317 LuaSyntaxKind::WhileStat => LuaWhileStat::cast(syntax).map(LuaAst::LuaWhileStat),
318 LuaSyntaxKind::RepeatStat => LuaRepeatStat::cast(syntax).map(LuaAst::LuaRepeatStat),
319 LuaSyntaxKind::IfStat => LuaIfStat::cast(syntax).map(LuaAst::LuaIfStat),
320 LuaSyntaxKind::ForStat => LuaForStat::cast(syntax).map(LuaAst::LuaForStat),
321 LuaSyntaxKind::ForRangeStat => {
322 LuaForRangeStat::cast(syntax).map(LuaAst::LuaForRangeStat)
323 }
324 LuaSyntaxKind::FuncStat => LuaFuncStat::cast(syntax).map(LuaAst::LuaFuncStat),
325 LuaSyntaxKind::LocalFuncStat => {
326 LuaLocalFuncStat::cast(syntax).map(LuaAst::LuaLocalFuncStat)
327 }
328 LuaSyntaxKind::ReturnStat => LuaReturnStat::cast(syntax).map(LuaAst::LuaReturnStat),
329 LuaSyntaxKind::GlobalStat => LuaGlobalStat::cast(syntax).map(LuaAst::LuaGlobalStat),
330 LuaSyntaxKind::NameExpr => LuaNameExpr::cast(syntax).map(LuaAst::LuaNameExpr),
331 LuaSyntaxKind::IndexExpr => LuaIndexExpr::cast(syntax).map(LuaAst::LuaIndexExpr),
332 LuaSyntaxKind::TableEmptyExpr
333 | LuaSyntaxKind::TableArrayExpr
334 | LuaSyntaxKind::TableObjectExpr => {
335 LuaTableExpr::cast(syntax).map(LuaAst::LuaTableExpr)
336 }
337 LuaSyntaxKind::BinaryExpr => LuaBinaryExpr::cast(syntax).map(LuaAst::LuaBinaryExpr),
338 LuaSyntaxKind::UnaryExpr => LuaUnaryExpr::cast(syntax).map(LuaAst::LuaUnaryExpr),
339 LuaSyntaxKind::ParenExpr => LuaParenExpr::cast(syntax).map(LuaAst::LuaParenExpr),
340 LuaSyntaxKind::CallExpr
341 | LuaSyntaxKind::AssertCallExpr
342 | LuaSyntaxKind::ErrorCallExpr
343 | LuaSyntaxKind::RequireCallExpr
344 | LuaSyntaxKind::TypeCallExpr
345 | LuaSyntaxKind::SetmetatableCallExpr => {
346 LuaCallExpr::cast(syntax).map(LuaAst::LuaCallExpr)
347 }
348 LuaSyntaxKind::LiteralExpr => LuaLiteralExpr::cast(syntax).map(LuaAst::LuaLiteralExpr),
349 LuaSyntaxKind::ClosureExpr => LuaClosureExpr::cast(syntax).map(LuaAst::LuaClosureExpr),
350 LuaSyntaxKind::Comment => LuaComment::cast(syntax).map(LuaAst::LuaComment),
351 LuaSyntaxKind::TableFieldAssign | LuaSyntaxKind::TableFieldValue => {
352 LuaTableField::cast(syntax).map(LuaAst::LuaTableField)
353 }
354 LuaSyntaxKind::ParamList => LuaParamList::cast(syntax).map(LuaAst::LuaParamList),
355 LuaSyntaxKind::ParamName => LuaParamName::cast(syntax).map(LuaAst::LuaParamName),
356 LuaSyntaxKind::CallArgList => LuaCallArgList::cast(syntax).map(LuaAst::LuaCallArgList),
357 LuaSyntaxKind::LocalName => LuaLocalName::cast(syntax).map(LuaAst::LuaLocalName),
358 LuaSyntaxKind::Attribute => {
359 LuaLocalAttribute::cast(syntax).map(LuaAst::LuaLocalAttribute)
360 }
361 LuaSyntaxKind::ElseIfClauseStat => {
362 LuaElseIfClauseStat::cast(syntax).map(LuaAst::LuaElseIfClauseStat)
363 }
364 LuaSyntaxKind::ElseClauseStat => {
365 LuaElseClauseStat::cast(syntax).map(LuaAst::LuaElseClauseStat)
366 }
367 LuaSyntaxKind::DocTagClass => LuaDocTagClass::cast(syntax).map(LuaAst::LuaDocTagClass),
368 LuaSyntaxKind::DocTagEnum => LuaDocTagEnum::cast(syntax).map(LuaAst::LuaDocTagEnum),
369 LuaSyntaxKind::DocTagAlias => LuaDocTagAlias::cast(syntax).map(LuaAst::LuaDocTagAlias),
370 LuaSyntaxKind::DocTagAttribute => {
371 LuaDocTagAttribute::cast(syntax).map(LuaAst::LuaDocTagAttribute)
372 }
373 LuaSyntaxKind::DocTagType => LuaDocTagType::cast(syntax).map(LuaAst::LuaDocTagType),
374 LuaSyntaxKind::DocTagParam => LuaDocTagParam::cast(syntax).map(LuaAst::LuaDocTagParam),
375 LuaSyntaxKind::DocTagReturn => {
376 LuaDocTagReturn::cast(syntax).map(LuaAst::LuaDocTagReturn)
377 }
378 LuaSyntaxKind::DocTagOverload => {
379 LuaDocTagOverload::cast(syntax).map(LuaAst::LuaDocTagOverload)
380 }
381 LuaSyntaxKind::DocTagField => LuaDocTagField::cast(syntax).map(LuaAst::LuaDocTagField),
382 LuaSyntaxKind::DocTagModule => {
383 LuaDocTagModule::cast(syntax).map(LuaAst::LuaDocTagModule)
384 }
385 LuaSyntaxKind::DocTagSee => LuaDocTagSee::cast(syntax).map(LuaAst::LuaDocTagSee),
386 LuaSyntaxKind::DocTagDiagnostic => {
387 LuaDocTagDiagnostic::cast(syntax).map(LuaAst::LuaDocTagDiagnostic)
388 }
389 LuaSyntaxKind::DocTagDeprecated => {
390 LuaDocTagDeprecated::cast(syntax).map(LuaAst::LuaDocTagDeprecated)
391 }
392 LuaSyntaxKind::DocTagVersion => {
393 LuaDocTagVersion::cast(syntax).map(LuaAst::LuaDocTagVersion)
394 }
395 LuaSyntaxKind::DocTagCast => LuaDocTagCast::cast(syntax).map(LuaAst::LuaDocTagCast),
396 LuaSyntaxKind::DocTagSource => {
397 LuaDocTagSource::cast(syntax).map(LuaAst::LuaDocTagSource)
398 }
399 LuaSyntaxKind::DocTagOther => LuaDocTagOther::cast(syntax).map(LuaAst::LuaDocTagOther),
400 LuaSyntaxKind::DocTagNamespace => {
401 LuaDocTagNamespace::cast(syntax).map(LuaAst::LuaDocTagNamespace)
402 }
403 LuaSyntaxKind::DocTagUsing => LuaDocTagUsing::cast(syntax).map(LuaAst::LuaDocTagUsing),
404 LuaSyntaxKind::DocTagMeta => LuaDocTagMeta::cast(syntax).map(LuaAst::LuaDocTagMeta),
405 LuaSyntaxKind::DocTagNodiscard => {
406 LuaDocTagNodiscard::cast(syntax).map(LuaAst::LuaDocTagNodiscard)
407 }
408 LuaSyntaxKind::DocTagReadonly => {
409 LuaDocTagReadonly::cast(syntax).map(LuaAst::LuaDocTagReadonly)
410 }
411 LuaSyntaxKind::DocTagOperator => {
412 LuaDocTagOperator::cast(syntax).map(LuaAst::LuaDocTagOperator)
413 }
414 LuaSyntaxKind::DocTagGeneric => {
415 LuaDocTagGeneric::cast(syntax).map(LuaAst::LuaDocTagGeneric)
416 }
417 LuaSyntaxKind::DocTagAsync => LuaDocTagAsync::cast(syntax).map(LuaAst::LuaDocTagAsync),
418 LuaSyntaxKind::DocTagAs => LuaDocTagAs::cast(syntax).map(LuaAst::LuaDocTagAs),
419 LuaSyntaxKind::DocTagReturnCast => {
420 LuaDocTagReturnCast::cast(syntax).map(LuaAst::LuaDocTagReturnCast)
421 }
422 LuaSyntaxKind::DocTagExport => {
423 LuaDocTagExport::cast(syntax).map(LuaAst::LuaDocTagExport)
424 }
425 LuaSyntaxKind::DocTagLanguage => {
426 LuaDocTagLanguage::cast(syntax).map(LuaAst::LuaDocTagLanguage)
427 }
428 LuaSyntaxKind::DocDescription => {
429 LuaDocDescription::cast(syntax).map(LuaAst::LuaDocDescription)
430 }
431 LuaSyntaxKind::TypeName => LuaDocNameType::cast(syntax).map(LuaAst::LuaDocNameType),
432 LuaSyntaxKind::TypeInfer => LuaDocInferType::cast(syntax).map(LuaAst::LuaDocInferType),
433 LuaSyntaxKind::TypeArray => LuaDocArrayType::cast(syntax).map(LuaAst::LuaDocArrayType),
434 LuaSyntaxKind::TypeFun => LuaDocFuncType::cast(syntax).map(LuaAst::LuaDocFuncType),
435 LuaSyntaxKind::TypeObject => {
436 LuaDocObjectType::cast(syntax).map(LuaAst::LuaDocObjectType)
437 }
438 LuaSyntaxKind::TypeBinary => {
439 LuaDocBinaryType::cast(syntax).map(LuaAst::LuaDocBinaryType)
440 }
441 LuaSyntaxKind::TypeUnary => LuaDocUnaryType::cast(syntax).map(LuaAst::LuaDocUnaryType),
442 LuaSyntaxKind::TypeConditional => {
443 LuaDocConditionalType::cast(syntax).map(LuaAst::LuaDocConditionalType)
444 }
445 LuaSyntaxKind::TypeTuple => LuaDocTupleType::cast(syntax).map(LuaAst::LuaDocTupleType),
446 LuaSyntaxKind::TypeLiteral => {
447 LuaDocLiteralType::cast(syntax).map(LuaAst::LuaDocLiteralType)
448 }
449 LuaSyntaxKind::TypeVariadic => {
450 LuaDocVariadicType::cast(syntax).map(LuaAst::LuaDocVariadicType)
451 }
452 LuaSyntaxKind::TypeNullable => {
453 LuaDocNullableType::cast(syntax).map(LuaAst::LuaDocNullableType)
454 }
455 LuaSyntaxKind::TypeGeneric => {
456 LuaDocGenericType::cast(syntax).map(LuaAst::LuaDocGenericType)
457 }
458 LuaSyntaxKind::TypeStringTemplate => {
459 LuaDocStrTplType::cast(syntax).map(LuaAst::LuaDocStrTplType)
460 }
461 LuaSyntaxKind::TypeMultiLineUnion => {
462 LuaDocMultiLineUnionType::cast(syntax).map(LuaAst::LuaDocMultiLineUnionType)
463 }
464 LuaSyntaxKind::DocTagAttributeUse => {
465 LuaDocTagAttributeUse::cast(syntax).map(LuaAst::LuaDocTagAttributeUse)
466 }
467 _ => None,
468 }
469 }
470}