1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#![no_std]
#![allow(unused_imports)]
#![deny(missing_debug_implementations, missing_copy_implementations)]
#![warn(missing_docs, rustdoc::missing_crate_level_docs)]
#![doc = include_str!("../readme.md")]
#![doc(html_logo_url = "https://avatars.githubusercontent.com/u/91894079")]
#![doc(html_favicon_url = "https://avatars.githubusercontent.com/u/91894079")]

extern crate alloc;

mod control_flow;
mod expression_level;
pub mod helper;
mod package_level;
mod patterns;
mod string_like;
pub(crate) mod utils;

pub use crate::{
    control_flow::{
        control::{ControlKind, ControlNode, LabelNode},
        do_catch::{MatchCallNode, MatchKind, MatchStatement},
        do_try::TryStatement,
        jmp_guard::{GuardPattern, GuardStatement},
        jmp_if::{BreakStatement, ElseStatement, IfBranchNode, IfStatement, JumpStatement},
        jmp_switch::SwitchStatement,
        loop_for::{ForBarePattern, ForLoop},
        loop_pure::{LoopContinuation, LoopStatement},
        loop_while::{WhileConditionNode, WhileLoop, WhileLoopKind},
    },
    expression_level::{
        annotations::{AnnotationNode, AttributeKind, AttributeList, AttributeTerm, ModifierList, ProceduralNode},
        argument::{ArgumentKey, ArgumentTerm, ArgumentsList},
        call_apply::ApplyCallNode,
        call_dot::{DotCallNode, DotCallTerm},
        call_generic::{GenericCallNode, GenericCallTerm},
        call_subscript::SubscriptCallNode,
        ctor::{CollectorTerm, ConstructNewNode},
        lambda::{ClosureCallNode, LambdaNode},
        number::NumberLiteralNode,
        operators::{BinaryNode, LogicMatrix, OperatorNode, UnaryNode, ValkyrieOperator},
        parameter::{ParameterKind, ParameterTerm, ParametersList},
        range::{RangeKind, RangeNode, RangeTermNode},
        symbol::{BooleanNode, IdentifierNode, LambdaSlotItem, LambdaSlotNode, NamePathNode, NullNode, OutputNode},
        tuple::{TupleKind, TupleNode},
        ExpressionContext, ExpressionKind, ExpressionNode, TypingExpression,
    },
    package_level::{
        classes::{
            ClassDeclaration, ClassKind, ClassTerm, ConstructObjectNode, DomainDeclaration, FieldDeclaration, MethodDeclaration,
        },
        constraints::{ConstraintDeclaration, ConstraintTerm},
        documentation::DocumentationList,
        flags::{EncodeDeclaration, FlagDeclaration, FlagKind, FlagTerm},
        function::{FunctionDeclaration, FunctionKind, FunctionReturnNode, StatementBlock},
        guarantee::{EffectTypeNode, GuaranteeNode},
        import::{
            ImportAliasItem, ImportAliasNode, ImportAllNode, ImportGroupNode, ImportKind, ImportResolvedItem, ImportState,
            ImportStatement, ImportTermNode,
        },
        labeled::{GotoStatement, LabelStatement},
        let_bind::{LetBindNode, VariableDeclaration},
        namespace::{NamespaceDeclaration, NamespaceKind},
        program::ProgramRoot,
        statements::{StatementContext, StatementKind},
        traits::{ExtendsStatement, TraitDeclaration, TraitKind, TraitTerm},
        unions::{UnionDeclaration, UnionTerm, VariantDeclaration},
    },
    patterns::{
        ArrayPatternNode, ClassPatternNode, IdentifierPattern, ImplicitCaseNode, PatternBranch, PatternCaseNode,
        PatternCondition, PatternNode, PatternTypeNode, PatternWhenNode, PatternsList, TuplePatternNode, UnionPatternNode,
    },
    string_like::{
        string_formatter::{FormatterNode, FormatterTerm},
        string_literal::{StringLiteralNode, StringTextNode},
        string_template::{
            TemplateCloseNode, TemplateCommentNode, TemplateInlineNode, TemplateLineType, TemplateNode, TemplateOpenNode,
        },
    },
};