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::{traits::LuaAstNode, LuaSyntaxNode};
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
39 LuaNameExpr(LuaNameExpr),
41 LuaIndexExpr(LuaIndexExpr),
42 LuaTableExpr(LuaTableExpr),
43 LuaBinaryExpr(LuaBinaryExpr),
44 LuaUnaryExpr(LuaUnaryExpr),
45 LuaParenExpr(LuaParenExpr),
46 LuaCallExpr(LuaCallExpr),
47 LuaLiteralExpr(LuaLiteralExpr),
48 LuaClosureExpr(LuaClosureExpr),
49
50 LuaTableField(LuaTableField),
52 LuaParamList(LuaParamList),
53 LuaParamName(LuaParamName),
54 LuaCallArgList(LuaCallArgList),
55 LuaLocalName(LuaLocalName),
56 LuaLocalAttribute(LuaLocalAttribute),
57 LuaElseIfClauseStat(LuaElseIfClauseStat),
58 LuaElseClauseStat(LuaElseClauseStat),
59
60 LuaComment(LuaComment),
62 LuaDocTagClass(LuaDocTagClass),
64 LuaDocTagEnum(LuaDocTagEnum),
65 LuaDocTagAlias(LuaDocTagAlias),
66 LuaDocTagType(LuaDocTagType),
67 LuaDocTagParam(LuaDocTagParam),
68 LuaDocTagReturn(LuaDocTagReturn),
69 LuaDocTagOverload(LuaDocTagOverload),
70 LuaDocTagField(LuaDocTagField),
71 LuaDocTagModule(LuaDocTagModule),
72 LuaDocTagSee(LuaDocTagSee),
73 LuaDocTagDiagnostic(LuaDocTagDiagnostic),
74 LuaDocTagDeprecated(LuaDocTagDeprecated),
75 LuaDocTagVersion(LuaDocTagVersion),
76 LuaDocTagCast(LuaDocTagCast),
77 LuaDocTagSource(LuaDocTagSource),
78 LuaDocTagOther(LuaDocTagOther),
79 LuaDocTagNamespace(LuaDocTagNamespace),
80 LuaDocTagUsing(LuaDocTagUsing),
81 LuaDocTagMeta(LuaDocTagMeta),
82 LuaDocTagNodiscard(LuaDocTagNodiscard),
83 LuaDocTagReadonly(LuaDocTagReadonly),
84 LuaDocTagOperator(LuaDocTagOperator),
85 LuaDocTagGeneric(LuaDocTagGeneric),
86 LuaDocTagAsync(LuaDocTagAsync),
87 LuaDocTagAs(LuaDocTagAs),
88
89 LuaDocNameType(LuaDocNameType),
91 LuaDocArrayType(LuaDocArrayType),
92 LuaDocFuncType(LuaDocFuncType),
93 LuaDocObjectType(LuaDocObjectType),
94 LuaDocBinaryType(LuaDocBinaryType),
95 LuaDocUnaryType(LuaDocUnaryType),
96 LuaDocConditionalType(LuaDocConditionalType),
97 LuaDocTupleType(LuaDocTupleType),
98 LuaDocLiteralType(LuaDocLiteralType),
99 LuaDocVariadicType(LuaDocVariadicType),
100 LuaDocNullableType(LuaDocNullableType),
101 LuaDocGenericType(LuaDocGenericType),
102 LuaDocStrTplType(LuaDocStrTplType),
103 LuaDocMultiLineUnionType(LuaDocMultiLineUnionType),
104 }
106
107impl LuaAstNode for LuaAst {
108 fn syntax(&self) -> &LuaSyntaxNode {
109 match self {
110 LuaAst::LuaChunk(node) => node.syntax(),
111 LuaAst::LuaBlock(node) => node.syntax(),
112 LuaAst::LuaAssignStat(node) => node.syntax(),
113 LuaAst::LuaLocalStat(node) => node.syntax(),
114 LuaAst::LuaCallExprStat(node) => node.syntax(),
115 LuaAst::LuaLabelStat(node) => node.syntax(),
116 LuaAst::LuaBreakStat(node) => node.syntax(),
117 LuaAst::LuaGotoStat(node) => node.syntax(),
118 LuaAst::LuaDoStat(node) => node.syntax(),
119 LuaAst::LuaWhileStat(node) => node.syntax(),
120 LuaAst::LuaRepeatStat(node) => node.syntax(),
121 LuaAst::LuaIfStat(node) => node.syntax(),
122 LuaAst::LuaForStat(node) => node.syntax(),
123 LuaAst::LuaForRangeStat(node) => node.syntax(),
124 LuaAst::LuaFuncStat(node) => node.syntax(),
125 LuaAst::LuaLocalFuncStat(node) => node.syntax(),
126 LuaAst::LuaReturnStat(node) => node.syntax(),
127 LuaAst::LuaNameExpr(node) => node.syntax(),
128 LuaAst::LuaIndexExpr(node) => node.syntax(),
129 LuaAst::LuaTableExpr(node) => node.syntax(),
130 LuaAst::LuaBinaryExpr(node) => node.syntax(),
131 LuaAst::LuaUnaryExpr(node) => node.syntax(),
132 LuaAst::LuaParenExpr(node) => node.syntax(),
133 LuaAst::LuaCallExpr(node) => node.syntax(),
134 LuaAst::LuaLiteralExpr(node) => node.syntax(),
135 LuaAst::LuaClosureExpr(node) => node.syntax(),
136 LuaAst::LuaComment(node) => node.syntax(),
137 LuaAst::LuaTableField(node) => node.syntax(),
138 LuaAst::LuaParamList(node) => node.syntax(),
139 LuaAst::LuaParamName(node) => node.syntax(),
140 LuaAst::LuaCallArgList(node) => node.syntax(),
141 LuaAst::LuaLocalName(node) => node.syntax(),
142 LuaAst::LuaLocalAttribute(node) => node.syntax(),
143 LuaAst::LuaElseIfClauseStat(node) => node.syntax(),
144 LuaAst::LuaElseClauseStat(node) => node.syntax(),
145 LuaAst::LuaDocTagClass(node) => node.syntax(),
146 LuaAst::LuaDocTagEnum(node) => node.syntax(),
147 LuaAst::LuaDocTagAlias(node) => node.syntax(),
148 LuaAst::LuaDocTagType(node) => node.syntax(),
149 LuaAst::LuaDocTagParam(node) => node.syntax(),
150 LuaAst::LuaDocTagReturn(node) => node.syntax(),
151 LuaAst::LuaDocTagOverload(node) => node.syntax(),
152 LuaAst::LuaDocTagField(node) => node.syntax(),
153 LuaAst::LuaDocTagModule(node) => node.syntax(),
154 LuaAst::LuaDocTagSee(node) => node.syntax(),
155 LuaAst::LuaDocTagDiagnostic(node) => node.syntax(),
156 LuaAst::LuaDocTagDeprecated(node) => node.syntax(),
157 LuaAst::LuaDocTagVersion(node) => node.syntax(),
158 LuaAst::LuaDocTagCast(node) => node.syntax(),
159 LuaAst::LuaDocTagSource(node) => node.syntax(),
160 LuaAst::LuaDocTagOther(node) => node.syntax(),
161 LuaAst::LuaDocTagNamespace(node) => node.syntax(),
162 LuaAst::LuaDocTagUsing(node) => node.syntax(),
163 LuaAst::LuaDocTagMeta(node) => node.syntax(),
164 LuaAst::LuaDocTagNodiscard(node) => node.syntax(),
165 LuaAst::LuaDocTagReadonly(node) => node.syntax(),
166 LuaAst::LuaDocTagOperator(node) => node.syntax(),
167 LuaAst::LuaDocTagGeneric(node) => node.syntax(),
168 LuaAst::LuaDocTagAsync(node) => node.syntax(),
169 LuaAst::LuaDocTagAs(node) => node.syntax(),
170 LuaAst::LuaDocNameType(node) => node.syntax(),
171 LuaAst::LuaDocArrayType(node) => node.syntax(),
172 LuaAst::LuaDocFuncType(node) => node.syntax(),
173 LuaAst::LuaDocObjectType(node) => node.syntax(),
174 LuaAst::LuaDocBinaryType(node) => node.syntax(),
175 LuaAst::LuaDocUnaryType(node) => node.syntax(),
176 LuaAst::LuaDocConditionalType(node) => node.syntax(),
177 LuaAst::LuaDocTupleType(node) => node.syntax(),
178 LuaAst::LuaDocLiteralType(node) => node.syntax(),
179 LuaAst::LuaDocVariadicType(node) => node.syntax(),
180 LuaAst::LuaDocNullableType(node) => node.syntax(),
181 LuaAst::LuaDocGenericType(node) => node.syntax(),
182 LuaAst::LuaDocStrTplType(node) => node.syntax(),
183 LuaAst::LuaDocMultiLineUnionType(node) => node.syntax(),
184 }
185 }
186
187 fn can_cast(kind: LuaSyntaxKind) -> bool
188 where
189 Self: Sized,
190 {
191 match kind {
192 LuaSyntaxKind::Chunk => true,
193 LuaSyntaxKind::Block => true,
194 LuaSyntaxKind::AssignStat => true,
195 LuaSyntaxKind::LocalStat => true,
196 LuaSyntaxKind::CallExprStat => true,
197 LuaSyntaxKind::LabelStat => true,
198 LuaSyntaxKind::BreakStat => true,
199 LuaSyntaxKind::GotoStat => true,
200 LuaSyntaxKind::DoStat => true,
201 LuaSyntaxKind::WhileStat => true,
202 LuaSyntaxKind::RepeatStat => true,
203 LuaSyntaxKind::IfStat => true,
204 LuaSyntaxKind::ForStat => true,
205 LuaSyntaxKind::ForRangeStat => true,
206 LuaSyntaxKind::FuncStat => true,
207 LuaSyntaxKind::LocalFuncStat => true,
208 LuaSyntaxKind::ReturnStat => true,
209 LuaSyntaxKind::NameExpr => true,
210 LuaSyntaxKind::IndexExpr => true,
211 LuaSyntaxKind::TableEmptyExpr
212 | LuaSyntaxKind::TableArrayExpr
213 | LuaSyntaxKind::TableObjectExpr => true,
214 LuaSyntaxKind::BinaryExpr => true,
215 LuaSyntaxKind::UnaryExpr => true,
216 LuaSyntaxKind::ParenExpr => true,
217 LuaSyntaxKind::CallExpr
218 | LuaSyntaxKind::AssertCallExpr
219 | LuaSyntaxKind::ErrorCallExpr
220 | LuaSyntaxKind::RequireCallExpr
221 | LuaSyntaxKind::TypeCallExpr => true,
222 LuaSyntaxKind::LiteralExpr => true,
223 LuaSyntaxKind::ClosureExpr => true,
224 LuaSyntaxKind::ParamList => true,
225 LuaSyntaxKind::CallArgList => true,
226 LuaSyntaxKind::LocalName => true,
227 LuaSyntaxKind::TableFieldAssign | LuaSyntaxKind::TableFieldValue => true,
228 LuaSyntaxKind::ParamName => true,
229 LuaSyntaxKind::Attribute => true,
230 LuaSyntaxKind::ElseIfClauseStat => true,
231 LuaSyntaxKind::ElseClauseStat => true,
232 LuaSyntaxKind::Comment => true,
233 LuaSyntaxKind::DocTagClass => true,
234 LuaSyntaxKind::DocTagEnum => true,
235 LuaSyntaxKind::DocTagAlias => true,
236 LuaSyntaxKind::DocTagType => true,
237 LuaSyntaxKind::DocTagParam => true,
238 LuaSyntaxKind::DocTagReturn => true,
239 LuaSyntaxKind::DocTagOverload => true,
240 LuaSyntaxKind::DocTagField => true,
241 LuaSyntaxKind::DocTagModule => true,
242 LuaSyntaxKind::DocTagSee => true,
243 LuaSyntaxKind::DocTagDiagnostic => true,
244 LuaSyntaxKind::DocTagDeprecated => true,
245 LuaSyntaxKind::DocTagVersion => true,
246 LuaSyntaxKind::DocTagCast => true,
247 LuaSyntaxKind::DocTagSource => true,
248 LuaSyntaxKind::DocTagOther => true,
249 LuaSyntaxKind::DocTagNamespace => true,
250 LuaSyntaxKind::DocTagUsing => true,
251 LuaSyntaxKind::DocTagMeta => true,
252 LuaSyntaxKind::DocTagNodiscard => true,
253 LuaSyntaxKind::DocTagReadonly => true,
254 LuaSyntaxKind::DocTagOperator => true,
255 LuaSyntaxKind::DocTagGeneric => true,
256 LuaSyntaxKind::DocTagAsync => true,
257 LuaSyntaxKind::DocTagAs => true,
258 LuaSyntaxKind::TypeName => true,
259 LuaSyntaxKind::TypeArray => true,
260 LuaSyntaxKind::TypeFun => true,
261 LuaSyntaxKind::TypeObject => true,
262 LuaSyntaxKind::TypeBinary => true,
263 LuaSyntaxKind::TypeUnary => true,
264 LuaSyntaxKind::TypeConditional => true,
265 LuaSyntaxKind::TypeTuple => true,
266 LuaSyntaxKind::TypeLiteral => true,
267 LuaSyntaxKind::TypeVariadic => true,
268 LuaSyntaxKind::TypeNullable => true,
269 LuaSyntaxKind::TypeGeneric => true,
270 LuaSyntaxKind::TypeStringTemplate => true,
271 LuaSyntaxKind::TypeMultiLineUnion => true,
272 _ => false,
273 }
274 }
275
276 fn cast(syntax: LuaSyntaxNode) -> Option<Self>
277 where
278 Self: Sized,
279 {
280 match syntax.kind().into() {
281 LuaSyntaxKind::Chunk => LuaChunk::cast(syntax).map(LuaAst::LuaChunk),
282 LuaSyntaxKind::Block => LuaBlock::cast(syntax).map(LuaAst::LuaBlock),
283 LuaSyntaxKind::AssignStat => LuaAssignStat::cast(syntax).map(LuaAst::LuaAssignStat),
284 LuaSyntaxKind::LocalStat => LuaLocalStat::cast(syntax).map(LuaAst::LuaLocalStat),
285 LuaSyntaxKind::CallExprStat => {
286 LuaCallExprStat::cast(syntax).map(LuaAst::LuaCallExprStat)
287 }
288 LuaSyntaxKind::LabelStat => LuaLabelStat::cast(syntax).map(LuaAst::LuaLabelStat),
289 LuaSyntaxKind::BreakStat => LuaBreakStat::cast(syntax).map(LuaAst::LuaBreakStat),
290 LuaSyntaxKind::GotoStat => LuaGotoStat::cast(syntax).map(LuaAst::LuaGotoStat),
291 LuaSyntaxKind::DoStat => LuaDoStat::cast(syntax).map(LuaAst::LuaDoStat),
292 LuaSyntaxKind::WhileStat => LuaWhileStat::cast(syntax).map(LuaAst::LuaWhileStat),
293 LuaSyntaxKind::RepeatStat => LuaRepeatStat::cast(syntax).map(LuaAst::LuaRepeatStat),
294 LuaSyntaxKind::IfStat => LuaIfStat::cast(syntax).map(LuaAst::LuaIfStat),
295 LuaSyntaxKind::ForStat => LuaForStat::cast(syntax).map(LuaAst::LuaForStat),
296 LuaSyntaxKind::ForRangeStat => {
297 LuaForRangeStat::cast(syntax).map(LuaAst::LuaForRangeStat)
298 }
299 LuaSyntaxKind::FuncStat => LuaFuncStat::cast(syntax).map(LuaAst::LuaFuncStat),
300 LuaSyntaxKind::LocalFuncStat => {
301 LuaLocalFuncStat::cast(syntax).map(LuaAst::LuaLocalFuncStat)
302 }
303 LuaSyntaxKind::ReturnStat => LuaReturnStat::cast(syntax).map(LuaAst::LuaReturnStat),
304 LuaSyntaxKind::NameExpr => LuaNameExpr::cast(syntax).map(LuaAst::LuaNameExpr),
305 LuaSyntaxKind::IndexExpr => LuaIndexExpr::cast(syntax).map(LuaAst::LuaIndexExpr),
306 LuaSyntaxKind::TableEmptyExpr
307 | LuaSyntaxKind::TableArrayExpr
308 | LuaSyntaxKind::TableObjectExpr => {
309 LuaTableExpr::cast(syntax).map(LuaAst::LuaTableExpr)
310 }
311 LuaSyntaxKind::BinaryExpr => LuaBinaryExpr::cast(syntax).map(LuaAst::LuaBinaryExpr),
312 LuaSyntaxKind::UnaryExpr => LuaUnaryExpr::cast(syntax).map(LuaAst::LuaUnaryExpr),
313 LuaSyntaxKind::ParenExpr => LuaParenExpr::cast(syntax).map(LuaAst::LuaParenExpr),
314 LuaSyntaxKind::CallExpr
315 | LuaSyntaxKind::AssertCallExpr
316 | LuaSyntaxKind::ErrorCallExpr
317 | LuaSyntaxKind::RequireCallExpr
318 | LuaSyntaxKind::TypeCallExpr => LuaCallExpr::cast(syntax).map(LuaAst::LuaCallExpr),
319 LuaSyntaxKind::LiteralExpr => LuaLiteralExpr::cast(syntax).map(LuaAst::LuaLiteralExpr),
320 LuaSyntaxKind::ClosureExpr => LuaClosureExpr::cast(syntax).map(LuaAst::LuaClosureExpr),
321 LuaSyntaxKind::Comment => LuaComment::cast(syntax).map(LuaAst::LuaComment),
322 LuaSyntaxKind::TableFieldAssign | LuaSyntaxKind::TableFieldValue => {
323 LuaTableField::cast(syntax).map(LuaAst::LuaTableField)
324 }
325 LuaSyntaxKind::ParamList => LuaParamList::cast(syntax).map(LuaAst::LuaParamList),
326 LuaSyntaxKind::ParamName => LuaParamName::cast(syntax).map(LuaAst::LuaParamName),
327 LuaSyntaxKind::CallArgList => LuaCallArgList::cast(syntax).map(LuaAst::LuaCallArgList),
328 LuaSyntaxKind::LocalName => LuaLocalName::cast(syntax).map(LuaAst::LuaLocalName),
329 LuaSyntaxKind::Attribute => {
330 LuaLocalAttribute::cast(syntax).map(LuaAst::LuaLocalAttribute)
331 }
332 LuaSyntaxKind::ElseIfClauseStat => {
333 LuaElseIfClauseStat::cast(syntax).map(LuaAst::LuaElseIfClauseStat)
334 }
335 LuaSyntaxKind::ElseClauseStat => {
336 LuaElseClauseStat::cast(syntax).map(LuaAst::LuaElseClauseStat)
337 }
338 LuaSyntaxKind::DocTagClass => LuaDocTagClass::cast(syntax).map(LuaAst::LuaDocTagClass),
339 LuaSyntaxKind::DocTagEnum => LuaDocTagEnum::cast(syntax).map(LuaAst::LuaDocTagEnum),
340 LuaSyntaxKind::DocTagAlias => LuaDocTagAlias::cast(syntax).map(LuaAst::LuaDocTagAlias),
341 LuaSyntaxKind::DocTagType => LuaDocTagType::cast(syntax).map(LuaAst::LuaDocTagType),
342 LuaSyntaxKind::DocTagParam => LuaDocTagParam::cast(syntax).map(LuaAst::LuaDocTagParam),
343 LuaSyntaxKind::DocTagReturn => {
344 LuaDocTagReturn::cast(syntax).map(LuaAst::LuaDocTagReturn)
345 }
346 LuaSyntaxKind::DocTagOverload => {
347 LuaDocTagOverload::cast(syntax).map(LuaAst::LuaDocTagOverload)
348 }
349 LuaSyntaxKind::DocTagField => LuaDocTagField::cast(syntax).map(LuaAst::LuaDocTagField),
350 LuaSyntaxKind::DocTagModule => {
351 LuaDocTagModule::cast(syntax).map(LuaAst::LuaDocTagModule)
352 }
353 LuaSyntaxKind::DocTagSee => LuaDocTagSee::cast(syntax).map(LuaAst::LuaDocTagSee),
354 LuaSyntaxKind::DocTagDiagnostic => {
355 LuaDocTagDiagnostic::cast(syntax).map(LuaAst::LuaDocTagDiagnostic)
356 }
357 LuaSyntaxKind::DocTagDeprecated => {
358 LuaDocTagDeprecated::cast(syntax).map(LuaAst::LuaDocTagDeprecated)
359 }
360 LuaSyntaxKind::DocTagVersion => {
361 LuaDocTagVersion::cast(syntax).map(LuaAst::LuaDocTagVersion)
362 }
363 LuaSyntaxKind::DocTagCast => LuaDocTagCast::cast(syntax).map(LuaAst::LuaDocTagCast),
364 LuaSyntaxKind::DocTagSource => {
365 LuaDocTagSource::cast(syntax).map(LuaAst::LuaDocTagSource)
366 }
367 LuaSyntaxKind::DocTagOther => LuaDocTagOther::cast(syntax).map(LuaAst::LuaDocTagOther),
368 LuaSyntaxKind::DocTagNamespace => {
369 LuaDocTagNamespace::cast(syntax).map(LuaAst::LuaDocTagNamespace)
370 }
371 LuaSyntaxKind::DocTagUsing => LuaDocTagUsing::cast(syntax).map(LuaAst::LuaDocTagUsing),
372 LuaSyntaxKind::DocTagMeta => LuaDocTagMeta::cast(syntax).map(LuaAst::LuaDocTagMeta),
373 LuaSyntaxKind::DocTagNodiscard => {
374 LuaDocTagNodiscard::cast(syntax).map(LuaAst::LuaDocTagNodiscard)
375 }
376 LuaSyntaxKind::DocTagReadonly => {
377 LuaDocTagReadonly::cast(syntax).map(LuaAst::LuaDocTagReadonly)
378 }
379 LuaSyntaxKind::DocTagOperator => {
380 LuaDocTagOperator::cast(syntax).map(LuaAst::LuaDocTagOperator)
381 }
382 LuaSyntaxKind::DocTagGeneric => {
383 LuaDocTagGeneric::cast(syntax).map(LuaAst::LuaDocTagGeneric)
384 }
385 LuaSyntaxKind::DocTagAsync => LuaDocTagAsync::cast(syntax).map(LuaAst::LuaDocTagAsync),
386 LuaSyntaxKind::DocTagAs => LuaDocTagAs::cast(syntax).map(LuaAst::LuaDocTagAs),
387 LuaSyntaxKind::TypeName => LuaDocNameType::cast(syntax).map(LuaAst::LuaDocNameType),
388 LuaSyntaxKind::TypeArray => LuaDocArrayType::cast(syntax).map(LuaAst::LuaDocArrayType),
389 LuaSyntaxKind::TypeFun => LuaDocFuncType::cast(syntax).map(LuaAst::LuaDocFuncType),
390 LuaSyntaxKind::TypeObject => {
391 LuaDocObjectType::cast(syntax).map(LuaAst::LuaDocObjectType)
392 }
393 LuaSyntaxKind::TypeBinary => {
394 LuaDocBinaryType::cast(syntax).map(LuaAst::LuaDocBinaryType)
395 }
396 LuaSyntaxKind::TypeUnary => LuaDocUnaryType::cast(syntax).map(LuaAst::LuaDocUnaryType),
397 LuaSyntaxKind::TypeConditional => {
398 LuaDocConditionalType::cast(syntax).map(LuaAst::LuaDocConditionalType)
399 }
400 LuaSyntaxKind::TypeTuple => LuaDocTupleType::cast(syntax).map(LuaAst::LuaDocTupleType),
401 LuaSyntaxKind::TypeLiteral => {
402 LuaDocLiteralType::cast(syntax).map(LuaAst::LuaDocLiteralType)
403 }
404 LuaSyntaxKind::TypeVariadic => {
405 LuaDocVariadicType::cast(syntax).map(LuaAst::LuaDocVariadicType)
406 }
407 LuaSyntaxKind::TypeNullable => {
408 LuaDocNullableType::cast(syntax).map(LuaAst::LuaDocNullableType)
409 }
410 LuaSyntaxKind::TypeGeneric => {
411 LuaDocGenericType::cast(syntax).map(LuaAst::LuaDocGenericType)
412 }
413 LuaSyntaxKind::TypeStringTemplate => {
414 LuaDocStrTplType::cast(syntax).map(LuaAst::LuaDocStrTplType)
415 }
416 LuaSyntaxKind::TypeMultiLineUnion => {
417 LuaDocMultiLineUnionType::cast(syntax).map(LuaAst::LuaDocMultiLineUnionType)
418 }
419 _ => None,
420 }
421 }
422}