1use super::AstChildren;
8use super::AstNode;
9use super::Backing;
10use super::Definition;
11use super::Expr;
12use super::FieldType;
13use super::InterfaceMember;
14use super::ParamType;
15use super::StructMember;
16use super::support;
17use crate::syntax_kind::{SyntaxKind, SyntaxNode, SyntaxToken};
18#[derive(Debug, Clone, PartialEq, Eq, Hash)]
20pub struct SourceFile {
21 syntax: SyntaxNode,
22}
23impl AstNode for SourceFile {
24 fn cast(syntax: SyntaxNode) -> Option<Self> {
25 (syntax.kind() == SyntaxKind::SourceFile).then_some(Self { syntax })
26 }
27 fn syntax(&self) -> &SyntaxNode {
28 &self.syntax
29 }
30}
31impl SourceFile {
32 pub fn package_decl(&self) -> Option<PackageDecl> {
33 support::child(&self.syntax)
34 }
35 pub fn imports(&self) -> AstChildren<Import> {
36 support::children(&self.syntax)
37 }
38 pub fn definitions(&self) -> AstChildren<Definition> {
39 support::children(&self.syntax)
40 }
41 pub fn interfaces(&self) -> AstChildren<InterfaceDef> {
42 support::children(&self.syntax)
43 }
44 pub fn services(&self) -> AstChildren<ServiceDef> {
45 support::children(&self.syntax)
46 }
47 pub fn systems(&self) -> AstChildren<SystemDef> {
48 support::children(&self.syntax)
49 }
50 pub fn components(&self) -> AstChildren<ComponentDef> {
51 support::children(&self.syntax)
52 }
53 pub fn distributions(&self) -> AstChildren<DistributionDef> {
54 support::children(&self.syntax)
55 }
56 pub fn deployments(&self) -> AstChildren<DeploymentDef> {
57 support::children(&self.syntax)
58 }
59}
60#[derive(Debug, Clone, PartialEq, Eq, Hash)]
62pub struct PackageDecl {
63 syntax: SyntaxNode,
64}
65impl AstNode for PackageDecl {
66 fn cast(syntax: SyntaxNode) -> Option<Self> {
67 (syntax.kind() == SyntaxKind::PackageDecl).then_some(Self { syntax })
68 }
69 fn syntax(&self) -> &SyntaxNode {
70 &self.syntax
71 }
72}
73impl PackageDecl {
74 pub fn qualified_name(&self) -> Option<QualifiedName> {
75 support::child(&self.syntax)
76 }
77 pub fn package_token(&self) -> Option<SyntaxToken> {
78 support::token(&self.syntax, SyntaxKind::PackageKw)
79 }
80}
81#[derive(Debug, Clone, PartialEq, Eq, Hash)]
83pub struct Import {
84 syntax: SyntaxNode,
85}
86impl AstNode for Import {
87 fn cast(syntax: SyntaxNode) -> Option<Self> {
88 (syntax.kind() == SyntaxKind::Import).then_some(Self { syntax })
89 }
90 fn syntax(&self) -> &SyntaxNode {
91 &self.syntax
92 }
93}
94impl Import {
95 pub fn qualified_name(&self) -> Option<QualifiedName> {
96 support::child(&self.syntax)
97 }
98 pub fn alias(&self) -> Option<Name> {
99 support::child(&self.syntax)
100 }
101 pub fn import_token(&self) -> Option<SyntaxToken> {
102 support::token(&self.syntax, SyntaxKind::ImportKw)
103 }
104 pub fn as_token(&self) -> Option<SyntaxToken> {
105 support::token(&self.syntax, SyntaxKind::AsKw)
106 }
107}
108#[derive(Debug, Clone, PartialEq, Eq, Hash)]
110pub struct InterfaceDef {
111 syntax: SyntaxNode,
112}
113impl AstNode for InterfaceDef {
114 fn cast(syntax: SyntaxNode) -> Option<Self> {
115 (syntax.kind() == SyntaxKind::InterfaceDef).then_some(Self { syntax })
116 }
117 fn syntax(&self) -> &SyntaxNode {
118 &self.syntax
119 }
120}
121impl InterfaceDef {
122 pub fn name(&self) -> Option<Name> {
123 support::child(&self.syntax)
124 }
125 pub fn members(&self) -> AstChildren<InterfaceMember> {
126 support::children(&self.syntax)
127 }
128 pub fn internal_token(&self) -> Option<SyntaxToken> {
129 support::token(&self.syntax, SyntaxKind::InternalKw)
130 }
131 pub fn error_token(&self) -> Option<SyntaxToken> {
132 support::token(&self.syntax, SyntaxKind::ErrorKw)
133 }
134 pub fn interface_token(&self) -> Option<SyntaxToken> {
135 support::token(&self.syntax, SyntaxKind::InterfaceKw)
136 }
137 pub fn l_brace_token(&self) -> Option<SyntaxToken> {
138 support::token(&self.syntax, SyntaxKind::LBrace)
139 }
140 pub fn comma_token(&self) -> Option<SyntaxToken> {
141 support::token(&self.syntax, SyntaxKind::Comma)
142 }
143 pub fn r_brace_token(&self) -> Option<SyntaxToken> {
144 support::token(&self.syntax, SyntaxKind::RBrace)
145 }
146}
147#[derive(Debug, Clone, PartialEq, Eq, Hash)]
149pub struct ServiceDef {
150 syntax: SyntaxNode,
151}
152impl AstNode for ServiceDef {
153 fn cast(syntax: SyntaxNode) -> Option<Self> {
154 (syntax.kind() == SyntaxKind::ServiceDef).then_some(Self { syntax })
155 }
156 fn syntax(&self) -> &SyntaxNode {
157 &self.syntax
158 }
159}
160impl ServiceDef {
161 pub fn name(&self) -> Option<DottedName> {
162 support::child(&self.syntax)
163 }
164 pub fn shapes(&self) -> AstChildren<PathType> {
165 support::children(&self.syntax)
166 }
167 pub fn inline_members(&self) -> AstChildren<InterfaceMember> {
168 support::children(&self.syntax)
169 }
170 pub fn service_token(&self) -> Option<SyntaxToken> {
171 support::token(&self.syntax, SyntaxKind::ServiceKw)
172 }
173 pub fn colon_token(&self) -> Option<SyntaxToken> {
174 support::token(&self.syntax, SyntaxKind::Colon)
175 }
176 pub fn comma_token(&self) -> Option<SyntaxToken> {
177 support::token(&self.syntax, SyntaxKind::Comma)
178 }
179 pub fn l_brace_token(&self) -> Option<SyntaxToken> {
180 support::token(&self.syntax, SyntaxKind::LBrace)
181 }
182 pub fn r_brace_token(&self) -> Option<SyntaxToken> {
183 support::token(&self.syntax, SyntaxKind::RBrace)
184 }
185}
186#[derive(Debug, Clone, PartialEq, Eq, Hash)]
188pub struct SystemDef {
189 syntax: SyntaxNode,
190}
191impl AstNode for SystemDef {
192 fn cast(syntax: SyntaxNode) -> Option<Self> {
193 (syntax.kind() == SyntaxKind::SystemDef).then_some(Self { syntax })
194 }
195 fn syntax(&self) -> &SyntaxNode {
196 &self.syntax
197 }
198}
199impl SystemDef {
200 pub fn name(&self) -> Option<Name> {
201 support::child(&self.syntax)
202 }
203 pub fn attr_block(&self) -> Option<AttrBlock> {
204 support::child(&self.syntax)
205 }
206 pub fn lines(&self) -> AstChildren<MemberLine> {
207 support::children(&self.syntax)
208 }
209 pub fn system_token(&self) -> Option<SyntaxToken> {
210 support::token(&self.syntax, SyntaxKind::SystemKw)
211 }
212 pub fn l_brace_token(&self) -> Option<SyntaxToken> {
213 support::token(&self.syntax, SyntaxKind::LBrace)
214 }
215 pub fn comma_token(&self) -> Option<SyntaxToken> {
216 support::token(&self.syntax, SyntaxKind::Comma)
217 }
218 pub fn r_brace_token(&self) -> Option<SyntaxToken> {
219 support::token(&self.syntax, SyntaxKind::RBrace)
220 }
221}
222#[derive(Debug, Clone, PartialEq, Eq, Hash)]
224pub struct ComponentDef {
225 syntax: SyntaxNode,
226}
227impl AstNode for ComponentDef {
228 fn cast(syntax: SyntaxNode) -> Option<Self> {
229 (syntax.kind() == SyntaxKind::ComponentDef).then_some(Self { syntax })
230 }
231 fn syntax(&self) -> &SyntaxNode {
232 &self.syntax
233 }
234}
235impl ComponentDef {
236 pub fn name(&self) -> Option<Name> {
237 support::child(&self.syntax)
238 }
239 pub fn attr_block(&self) -> Option<AttrBlock> {
240 support::child(&self.syntax)
241 }
242 pub fn lines(&self) -> AstChildren<ComponentLine> {
243 support::children(&self.syntax)
244 }
245 pub fn component_token(&self) -> Option<SyntaxToken> {
246 support::token(&self.syntax, SyntaxKind::ComponentKw)
247 }
248 pub fn l_brace_token(&self) -> Option<SyntaxToken> {
249 support::token(&self.syntax, SyntaxKind::LBrace)
250 }
251 pub fn comma_token(&self) -> Option<SyntaxToken> {
252 support::token(&self.syntax, SyntaxKind::Comma)
253 }
254 pub fn r_brace_token(&self) -> Option<SyntaxToken> {
255 support::token(&self.syntax, SyntaxKind::RBrace)
256 }
257}
258#[derive(Debug, Clone, PartialEq, Eq, Hash)]
260pub struct DistributionDef {
261 syntax: SyntaxNode,
262}
263impl AstNode for DistributionDef {
264 fn cast(syntax: SyntaxNode) -> Option<Self> {
265 (syntax.kind() == SyntaxKind::DistributionDef).then_some(Self { syntax })
266 }
267 fn syntax(&self) -> &SyntaxNode {
268 &self.syntax
269 }
270}
271impl DistributionDef {
272 pub fn name(&self) -> Option<Name> {
273 support::child(&self.syntax)
274 }
275 pub fn attr_block(&self) -> Option<AttrBlock> {
276 support::child(&self.syntax)
277 }
278 pub fn lines(&self) -> AstChildren<MemberLine> {
279 support::children(&self.syntax)
280 }
281 pub fn distribution_token(&self) -> Option<SyntaxToken> {
282 support::token(&self.syntax, SyntaxKind::DistributionKw)
283 }
284 pub fn l_brace_token(&self) -> Option<SyntaxToken> {
285 support::token(&self.syntax, SyntaxKind::LBrace)
286 }
287 pub fn comma_token(&self) -> Option<SyntaxToken> {
288 support::token(&self.syntax, SyntaxKind::Comma)
289 }
290 pub fn r_brace_token(&self) -> Option<SyntaxToken> {
291 support::token(&self.syntax, SyntaxKind::RBrace)
292 }
293}
294#[derive(Debug, Clone, PartialEq, Eq, Hash)]
296pub struct DeploymentDef {
297 syntax: SyntaxNode,
298}
299impl AstNode for DeploymentDef {
300 fn cast(syntax: SyntaxNode) -> Option<Self> {
301 (syntax.kind() == SyntaxKind::DeploymentDef).then_some(Self { syntax })
302 }
303 fn syntax(&self) -> &SyntaxNode {
304 &self.syntax
305 }
306}
307impl DeploymentDef {
308 pub fn name(&self) -> Option<Name> {
309 support::child(&self.syntax)
310 }
311 pub fn system(&self) -> Option<Reference> {
312 support::child(&self.syntax)
313 }
314 pub fn attr_block(&self) -> Option<AttrBlock> {
315 support::child(&self.syntax)
316 }
317 pub fn machines(&self) -> AstChildren<MachineDef> {
318 support::children(&self.syntax)
319 }
320 pub fn deployment_token(&self) -> Option<SyntaxToken> {
321 support::token(&self.syntax, SyntaxKind::DeploymentKw)
322 }
323 pub fn for_token(&self) -> Option<SyntaxToken> {
324 support::token(&self.syntax, SyntaxKind::ForKw)
325 }
326 pub fn l_brace_token(&self) -> Option<SyntaxToken> {
327 support::token(&self.syntax, SyntaxKind::LBrace)
328 }
329 pub fn comma_token(&self) -> Option<SyntaxToken> {
330 support::token(&self.syntax, SyntaxKind::Comma)
331 }
332 pub fn r_brace_token(&self) -> Option<SyntaxToken> {
333 support::token(&self.syntax, SyntaxKind::RBrace)
334 }
335}
336#[derive(Debug, Clone, PartialEq, Eq, Hash)]
338pub struct QualifiedName {
339 syntax: SyntaxNode,
340}
341impl AstNode for QualifiedName {
342 fn cast(syntax: SyntaxNode) -> Option<Self> {
343 (syntax.kind() == SyntaxKind::QualifiedName).then_some(Self { syntax })
344 }
345 fn syntax(&self) -> &SyntaxNode {
346 &self.syntax
347 }
348}
349impl QualifiedName {
350 pub fn ident_token(&self) -> Option<SyntaxToken> {
351 support::token(&self.syntax, SyntaxKind::Ident)
352 }
353 pub fn boolean_token(&self) -> Option<SyntaxToken> {
354 support::token(&self.syntax, SyntaxKind::BooleanKw)
355 }
356 pub fn integer_token(&self) -> Option<SyntaxToken> {
357 support::token(&self.syntax, SyntaxKind::IntegerKw)
358 }
359 pub fn float_token(&self) -> Option<SyntaxToken> {
360 support::token(&self.syntax, SyntaxKind::FloatKw)
361 }
362 pub fn string_token(&self) -> Option<SyntaxToken> {
363 support::token(&self.syntax, SyntaxKind::StringKw)
364 }
365 pub fn bytes_token(&self) -> Option<SyntaxToken> {
366 support::token(&self.syntax, SyntaxKind::BytesKw)
367 }
368 pub fn dot_token(&self) -> Option<SyntaxToken> {
369 support::token(&self.syntax, SyntaxKind::Dot)
370 }
371}
372#[derive(Debug, Clone, PartialEq, Eq, Hash)]
374pub struct Name {
375 syntax: SyntaxNode,
376}
377impl AstNode for Name {
378 fn cast(syntax: SyntaxNode) -> Option<Self> {
379 (syntax.kind() == SyntaxKind::Name).then_some(Self { syntax })
380 }
381 fn syntax(&self) -> &SyntaxNode {
382 &self.syntax
383 }
384}
385impl Name {
386 pub fn ident_token(&self) -> Option<SyntaxToken> {
387 support::token(&self.syntax, SyntaxKind::Ident)
388 }
389}
390#[derive(Debug, Clone, PartialEq, Eq, Hash)]
392pub struct TypeDef {
393 syntax: SyntaxNode,
394}
395impl AstNode for TypeDef {
396 fn cast(syntax: SyntaxNode) -> Option<Self> {
397 (syntax.kind() == SyntaxKind::TypeDef).then_some(Self { syntax })
398 }
399 fn syntax(&self) -> &SyntaxNode {
400 &self.syntax
401 }
402}
403impl TypeDef {
404 pub fn name(&self) -> Option<Name> {
405 support::child(&self.syntax)
406 }
407 pub fn backing(&self) -> Option<Backing> {
408 support::child(&self.syntax)
409 }
410 pub fn constraint(&self) -> Option<Constraint> {
411 support::child(&self.syntax)
412 }
413 pub fn init_value(&self) -> Option<InitValue> {
414 support::child(&self.syntax)
415 }
416 pub fn internal_token(&self) -> Option<SyntaxToken> {
417 support::token(&self.syntax, SyntaxKind::InternalKw)
418 }
419 pub fn error_token(&self) -> Option<SyntaxToken> {
420 support::token(&self.syntax, SyntaxKind::ErrorKw)
421 }
422 pub fn type_token(&self) -> Option<SyntaxToken> {
423 support::token(&self.syntax, SyntaxKind::TypeKw)
424 }
425 pub fn colon_token(&self) -> Option<SyntaxToken> {
426 support::token(&self.syntax, SyntaxKind::Colon)
427 }
428}
429#[derive(Debug, Clone, PartialEq, Eq, Hash)]
431pub struct ConstDef {
432 syntax: SyntaxNode,
433}
434impl AstNode for ConstDef {
435 fn cast(syntax: SyntaxNode) -> Option<Self> {
436 (syntax.kind() == SyntaxKind::ConstDef).then_some(Self { syntax })
437 }
438 fn syntax(&self) -> &SyntaxNode {
439 &self.syntax
440 }
441}
442impl ConstDef {
443 pub fn name(&self) -> Option<Name> {
444 support::child(&self.syntax)
445 }
446 pub fn type_ref(&self) -> Option<PathType> {
447 support::child(&self.syntax)
448 }
449 pub fn value(&self) -> Option<Literal> {
450 support::child(&self.syntax)
451 }
452 pub fn internal_token(&self) -> Option<SyntaxToken> {
453 support::token(&self.syntax, SyntaxKind::InternalKw)
454 }
455 pub fn error_token(&self) -> Option<SyntaxToken> {
456 support::token(&self.syntax, SyntaxKind::ErrorKw)
457 }
458 pub fn const_token(&self) -> Option<SyntaxToken> {
459 support::token(&self.syntax, SyntaxKind::ConstKw)
460 }
461 pub fn colon_token(&self) -> Option<SyntaxToken> {
462 support::token(&self.syntax, SyntaxKind::Colon)
463 }
464 pub fn eq_token(&self) -> Option<SyntaxToken> {
465 support::token(&self.syntax, SyntaxKind::Eq)
466 }
467}
468#[derive(Debug, Clone, PartialEq, Eq, Hash)]
470pub struct StructDef {
471 syntax: SyntaxNode,
472}
473impl AstNode for StructDef {
474 fn cast(syntax: SyntaxNode) -> Option<Self> {
475 (syntax.kind() == SyntaxKind::StructDef).then_some(Self { syntax })
476 }
477 fn syntax(&self) -> &SyntaxNode {
478 &self.syntax
479 }
480}
481impl StructDef {
482 pub fn name(&self) -> Option<Name> {
483 support::child(&self.syntax)
484 }
485 pub fn members(&self) -> AstChildren<StructMember> {
486 support::children(&self.syntax)
487 }
488 pub fn internal_token(&self) -> Option<SyntaxToken> {
489 support::token(&self.syntax, SyntaxKind::InternalKw)
490 }
491 pub fn error_token(&self) -> Option<SyntaxToken> {
492 support::token(&self.syntax, SyntaxKind::ErrorKw)
493 }
494 pub fn struct_token(&self) -> Option<SyntaxToken> {
495 support::token(&self.syntax, SyntaxKind::StructKw)
496 }
497 pub fn l_brace_token(&self) -> Option<SyntaxToken> {
498 support::token(&self.syntax, SyntaxKind::LBrace)
499 }
500 pub fn comma_token(&self) -> Option<SyntaxToken> {
501 support::token(&self.syntax, SyntaxKind::Comma)
502 }
503 pub fn r_brace_token(&self) -> Option<SyntaxToken> {
504 support::token(&self.syntax, SyntaxKind::RBrace)
505 }
506}
507#[derive(Debug, Clone, PartialEq, Eq, Hash)]
509pub struct EnumDef {
510 syntax: SyntaxNode,
511}
512impl AstNode for EnumDef {
513 fn cast(syntax: SyntaxNode) -> Option<Self> {
514 (syntax.kind() == SyntaxKind::EnumDef).then_some(Self { syntax })
515 }
516 fn syntax(&self) -> &SyntaxNode {
517 &self.syntax
518 }
519}
520impl EnumDef {
521 pub fn name(&self) -> Option<Name> {
522 support::child(&self.syntax)
523 }
524 pub fn values(&self) -> AstChildren<EnumValue> {
525 support::children(&self.syntax)
526 }
527 pub fn reserved(&self) -> AstChildren<ReservedEntry> {
528 support::children(&self.syntax)
529 }
530 pub fn internal_token(&self) -> Option<SyntaxToken> {
531 support::token(&self.syntax, SyntaxKind::InternalKw)
532 }
533 pub fn error_token(&self) -> Option<SyntaxToken> {
534 support::token(&self.syntax, SyntaxKind::ErrorKw)
535 }
536 pub fn open_token(&self) -> Option<SyntaxToken> {
537 support::token(&self.syntax, SyntaxKind::OpenKw)
538 }
539 pub fn enum_token(&self) -> Option<SyntaxToken> {
540 support::token(&self.syntax, SyntaxKind::EnumKw)
541 }
542 pub fn l_brace_token(&self) -> Option<SyntaxToken> {
543 support::token(&self.syntax, SyntaxKind::LBrace)
544 }
545 pub fn comma_token(&self) -> Option<SyntaxToken> {
546 support::token(&self.syntax, SyntaxKind::Comma)
547 }
548 pub fn r_brace_token(&self) -> Option<SyntaxToken> {
549 support::token(&self.syntax, SyntaxKind::RBrace)
550 }
551}
552#[derive(Debug, Clone, PartialEq, Eq, Hash)]
554pub struct EnumSetDef {
555 syntax: SyntaxNode,
556}
557impl AstNode for EnumSetDef {
558 fn cast(syntax: SyntaxNode) -> Option<Self> {
559 (syntax.kind() == SyntaxKind::EnumSetDef).then_some(Self { syntax })
560 }
561 fn syntax(&self) -> &SyntaxNode {
562 &self.syntax
563 }
564}
565impl EnumSetDef {
566 pub fn name(&self) -> Option<Name> {
567 support::child(&self.syntax)
568 }
569 pub fn bits(&self) -> AstChildren<EnumSetBit> {
570 support::children(&self.syntax)
571 }
572 pub fn backing_ref(&self) -> Option<PathType> {
573 support::child(&self.syntax)
574 }
575 pub fn internal_token(&self) -> Option<SyntaxToken> {
576 support::token(&self.syntax, SyntaxKind::InternalKw)
577 }
578 pub fn error_token(&self) -> Option<SyntaxToken> {
579 support::token(&self.syntax, SyntaxKind::ErrorKw)
580 }
581 pub fn open_token(&self) -> Option<SyntaxToken> {
582 support::token(&self.syntax, SyntaxKind::OpenKw)
583 }
584 pub fn enumset_token(&self) -> Option<SyntaxToken> {
585 support::token(&self.syntax, SyntaxKind::EnumsetKw)
586 }
587 pub fn l_brace_token(&self) -> Option<SyntaxToken> {
588 support::token(&self.syntax, SyntaxKind::LBrace)
589 }
590 pub fn comma_token(&self) -> Option<SyntaxToken> {
591 support::token(&self.syntax, SyntaxKind::Comma)
592 }
593 pub fn r_brace_token(&self) -> Option<SyntaxToken> {
594 support::token(&self.syntax, SyntaxKind::RBrace)
595 }
596 pub fn colon_token(&self) -> Option<SyntaxToken> {
597 support::token(&self.syntax, SyntaxKind::Colon)
598 }
599}
600#[derive(Debug, Clone, PartialEq, Eq, Hash)]
602pub struct UnionDef {
603 syntax: SyntaxNode,
604}
605impl AstNode for UnionDef {
606 fn cast(syntax: SyntaxNode) -> Option<Self> {
607 (syntax.kind() == SyntaxKind::UnionDef).then_some(Self { syntax })
608 }
609 fn syntax(&self) -> &SyntaxNode {
610 &self.syntax
611 }
612}
613impl UnionDef {
614 pub fn name(&self) -> Option<Name> {
615 support::child(&self.syntax)
616 }
617 pub fn arms(&self) -> AstChildren<UnionArm> {
618 support::children(&self.syntax)
619 }
620 pub fn reserved(&self) -> AstChildren<ReservedEntry> {
621 support::children(&self.syntax)
622 }
623 pub fn internal_token(&self) -> Option<SyntaxToken> {
624 support::token(&self.syntax, SyntaxKind::InternalKw)
625 }
626 pub fn error_token(&self) -> Option<SyntaxToken> {
627 support::token(&self.syntax, SyntaxKind::ErrorKw)
628 }
629 pub fn union_token(&self) -> Option<SyntaxToken> {
630 support::token(&self.syntax, SyntaxKind::UnionKw)
631 }
632 pub fn l_brace_token(&self) -> Option<SyntaxToken> {
633 support::token(&self.syntax, SyntaxKind::LBrace)
634 }
635 pub fn comma_token(&self) -> Option<SyntaxToken> {
636 support::token(&self.syntax, SyntaxKind::Comma)
637 }
638 pub fn r_brace_token(&self) -> Option<SyntaxToken> {
639 support::token(&self.syntax, SyntaxKind::RBrace)
640 }
641}
642#[derive(Debug, Clone, PartialEq, Eq, Hash)]
644pub struct Constraint {
645 syntax: SyntaxNode,
646}
647impl AstNode for Constraint {
648 fn cast(syntax: SyntaxNode) -> Option<Self> {
649 (syntax.kind() == SyntaxKind::Constraint).then_some(Self { syntax })
650 }
651 fn syntax(&self) -> &SyntaxNode {
652 &self.syntax
653 }
654}
655impl Constraint {
656 pub fn len(&self) -> Option<Bound> {
657 support::child(&self.syntax)
658 }
659 pub fn l_bracket_token(&self) -> Option<SyntaxToken> {
660 support::token(&self.syntax, SyntaxKind::LBracket)
661 }
662 pub fn dotdot_token(&self) -> Option<SyntaxToken> {
663 support::token(&self.syntax, SyntaxKind::DotDot)
664 }
665 pub fn step_token(&self) -> Option<SyntaxToken> {
666 support::token(&self.syntax, SyntaxKind::StepKw)
667 }
668 pub fn match_token(&self) -> Option<SyntaxToken> {
669 support::token(&self.syntax, SyntaxKind::MatchKw)
670 }
671 pub fn r_bracket_token(&self) -> Option<SyntaxToken> {
672 support::token(&self.syntax, SyntaxKind::RBracket)
673 }
674}
675#[derive(Debug, Clone, PartialEq, Eq, Hash)]
677pub struct InitValue {
678 syntax: SyntaxNode,
679}
680impl AstNode for InitValue {
681 fn cast(syntax: SyntaxNode) -> Option<Self> {
682 (syntax.kind() == SyntaxKind::InitValue).then_some(Self { syntax })
683 }
684 fn syntax(&self) -> &SyntaxNode {
685 &self.syntax
686 }
687}
688impl InitValue {
689 pub fn literal(&self) -> Option<Literal> {
690 support::child(&self.syntax)
691 }
692 pub fn eq_token(&self) -> Option<SyntaxToken> {
693 support::token(&self.syntax, SyntaxKind::Eq)
694 }
695}
696#[derive(Debug, Clone, PartialEq, Eq, Hash)]
698pub struct PrimitiveType {
699 syntax: SyntaxNode,
700}
701impl AstNode for PrimitiveType {
702 fn cast(syntax: SyntaxNode) -> Option<Self> {
703 (syntax.kind() == SyntaxKind::PrimitiveType).then_some(Self { syntax })
704 }
705 fn syntax(&self) -> &SyntaxNode {
706 &self.syntax
707 }
708}
709impl PrimitiveType {
710 pub fn constraint(&self) -> Option<Constraint> {
711 support::child(&self.syntax)
712 }
713 pub fn boolean_token(&self) -> Option<SyntaxToken> {
714 support::token(&self.syntax, SyntaxKind::BooleanKw)
715 }
716 pub fn integer_token(&self) -> Option<SyntaxToken> {
717 support::token(&self.syntax, SyntaxKind::IntegerKw)
718 }
719 pub fn float_token(&self) -> Option<SyntaxToken> {
720 support::token(&self.syntax, SyntaxKind::FloatKw)
721 }
722 pub fn string_token(&self) -> Option<SyntaxToken> {
723 support::token(&self.syntax, SyntaxKind::StringKw)
724 }
725 pub fn bytes_token(&self) -> Option<SyntaxToken> {
726 support::token(&self.syntax, SyntaxKind::BytesKw)
727 }
728}
729#[derive(Debug, Clone, PartialEq, Eq, Hash)]
731pub struct UnitExpr {
732 syntax: SyntaxNode,
733}
734impl AstNode for UnitExpr {
735 fn cast(syntax: SyntaxNode) -> Option<Self> {
736 (syntax.kind() == SyntaxKind::UnitExpr).then_some(Self { syntax })
737 }
738 fn syntax(&self) -> &SyntaxNode {
739 &self.syntax
740 }
741}
742impl UnitExpr {
743 pub fn ident_token(&self) -> Option<SyntaxToken> {
744 support::token(&self.syntax, SyntaxKind::Ident)
745 }
746 pub fn slash_token(&self) -> Option<SyntaxToken> {
747 support::token(&self.syntax, SyntaxKind::Slash)
748 }
749 pub fn dot_token(&self) -> Option<SyntaxToken> {
750 support::token(&self.syntax, SyntaxKind::Dot)
751 }
752 pub fn percent_token(&self) -> Option<SyntaxToken> {
753 support::token(&self.syntax, SyntaxKind::Percent)
754 }
755}
756#[derive(Debug, Clone, PartialEq, Eq, Hash)]
758pub struct Literal {
759 syntax: SyntaxNode,
760}
761impl AstNode for Literal {
762 fn cast(syntax: SyntaxNode) -> Option<Self> {
763 (syntax.kind() == SyntaxKind::Literal).then_some(Self { syntax })
764 }
765 fn syntax(&self) -> &SyntaxNode {
766 &self.syntax
767 }
768}
769impl Literal {
770 pub fn minus_token(&self) -> Option<SyntaxToken> {
771 support::token(&self.syntax, SyntaxKind::Minus)
772 }
773 pub fn int_number_token(&self) -> Option<SyntaxToken> {
774 support::token(&self.syntax, SyntaxKind::IntNumber)
775 }
776 pub fn float_number_token(&self) -> Option<SyntaxToken> {
777 support::token(&self.syntax, SyntaxKind::FloatNumber)
778 }
779 pub fn string_lit_token(&self) -> Option<SyntaxToken> {
780 support::token(&self.syntax, SyntaxKind::String)
781 }
782 pub fn true_token(&self) -> Option<SyntaxToken> {
783 support::token(&self.syntax, SyntaxKind::TrueKw)
784 }
785 pub fn false_token(&self) -> Option<SyntaxToken> {
786 support::token(&self.syntax, SyntaxKind::FalseKw)
787 }
788 pub fn regex_token(&self) -> Option<SyntaxToken> {
789 support::token(&self.syntax, SyntaxKind::Regex)
790 }
791 pub fn ident_token(&self) -> Option<SyntaxToken> {
792 support::token(&self.syntax, SyntaxKind::Ident)
793 }
794}
795#[derive(Debug, Clone, PartialEq, Eq, Hash)]
797pub struct Bound {
798 syntax: SyntaxNode,
799}
800impl AstNode for Bound {
801 fn cast(syntax: SyntaxNode) -> Option<Self> {
802 (syntax.kind() == SyntaxKind::Bound).then_some(Self { syntax })
803 }
804 fn syntax(&self) -> &SyntaxNode {
805 &self.syntax
806 }
807}
808impl Bound {
809 pub fn min(&self) -> Option<Literal> {
810 support::nth_child(&self.syntax, 0usize)
811 }
812 pub fn max(&self) -> Option<Literal> {
813 support::nth_child(&self.syntax, 1usize)
814 }
815 pub fn dotdot_token(&self) -> Option<SyntaxToken> {
816 support::token(&self.syntax, SyntaxKind::DotDot)
817 }
818}
819#[derive(Debug, Clone, PartialEq, Eq, Hash)]
821pub struct PathType {
822 syntax: SyntaxNode,
823}
824impl AstNode for PathType {
825 fn cast(syntax: SyntaxNode) -> Option<Self> {
826 (syntax.kind() == SyntaxKind::PathType).then_some(Self { syntax })
827 }
828 fn syntax(&self) -> &SyntaxNode {
829 &self.syntax
830 }
831}
832impl PathType {
833 pub fn qualified_name(&self) -> Option<QualifiedName> {
834 support::child(&self.syntax)
835 }
836}
837#[derive(Debug, Clone, PartialEq, Eq, Hash)]
839pub struct FieldDef {
840 syntax: SyntaxNode,
841}
842impl AstNode for FieldDef {
843 fn cast(syntax: SyntaxNode) -> Option<Self> {
844 (syntax.kind() == SyntaxKind::FieldDef).then_some(Self { syntax })
845 }
846 fn syntax(&self) -> &SyntaxNode {
847 &self.syntax
848 }
849}
850impl FieldDef {
851 pub fn name(&self) -> Option<Name> {
852 support::child(&self.syntax)
853 }
854 pub fn field_type(&self) -> Option<FieldType> {
855 support::child(&self.syntax)
856 }
857 pub fn init_value(&self) -> Option<InitValue> {
858 support::child(&self.syntax)
859 }
860 pub fn colon_token(&self) -> Option<SyntaxToken> {
861 support::token(&self.syntax, SyntaxKind::Colon)
862 }
863}
864#[derive(Debug, Clone, PartialEq, Eq, Hash)]
866pub struct ReservedEntry {
867 syntax: SyntaxNode,
868}
869impl AstNode for ReservedEntry {
870 fn cast(syntax: SyntaxNode) -> Option<Self> {
871 (syntax.kind() == SyntaxKind::ReservedEntry).then_some(Self { syntax })
872 }
873 fn syntax(&self) -> &SyntaxNode {
874 &self.syntax
875 }
876}
877impl ReservedEntry {
878 pub fn name(&self) -> Option<Name> {
879 support::child(&self.syntax)
880 }
881 pub fn literal(&self) -> Option<Literal> {
882 support::child(&self.syntax)
883 }
884 pub fn reserved_token(&self) -> Option<SyntaxToken> {
885 support::token(&self.syntax, SyntaxKind::ReservedKw)
886 }
887}
888#[derive(Debug, Clone, PartialEq, Eq, Hash)]
890pub struct TupleType {
891 syntax: SyntaxNode,
892}
893impl AstNode for TupleType {
894 fn cast(syntax: SyntaxNode) -> Option<Self> {
895 (syntax.kind() == SyntaxKind::TupleType).then_some(Self { syntax })
896 }
897 fn syntax(&self) -> &SyntaxNode {
898 &self.syntax
899 }
900}
901impl TupleType {
902 pub fn fields(&self) -> AstChildren<TupleField> {
903 support::children(&self.syntax)
904 }
905 pub fn l_paren_token(&self) -> Option<SyntaxToken> {
906 support::token(&self.syntax, SyntaxKind::LParen)
907 }
908 pub fn comma_token(&self) -> Option<SyntaxToken> {
909 support::token(&self.syntax, SyntaxKind::Comma)
910 }
911 pub fn r_paren_token(&self) -> Option<SyntaxToken> {
912 support::token(&self.syntax, SyntaxKind::RParen)
913 }
914}
915#[derive(Debug, Clone, PartialEq, Eq, Hash)]
917pub struct ArrayType {
918 syntax: SyntaxNode,
919}
920impl AstNode for ArrayType {
921 fn cast(syntax: SyntaxNode) -> Option<Self> {
922 (syntax.kind() == SyntaxKind::ArrayType).then_some(Self { syntax })
923 }
924 fn syntax(&self) -> &SyntaxNode {
925 &self.syntax
926 }
927}
928impl ArrayType {
929 pub fn element(&self) -> Option<FieldType> {
930 support::child(&self.syntax)
931 }
932 pub fn bound(&self) -> Option<Bound> {
933 support::child(&self.syntax)
934 }
935 pub fn l_bracket_token(&self) -> Option<SyntaxToken> {
936 support::token(&self.syntax, SyntaxKind::LBracket)
937 }
938 pub fn semicolon_token(&self) -> Option<SyntaxToken> {
939 support::token(&self.syntax, SyntaxKind::Semicolon)
940 }
941 pub fn r_bracket_token(&self) -> Option<SyntaxToken> {
942 support::token(&self.syntax, SyntaxKind::RBracket)
943 }
944}
945#[derive(Debug, Clone, PartialEq, Eq, Hash)]
947pub struct MapType {
948 syntax: SyntaxNode,
949}
950impl AstNode for MapType {
951 fn cast(syntax: SyntaxNode) -> Option<Self> {
952 (syntax.kind() == SyntaxKind::MapType).then_some(Self { syntax })
953 }
954 fn syntax(&self) -> &SyntaxNode {
955 &self.syntax
956 }
957}
958impl MapType {
959 pub fn key(&self) -> Option<FieldType> {
960 support::nth_child(&self.syntax, 0usize)
961 }
962 pub fn value(&self) -> Option<FieldType> {
963 support::nth_child(&self.syntax, 1usize)
964 }
965 pub fn bound(&self) -> Option<Bound> {
966 support::child(&self.syntax)
967 }
968 pub fn l_bracket_token(&self) -> Option<SyntaxToken> {
969 support::token(&self.syntax, SyntaxKind::LBracket)
970 }
971 pub fn colon_token(&self) -> Option<SyntaxToken> {
972 support::token(&self.syntax, SyntaxKind::Colon)
973 }
974 pub fn semicolon_token(&self) -> Option<SyntaxToken> {
975 support::token(&self.syntax, SyntaxKind::Semicolon)
976 }
977 pub fn r_bracket_token(&self) -> Option<SyntaxToken> {
978 support::token(&self.syntax, SyntaxKind::RBracket)
979 }
980}
981#[derive(Debug, Clone, PartialEq, Eq, Hash)]
983pub struct OptionalType {
984 syntax: SyntaxNode,
985}
986impl AstNode for OptionalType {
987 fn cast(syntax: SyntaxNode) -> Option<Self> {
988 (syntax.kind() == SyntaxKind::OptionalType).then_some(Self { syntax })
989 }
990 fn syntax(&self) -> &SyntaxNode {
991 &self.syntax
992 }
993}
994impl OptionalType {
995 pub fn field_type(&self) -> Option<FieldType> {
996 support::child(&self.syntax)
997 }
998 pub fn question_token(&self) -> Option<SyntaxToken> {
999 support::token(&self.syntax, SyntaxKind::Question)
1000 }
1001}
1002#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1004pub struct TupleField {
1005 syntax: SyntaxNode,
1006}
1007impl AstNode for TupleField {
1008 fn cast(syntax: SyntaxNode) -> Option<Self> {
1009 (syntax.kind() == SyntaxKind::TupleField).then_some(Self { syntax })
1010 }
1011 fn syntax(&self) -> &SyntaxNode {
1012 &self.syntax
1013 }
1014}
1015impl TupleField {
1016 pub fn name(&self) -> Option<Name> {
1017 support::child(&self.syntax)
1018 }
1019 pub fn field_type(&self) -> Option<FieldType> {
1020 support::child(&self.syntax)
1021 }
1022 pub fn colon_token(&self) -> Option<SyntaxToken> {
1023 support::token(&self.syntax, SyntaxKind::Colon)
1024 }
1025}
1026#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1028pub struct EnumValue {
1029 syntax: SyntaxNode,
1030}
1031impl AstNode for EnumValue {
1032 fn cast(syntax: SyntaxNode) -> Option<Self> {
1033 (syntax.kind() == SyntaxKind::EnumValue).then_some(Self { syntax })
1034 }
1035 fn syntax(&self) -> &SyntaxNode {
1036 &self.syntax
1037 }
1038}
1039impl EnumValue {
1040 pub fn name(&self) -> Option<Name> {
1041 support::child(&self.syntax)
1042 }
1043 pub fn value(&self) -> Option<Literal> {
1044 support::child(&self.syntax)
1045 }
1046 pub fn eq_token(&self) -> Option<SyntaxToken> {
1047 support::token(&self.syntax, SyntaxKind::Eq)
1048 }
1049}
1050#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1052pub struct EnumSetBit {
1053 syntax: SyntaxNode,
1054}
1055impl AstNode for EnumSetBit {
1056 fn cast(syntax: SyntaxNode) -> Option<Self> {
1057 (syntax.kind() == SyntaxKind::EnumSetBit).then_some(Self { syntax })
1058 }
1059 fn syntax(&self) -> &SyntaxNode {
1060 &self.syntax
1061 }
1062}
1063impl EnumSetBit {
1064 pub fn name(&self) -> Option<Name> {
1065 support::child(&self.syntax)
1066 }
1067 pub fn value(&self) -> Option<Literal> {
1068 support::child(&self.syntax)
1069 }
1070 pub fn eq_token(&self) -> Option<SyntaxToken> {
1071 support::token(&self.syntax, SyntaxKind::Eq)
1072 }
1073}
1074#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1076pub struct UnionArm {
1077 syntax: SyntaxNode,
1078}
1079impl AstNode for UnionArm {
1080 fn cast(syntax: SyntaxNode) -> Option<Self> {
1081 (syntax.kind() == SyntaxKind::UnionArm).then_some(Self { syntax })
1082 }
1083 fn syntax(&self) -> &SyntaxNode {
1084 &self.syntax
1085 }
1086}
1087impl UnionArm {
1088 pub fn name(&self) -> Option<Name> {
1089 support::child(&self.syntax)
1090 }
1091 pub fn type_ref(&self) -> Option<PathType> {
1092 support::child(&self.syntax)
1093 }
1094 pub fn colon_token(&self) -> Option<SyntaxToken> {
1095 support::token(&self.syntax, SyntaxKind::Colon)
1096 }
1097}
1098#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1100pub struct SignalDef {
1101 syntax: SyntaxNode,
1102}
1103impl AstNode for SignalDef {
1104 fn cast(syntax: SyntaxNode) -> Option<Self> {
1105 (syntax.kind() == SyntaxKind::SignalDef).then_some(Self { syntax })
1106 }
1107 fn syntax(&self) -> &SyntaxNode {
1108 &self.syntax
1109 }
1110}
1111impl SignalDef {
1112 pub fn name(&self) -> Option<Name> {
1113 support::child(&self.syntax)
1114 }
1115 pub fn payload(&self) -> Option<FieldType> {
1116 support::child(&self.syntax)
1117 }
1118 pub fn init_value(&self) -> Option<InitValue> {
1119 support::child(&self.syntax)
1120 }
1121 pub fn timing(&self) -> Option<Timing> {
1122 support::child(&self.syntax)
1123 }
1124 pub fn signal_token(&self) -> Option<SyntaxToken> {
1125 support::token(&self.syntax, SyntaxKind::SignalKw)
1126 }
1127 pub fn colon_token(&self) -> Option<SyntaxToken> {
1128 support::token(&self.syntax, SyntaxKind::Colon)
1129 }
1130}
1131#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1133pub struct EventDef {
1134 syntax: SyntaxNode,
1135}
1136impl AstNode for EventDef {
1137 fn cast(syntax: SyntaxNode) -> Option<Self> {
1138 (syntax.kind() == SyntaxKind::EventDef).then_some(Self { syntax })
1139 }
1140 fn syntax(&self) -> &SyntaxNode {
1141 &self.syntax
1142 }
1143}
1144impl EventDef {
1145 pub fn name(&self) -> Option<Name> {
1146 support::child(&self.syntax)
1147 }
1148 pub fn payload(&self) -> Option<FieldType> {
1149 support::child(&self.syntax)
1150 }
1151 pub fn timing(&self) -> Option<Timing> {
1152 support::child(&self.syntax)
1153 }
1154 pub fn event_token(&self) -> Option<SyntaxToken> {
1155 support::token(&self.syntax, SyntaxKind::EventKw)
1156 }
1157 pub fn colon_token(&self) -> Option<SyntaxToken> {
1158 support::token(&self.syntax, SyntaxKind::Colon)
1159 }
1160}
1161#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1163pub struct CommandDef {
1164 syntax: SyntaxNode,
1165}
1166impl AstNode for CommandDef {
1167 fn cast(syntax: SyntaxNode) -> Option<Self> {
1168 (syntax.kind() == SyntaxKind::CommandDef).then_some(Self { syntax })
1169 }
1170 fn syntax(&self) -> &SyntaxNode {
1171 &self.syntax
1172 }
1173}
1174impl CommandDef {
1175 pub fn name(&self) -> Option<Name> {
1176 support::child(&self.syntax)
1177 }
1178 pub fn params(&self) -> Option<ParamList> {
1179 support::child(&self.syntax)
1180 }
1181 pub fn return_type(&self) -> Option<ReturnType> {
1182 support::child(&self.syntax)
1183 }
1184 pub fn timing(&self) -> Option<Timing> {
1185 support::child(&self.syntax)
1186 }
1187 pub fn attr_block(&self) -> Option<AttrBlock> {
1188 support::child(&self.syntax)
1189 }
1190 pub fn command_token(&self) -> Option<SyntaxToken> {
1191 support::token(&self.syntax, SyntaxKind::CommandKw)
1192 }
1193 pub fn colon_token(&self) -> Option<SyntaxToken> {
1194 support::token(&self.syntax, SyntaxKind::Colon)
1195 }
1196}
1197#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1199pub struct QueryDef {
1200 syntax: SyntaxNode,
1201}
1202impl AstNode for QueryDef {
1203 fn cast(syntax: SyntaxNode) -> Option<Self> {
1204 (syntax.kind() == SyntaxKind::QueryDef).then_some(Self { syntax })
1205 }
1206 fn syntax(&self) -> &SyntaxNode {
1207 &self.syntax
1208 }
1209}
1210impl QueryDef {
1211 pub fn name(&self) -> Option<Name> {
1212 support::child(&self.syntax)
1213 }
1214 pub fn params(&self) -> Option<ParamList> {
1215 support::child(&self.syntax)
1216 }
1217 pub fn return_type(&self) -> Option<ReturnType> {
1218 support::child(&self.syntax)
1219 }
1220 pub fn timing(&self) -> Option<Timing> {
1221 support::child(&self.syntax)
1222 }
1223 pub fn attr_block(&self) -> Option<AttrBlock> {
1224 support::child(&self.syntax)
1225 }
1226 pub fn query_token(&self) -> Option<SyntaxToken> {
1227 support::token(&self.syntax, SyntaxKind::QueryKw)
1228 }
1229 pub fn colon_token(&self) -> Option<SyntaxToken> {
1230 support::token(&self.syntax, SyntaxKind::Colon)
1231 }
1232}
1233#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1235pub struct FixedDef {
1236 syntax: SyntaxNode,
1237}
1238impl AstNode for FixedDef {
1239 fn cast(syntax: SyntaxNode) -> Option<Self> {
1240 (syntax.kind() == SyntaxKind::FixedDef).then_some(Self { syntax })
1241 }
1242 fn syntax(&self) -> &SyntaxNode {
1243 &self.syntax
1244 }
1245}
1246impl FixedDef {
1247 pub fn name(&self) -> Option<Name> {
1248 support::child(&self.syntax)
1249 }
1250 pub fn payload(&self) -> Option<FieldType> {
1251 support::child(&self.syntax)
1252 }
1253 pub fn timing(&self) -> Option<Timing> {
1254 support::child(&self.syntax)
1255 }
1256 pub fn attr_block(&self) -> Option<AttrBlock> {
1257 support::child(&self.syntax)
1258 }
1259 pub fn fixed_token(&self) -> Option<SyntaxToken> {
1260 support::token(&self.syntax, SyntaxKind::FixedKw)
1261 }
1262 pub fn colon_token(&self) -> Option<SyntaxToken> {
1263 support::token(&self.syntax, SyntaxKind::Colon)
1264 }
1265}
1266#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1268pub struct Timing {
1269 syntax: SyntaxNode,
1270}
1271impl AstNode for Timing {
1272 fn cast(syntax: SyntaxNode) -> Option<Self> {
1273 (syntax.kind() == SyntaxKind::Timing).then_some(Self { syntax })
1274 }
1275 fn syntax(&self) -> &SyntaxNode {
1276 &self.syntax
1277 }
1278}
1279impl Timing {
1280 pub fn range(&self) -> Option<TimingRange> {
1281 support::child(&self.syntax)
1282 }
1283 pub fn at_token(&self) -> Option<SyntaxToken> {
1284 support::token(&self.syntax, SyntaxKind::At)
1285 }
1286 pub fn duration_token(&self) -> Option<SyntaxToken> {
1287 support::token(&self.syntax, SyntaxKind::Duration)
1288 }
1289 pub fn l_bracket_token(&self) -> Option<SyntaxToken> {
1290 support::token(&self.syntax, SyntaxKind::LBracket)
1291 }
1292 pub fn r_bracket_token(&self) -> Option<SyntaxToken> {
1293 support::token(&self.syntax, SyntaxKind::RBracket)
1294 }
1295}
1296#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1298pub struct ParamList {
1299 syntax: SyntaxNode,
1300}
1301impl AstNode for ParamList {
1302 fn cast(syntax: SyntaxNode) -> Option<Self> {
1303 (syntax.kind() == SyntaxKind::ParamList).then_some(Self { syntax })
1304 }
1305 fn syntax(&self) -> &SyntaxNode {
1306 &self.syntax
1307 }
1308}
1309impl ParamList {
1310 pub fn params(&self) -> AstChildren<Param> {
1311 support::children(&self.syntax)
1312 }
1313 pub fn l_paren_token(&self) -> Option<SyntaxToken> {
1314 support::token(&self.syntax, SyntaxKind::LParen)
1315 }
1316 pub fn comma_token(&self) -> Option<SyntaxToken> {
1317 support::token(&self.syntax, SyntaxKind::Comma)
1318 }
1319 pub fn r_paren_token(&self) -> Option<SyntaxToken> {
1320 support::token(&self.syntax, SyntaxKind::RParen)
1321 }
1322}
1323#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1325pub struct ReturnType {
1326 syntax: SyntaxNode,
1327}
1328impl AstNode for ReturnType {
1329 fn cast(syntax: SyntaxNode) -> Option<Self> {
1330 (syntax.kind() == SyntaxKind::ReturnType).then_some(Self { syntax })
1331 }
1332 fn syntax(&self) -> &SyntaxNode {
1333 &self.syntax
1334 }
1335}
1336impl ReturnType {
1337 pub fn type_ref(&self) -> Option<PathType> {
1338 support::child(&self.syntax)
1339 }
1340 pub fn tuple_type(&self) -> Option<TupleType> {
1341 support::child(&self.syntax)
1342 }
1343 pub fn stream_type(&self) -> Option<StreamType> {
1344 support::child(&self.syntax)
1345 }
1346 pub fn fallible_type(&self) -> Option<FallibleType> {
1347 support::child(&self.syntax)
1348 }
1349}
1350#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1352pub struct AttrBlock {
1353 syntax: SyntaxNode,
1354}
1355impl AstNode for AttrBlock {
1356 fn cast(syntax: SyntaxNode) -> Option<Self> {
1357 (syntax.kind() == SyntaxKind::AttrBlock).then_some(Self { syntax })
1358 }
1359 fn syntax(&self) -> &SyntaxNode {
1360 &self.syntax
1361 }
1362}
1363impl AttrBlock {
1364 pub fn attributes(&self) -> AstChildren<Attribute> {
1365 support::children(&self.syntax)
1366 }
1367 pub fn l_bracket_token(&self) -> Option<SyntaxToken> {
1368 support::token(&self.syntax, SyntaxKind::LBracket)
1369 }
1370 pub fn comma_token(&self) -> Option<SyntaxToken> {
1371 support::token(&self.syntax, SyntaxKind::Comma)
1372 }
1373 pub fn r_bracket_token(&self) -> Option<SyntaxToken> {
1374 support::token(&self.syntax, SyntaxKind::RBracket)
1375 }
1376}
1377#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1379pub struct Param {
1380 syntax: SyntaxNode,
1381}
1382impl AstNode for Param {
1383 fn cast(syntax: SyntaxNode) -> Option<Self> {
1384 (syntax.kind() == SyntaxKind::Param).then_some(Self { syntax })
1385 }
1386 fn syntax(&self) -> &SyntaxNode {
1387 &self.syntax
1388 }
1389}
1390impl Param {
1391 pub fn name(&self) -> Option<Name> {
1392 support::child(&self.syntax)
1393 }
1394 pub fn param_type(&self) -> Option<ParamType> {
1395 support::child(&self.syntax)
1396 }
1397 pub fn colon_token(&self) -> Option<SyntaxToken> {
1398 support::token(&self.syntax, SyntaxKind::Colon)
1399 }
1400}
1401#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1403pub struct StreamType {
1404 syntax: SyntaxNode,
1405}
1406impl AstNode for StreamType {
1407 fn cast(syntax: SyntaxNode) -> Option<Self> {
1408 (syntax.kind() == SyntaxKind::StreamType).then_some(Self { syntax })
1409 }
1410 fn syntax(&self) -> &SyntaxNode {
1411 &self.syntax
1412 }
1413}
1414impl StreamType {
1415 pub fn element_type(&self) -> Option<PathType> {
1416 support::child(&self.syntax)
1417 }
1418 pub fn lt_token(&self) -> Option<SyntaxToken> {
1419 support::token(&self.syntax, SyntaxKind::Lt)
1420 }
1421 pub fn string_token(&self) -> Option<SyntaxToken> {
1422 support::token(&self.syntax, SyntaxKind::StringKw)
1423 }
1424 pub fn bytes_token(&self) -> Option<SyntaxToken> {
1425 support::token(&self.syntax, SyntaxKind::BytesKw)
1426 }
1427 pub fn gt_token(&self) -> Option<SyntaxToken> {
1428 support::token(&self.syntax, SyntaxKind::Gt)
1429 }
1430}
1431#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1433pub struct FallibleType {
1434 syntax: SyntaxNode,
1435}
1436impl AstNode for FallibleType {
1437 fn cast(syntax: SyntaxNode) -> Option<Self> {
1438 (syntax.kind() == SyntaxKind::FallibleType).then_some(Self { syntax })
1439 }
1440 fn syntax(&self) -> &SyntaxNode {
1441 &self.syntax
1442 }
1443}
1444impl FallibleType {
1445 pub fn ok(&self) -> Option<PathType> {
1446 support::nth_child(&self.syntax, 0usize)
1447 }
1448 pub fn err(&self) -> Option<PathType> {
1449 support::nth_child(&self.syntax, 1usize)
1450 }
1451 pub fn pipe_token(&self) -> Option<SyntaxToken> {
1452 support::token(&self.syntax, SyntaxKind::Pipe)
1453 }
1454}
1455#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1457pub struct TimingRange {
1458 syntax: SyntaxNode,
1459}
1460impl AstNode for TimingRange {
1461 fn cast(syntax: SyntaxNode) -> Option<Self> {
1462 (syntax.kind() == SyntaxKind::TimingRange).then_some(Self { syntax })
1463 }
1464 fn syntax(&self) -> &SyntaxNode {
1465 &self.syntax
1466 }
1467}
1468impl TimingRange {
1469 pub fn duration_token(&self) -> Option<SyntaxToken> {
1470 support::token(&self.syntax, SyntaxKind::Duration)
1471 }
1472 pub fn dotdot_token(&self) -> Option<SyntaxToken> {
1473 support::token(&self.syntax, SyntaxKind::DotDot)
1474 }
1475}
1476#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1478pub struct DottedName {
1479 syntax: SyntaxNode,
1480}
1481impl AstNode for DottedName {
1482 fn cast(syntax: SyntaxNode) -> Option<Self> {
1483 (syntax.kind() == SyntaxKind::DottedName).then_some(Self { syntax })
1484 }
1485 fn syntax(&self) -> &SyntaxNode {
1486 &self.syntax
1487 }
1488}
1489impl DottedName {
1490 pub fn ident_token(&self) -> Option<SyntaxToken> {
1491 support::token(&self.syntax, SyntaxKind::Ident)
1492 }
1493 pub fn dot_token(&self) -> Option<SyntaxToken> {
1494 support::token(&self.syntax, SyntaxKind::Dot)
1495 }
1496}
1497#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1499pub struct Attribute {
1500 syntax: SyntaxNode,
1501}
1502impl AstNode for Attribute {
1503 fn cast(syntax: SyntaxNode) -> Option<Self> {
1504 (syntax.kind() == SyntaxKind::Attribute).then_some(Self { syntax })
1505 }
1506 fn syntax(&self) -> &SyntaxNode {
1507 &self.syntax
1508 }
1509}
1510impl Attribute {
1511 pub fn key(&self) -> Option<Name> {
1512 support::child(&self.syntax)
1513 }
1514 pub fn value(&self) -> Option<AttrValue> {
1515 support::child(&self.syntax)
1516 }
1517 pub fn expr(&self) -> Option<Expr> {
1518 support::child(&self.syntax)
1519 }
1520 pub fn dot_token(&self) -> Option<SyntaxToken> {
1521 support::token(&self.syntax, SyntaxKind::Dot)
1522 }
1523 pub fn eq_token(&self) -> Option<SyntaxToken> {
1524 support::token(&self.syntax, SyntaxKind::Eq)
1525 }
1526 pub fn require_token(&self) -> Option<SyntaxToken> {
1527 support::token(&self.syntax, SyntaxKind::RequireKw)
1528 }
1529 pub fn ensure_token(&self) -> Option<SyntaxToken> {
1530 support::token(&self.syntax, SyntaxKind::EnsureKw)
1531 }
1532}
1533#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1535pub struct AttrValue {
1536 syntax: SyntaxNode,
1537}
1538impl AstNode for AttrValue {
1539 fn cast(syntax: SyntaxNode) -> Option<Self> {
1540 (syntax.kind() == SyntaxKind::AttrValue).then_some(Self { syntax })
1541 }
1542 fn syntax(&self) -> &SyntaxNode {
1543 &self.syntax
1544 }
1545}
1546impl AttrValue {
1547 pub fn literal(&self) -> Option<Literal> {
1548 support::child(&self.syntax)
1549 }
1550 pub fn values(&self) -> AstChildren<AttrValue> {
1551 support::children(&self.syntax)
1552 }
1553 pub fn l_paren_token(&self) -> Option<SyntaxToken> {
1554 support::token(&self.syntax, SyntaxKind::LParen)
1555 }
1556 pub fn comma_token(&self) -> Option<SyntaxToken> {
1557 support::token(&self.syntax, SyntaxKind::Comma)
1558 }
1559 pub fn r_paren_token(&self) -> Option<SyntaxToken> {
1560 support::token(&self.syntax, SyntaxKind::RParen)
1561 }
1562}
1563#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1565pub struct MemberLine {
1566 syntax: SyntaxNode,
1567}
1568impl AstNode for MemberLine {
1569 fn cast(syntax: SyntaxNode) -> Option<Self> {
1570 (syntax.kind() == SyntaxKind::MemberLine).then_some(Self { syntax })
1571 }
1572 fn syntax(&self) -> &SyntaxNode {
1573 &self.syntax
1574 }
1575}
1576impl MemberLine {
1577 pub fn reference(&self) -> Option<Reference> {
1578 support::child(&self.syntax)
1579 }
1580 pub fn attr_block(&self) -> Option<AttrBlock> {
1581 support::child(&self.syntax)
1582 }
1583}
1584#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1586pub struct ComponentLine {
1587 syntax: SyntaxNode,
1588}
1589impl AstNode for ComponentLine {
1590 fn cast(syntax: SyntaxNode) -> Option<Self> {
1591 (syntax.kind() == SyntaxKind::ComponentLine).then_some(Self { syntax })
1592 }
1593 fn syntax(&self) -> &SyntaxNode {
1594 &self.syntax
1595 }
1596}
1597impl ComponentLine {
1598 pub fn reference(&self) -> Option<Reference> {
1599 support::child(&self.syntax)
1600 }
1601 pub fn attr_block(&self) -> Option<AttrBlock> {
1602 support::child(&self.syntax)
1603 }
1604 pub fn offers_token(&self) -> Option<SyntaxToken> {
1605 support::token(&self.syntax, SyntaxKind::OffersKw)
1606 }
1607 pub fn requires_token(&self) -> Option<SyntaxToken> {
1608 support::token(&self.syntax, SyntaxKind::RequiresKw)
1609 }
1610}
1611#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1613pub struct Reference {
1614 syntax: SyntaxNode,
1615}
1616impl AstNode for Reference {
1617 fn cast(syntax: SyntaxNode) -> Option<Self> {
1618 (syntax.kind() == SyntaxKind::Reference).then_some(Self { syntax })
1619 }
1620 fn syntax(&self) -> &SyntaxNode {
1621 &self.syntax
1622 }
1623}
1624impl Reference {
1625 pub fn qualified_name(&self) -> Option<QualifiedName> {
1626 support::child(&self.syntax)
1627 }
1628}
1629#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1631pub struct MachineDef {
1632 syntax: SyntaxNode,
1633}
1634impl AstNode for MachineDef {
1635 fn cast(syntax: SyntaxNode) -> Option<Self> {
1636 (syntax.kind() == SyntaxKind::MachineDef).then_some(Self { syntax })
1637 }
1638 fn syntax(&self) -> &SyntaxNode {
1639 &self.syntax
1640 }
1641}
1642impl MachineDef {
1643 pub fn name(&self) -> Option<Name> {
1644 support::child(&self.syntax)
1645 }
1646 pub fn attr_block(&self) -> Option<AttrBlock> {
1647 support::child(&self.syntax)
1648 }
1649 pub fn lines(&self) -> AstChildren<MemberLine> {
1650 support::children(&self.syntax)
1651 }
1652 pub fn machine_token(&self) -> Option<SyntaxToken> {
1653 support::token(&self.syntax, SyntaxKind::MachineKw)
1654 }
1655 pub fn l_brace_token(&self) -> Option<SyntaxToken> {
1656 support::token(&self.syntax, SyntaxKind::LBrace)
1657 }
1658 pub fn comma_token(&self) -> Option<SyntaxToken> {
1659 support::token(&self.syntax, SyntaxKind::Comma)
1660 }
1661 pub fn r_brace_token(&self) -> Option<SyntaxToken> {
1662 support::token(&self.syntax, SyntaxKind::RBrace)
1663 }
1664}
1665#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1667pub struct BinaryExpr {
1668 syntax: SyntaxNode,
1669}
1670impl AstNode for BinaryExpr {
1671 fn cast(syntax: SyntaxNode) -> Option<Self> {
1672 (syntax.kind() == SyntaxKind::BinaryExpr).then_some(Self { syntax })
1673 }
1674 fn syntax(&self) -> &SyntaxNode {
1675 &self.syntax
1676 }
1677}
1678impl BinaryExpr {
1679 pub fn lhs(&self) -> Option<Expr> {
1680 support::nth_child(&self.syntax, 0usize)
1681 }
1682 pub fn rhs(&self) -> Option<Expr> {
1683 support::nth_child(&self.syntax, 1usize)
1684 }
1685 pub fn pipepipe_token(&self) -> Option<SyntaxToken> {
1686 support::token(&self.syntax, SyntaxKind::PipePipe)
1687 }
1688 pub fn ampamp_token(&self) -> Option<SyntaxToken> {
1689 support::token(&self.syntax, SyntaxKind::AmpAmp)
1690 }
1691 pub fn eqeq_token(&self) -> Option<SyntaxToken> {
1692 support::token(&self.syntax, SyntaxKind::EqEq)
1693 }
1694 pub fn neq_token(&self) -> Option<SyntaxToken> {
1695 support::token(&self.syntax, SyntaxKind::Neq)
1696 }
1697 pub fn lt_token(&self) -> Option<SyntaxToken> {
1698 support::token(&self.syntax, SyntaxKind::Lt)
1699 }
1700 pub fn le_token(&self) -> Option<SyntaxToken> {
1701 support::token(&self.syntax, SyntaxKind::Le)
1702 }
1703 pub fn gt_token(&self) -> Option<SyntaxToken> {
1704 support::token(&self.syntax, SyntaxKind::Gt)
1705 }
1706 pub fn ge_token(&self) -> Option<SyntaxToken> {
1707 support::token(&self.syntax, SyntaxKind::Ge)
1708 }
1709 pub fn plus_token(&self) -> Option<SyntaxToken> {
1710 support::token(&self.syntax, SyntaxKind::Plus)
1711 }
1712 pub fn minus_token(&self) -> Option<SyntaxToken> {
1713 support::token(&self.syntax, SyntaxKind::Minus)
1714 }
1715 pub fn star_token(&self) -> Option<SyntaxToken> {
1716 support::token(&self.syntax, SyntaxKind::Star)
1717 }
1718 pub fn slash_token(&self) -> Option<SyntaxToken> {
1719 support::token(&self.syntax, SyntaxKind::Slash)
1720 }
1721 pub fn percent_token(&self) -> Option<SyntaxToken> {
1722 support::token(&self.syntax, SyntaxKind::Percent)
1723 }
1724}
1725#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1727pub struct PrefixExpr {
1728 syntax: SyntaxNode,
1729}
1730impl AstNode for PrefixExpr {
1731 fn cast(syntax: SyntaxNode) -> Option<Self> {
1732 (syntax.kind() == SyntaxKind::PrefixExpr).then_some(Self { syntax })
1733 }
1734 fn syntax(&self) -> &SyntaxNode {
1735 &self.syntax
1736 }
1737}
1738impl PrefixExpr {
1739 pub fn operand(&self) -> Option<Expr> {
1740 support::child(&self.syntax)
1741 }
1742 pub fn bang_token(&self) -> Option<SyntaxToken> {
1743 support::token(&self.syntax, SyntaxKind::Bang)
1744 }
1745 pub fn minus_token(&self) -> Option<SyntaxToken> {
1746 support::token(&self.syntax, SyntaxKind::Minus)
1747 }
1748}
1749#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1751pub struct MemberExpr {
1752 syntax: SyntaxNode,
1753}
1754impl AstNode for MemberExpr {
1755 fn cast(syntax: SyntaxNode) -> Option<Self> {
1756 (syntax.kind() == SyntaxKind::MemberExpr).then_some(Self { syntax })
1757 }
1758 fn syntax(&self) -> &SyntaxNode {
1759 &self.syntax
1760 }
1761}
1762impl MemberExpr {
1763 pub fn base(&self) -> Option<Expr> {
1764 support::child(&self.syntax)
1765 }
1766 pub fn dot_token(&self) -> Option<SyntaxToken> {
1767 support::token(&self.syntax, SyntaxKind::Dot)
1768 }
1769 pub fn ident_token(&self) -> Option<SyntaxToken> {
1770 support::token(&self.syntax, SyntaxKind::Ident)
1771 }
1772}
1773#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1775pub struct PathExpr {
1776 syntax: SyntaxNode,
1777}
1778impl AstNode for PathExpr {
1779 fn cast(syntax: SyntaxNode) -> Option<Self> {
1780 (syntax.kind() == SyntaxKind::PathExpr).then_some(Self { syntax })
1781 }
1782 fn syntax(&self) -> &SyntaxNode {
1783 &self.syntax
1784 }
1785}
1786impl PathExpr {
1787 pub fn ident_token(&self) -> Option<SyntaxToken> {
1788 support::token(&self.syntax, SyntaxKind::Ident)
1789 }
1790}
1791#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1793pub struct ParenExpr {
1794 syntax: SyntaxNode,
1795}
1796impl AstNode for ParenExpr {
1797 fn cast(syntax: SyntaxNode) -> Option<Self> {
1798 (syntax.kind() == SyntaxKind::ParenExpr).then_some(Self { syntax })
1799 }
1800 fn syntax(&self) -> &SyntaxNode {
1801 &self.syntax
1802 }
1803}
1804impl ParenExpr {
1805 pub fn inner(&self) -> Option<Expr> {
1806 support::child(&self.syntax)
1807 }
1808 pub fn l_paren_token(&self) -> Option<SyntaxToken> {
1809 support::token(&self.syntax, SyntaxKind::LParen)
1810 }
1811 pub fn r_paren_token(&self) -> Option<SyntaxToken> {
1812 support::token(&self.syntax, SyntaxKind::RParen)
1813 }
1814}
1815#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1817pub struct LiteralExpr {
1818 syntax: SyntaxNode,
1819}
1820impl AstNode for LiteralExpr {
1821 fn cast(syntax: SyntaxNode) -> Option<Self> {
1822 (syntax.kind() == SyntaxKind::LiteralExpr).then_some(Self { syntax })
1823 }
1824 fn syntax(&self) -> &SyntaxNode {
1825 &self.syntax
1826 }
1827}
1828impl LiteralExpr {
1829 pub fn int_number_token(&self) -> Option<SyntaxToken> {
1830 support::token(&self.syntax, SyntaxKind::IntNumber)
1831 }
1832 pub fn float_number_token(&self) -> Option<SyntaxToken> {
1833 support::token(&self.syntax, SyntaxKind::FloatNumber)
1834 }
1835 pub fn string_lit_token(&self) -> Option<SyntaxToken> {
1836 support::token(&self.syntax, SyntaxKind::String)
1837 }
1838 pub fn true_token(&self) -> Option<SyntaxToken> {
1839 support::token(&self.syntax, SyntaxKind::TrueKw)
1840 }
1841 pub fn false_token(&self) -> Option<SyntaxToken> {
1842 support::token(&self.syntax, SyntaxKind::FalseKw)
1843 }
1844 pub fn duration_token(&self) -> Option<SyntaxToken> {
1845 support::token(&self.syntax, SyntaxKind::Duration)
1846 }
1847}
1848#[derive(Debug, Clone, PartialEq, Eq, Hash)]
1851pub struct ErrorNode {
1852 syntax: SyntaxNode,
1853}
1854impl AstNode for ErrorNode {
1855 fn cast(syntax: SyntaxNode) -> Option<Self> {
1856 (syntax.kind() == SyntaxKind::ErrorNode).then_some(Self { syntax })
1857 }
1858 fn syntax(&self) -> &SyntaxNode {
1859 &self.syntax
1860 }
1861}