moonbitlang/parser/syntax does not have a README file

    Impls

    Type List used by this package APIs.

    Parameters

    Type List used by this package APIs.

    TestName

    IterVisitor

    pub(open) trait IterVisitor {
    base(Self) -> IterVisitorBase[Self] = _
    visit_Visibility(Self, Visibility) -> Unit = _
    visit_Visibility_Pub(Self, attr~ : String?, loc~ :
    Location
    ) -> Unit = _
    visit_Visibility_Priv(Self, loc~ :
    Location
    ) -> Unit = _
    visit_Constant(Self, Constant) -> Unit = _
    visit_Label(Self, Label) -> Unit = _
    visit_ConstrName(Self, ConstrName) -> Unit = _
    visit_LongIdent(Self, LongIdent) -> Unit = _
    visit_LongIdent_Ident(Self, name~ : String) -> Unit = _
    visit_LongIdent_Dot(Self, pkg~ : String, id~ : String) -> Unit = _
    visit_TypeName(Self, TypeName) -> Unit = _
    visit_ConstrId(Self, ConstrId) -> Unit = _
    visit_Type(Self, Type) -> Unit = _
    visit_Type_Any(Self, loc~ :
    Location
    ) -> Unit = _
    visit_Type_Arrow(Self, args~ :
    List
    [Type], res~ : Type, err~ : ErrorType, is_async~ :
    Location
    ?, loc~ :
    Location
    ) -> Unit = _
    visit_Type_Name(Self, constr_id~ : ConstrId, tys~ :
    List
    [Type], loc~ :
    Location
    ) -> Unit = _
    visit_Type_Tuple(Self, tys~ :
    List
    [Type], loc~ :
    Location
    ) -> Unit = _
    visit_Type_Option(Self, ty~ : Type, loc~ :
    Location
    , question_loc~ :
    Location
    ) -> Unit = _
    visit_Type_Object(Self, ConstrId) -> Unit = _
    visit_ErrorType(Self, ErrorType) -> Unit = _
    visit_ErrorType_ErrorType(Self, ty~ : Type) -> Unit = _
    visit_ErrorType_DefaultErrorType(Self, loc~ :
    Location
    ) -> Unit = _
    visit_ErrorType_Noraise(Self, loc~ :
    Location
    ) -> Unit = _
    visit_ErrorType_MaybeError(Self, ty~ : Type) -> Unit = _
    visit_ConstrParam(Self, ConstrParam) -> Unit = _
    visit_ConstrDecl(Self, ConstrDecl) -> Unit = _
    visit_ExceptionDecl(Self, ExceptionDecl) -> Unit = _
    visit_ExceptionDecl_SinglePayload(Self, Type) -> Unit = _
    visit_ExceptionDecl_EnumPayload(Self,
    List
    [ConstrDecl]) -> Unit = _
    visit_FieldName(Self, FieldName) -> Unit = _
    visit_FieldDecl(Self, FieldDecl) -> Unit = _
    visit_TypeDesc(Self, TypeDesc) -> Unit = _
    visit_TypeDesc_Newtype(Self, Type) -> Unit = _
    visit_TypeDesc_Error(Self, ExceptionDecl) -> Unit = _
    visit_TypeDesc_Variant(Self,
    List
    [ConstrDecl]) -> Unit = _
    visit_TypeDesc_Record(Self, fields~ :
    List
    [FieldDecl], constr_decl~ : FunDecl?) -> Unit = _
    visit_TypeDesc_TupleStruct(Self,
    List
    [Type]) -> Unit = _
    visit_TypeDesc_Alias(Self, Type) -> Unit = _
    visit_Hole(Self, Hole) -> Unit = _
    visit_ArgumentKind(Self, ArgumentKind) -> Unit = _
    visit_ArgumentKind_Labelled(Self, Label) -> Unit = _
    visit_ArgumentKind_LabelledPun(Self, Label) -> Unit = _
    visit_ArgumentKind_LabelledOption(Self, label~ : Label, question_loc~ :
    Location
    ) -> Unit = _
    visit_ArgumentKind_LabelledOptionPun(Self, label~ : Label, question_loc~ :
    Location
    ) -> Unit = _
    visit_FnKind(Self, FnKind) -> Unit = _
    visit_Group(Self, Group) -> Unit = _
    visit_TrailingMark(Self, TrailingMark) -> Unit = _
    visit_ApplyAttr(Self, ApplyAttr) -> Unit = _
    visit_TypeVarConstraint(Self, TypeVarConstraint) -> Unit = _
    visit_TypeVarBinder(Self, TypeVarBinder) -> Unit = _
    visit_TypeDeclBinder(Self, TypeDeclBinder) -> Unit = _
    visit_Binder(Self, Binder) -> Unit = _
    visit_Var(Self, Var) -> Unit = _
    visit_ConstructorExtraInfo(Self, ConstructorExtraInfo) -> Unit = _
    visit_ConstructorExtraInfo_TypeName(Self, TypeName) -> Unit = _
    visit_ConstructorExtraInfo_Package(Self, String) -> Unit = _
    visit_Constructor(Self, Constructor) -> Unit = _
    visit_Accessor(Self, Accessor) -> Unit = _
    visit_Accessor_Label(Self, Label) -> Unit = _
    visit_Accessor_Index(Self, tuple_index~ : Int, loc~ :
    Location
    ) -> Unit = _
    visit_Accessor_Newtype(Self, loc~ :
    Location
    ) -> Unit = _
    visit_AliasTarget(Self, AliasTarget) -> Unit = _
    visit_Argument(Self, Argument) -> Unit = _
    visit_Parameter(Self, Parameter) -> Unit = _
    visit_Parameter_DiscardPositional(Self, ty~ : Type?, loc~ :
    Location
    ) -> Unit = _
    visit_Parameter_Positional(Self, binder~ : Binder, ty~ : Type?) -> Unit = _
    visit_Parameter_Labelled(Self, binder~ : Binder, ty~ : Type?) -> Unit = _
    visit_Parameter_Optional(Self, binder~ : Binder, default~ : Expr, ty~ : Type?) -> Unit = _
    visit_Parameter_QuestionOptional(Self, binder~ : Binder, ty~ : Type?) -> Unit = _
    visit_Case(Self, Case) -> Unit = _
    visit_LexCase(Self, LexCase) -> Unit = _
    visit_LexTopPattern(Self, LexTopPattern) -> Unit = _
    visit_LexTopPattern_Pattern(Self, LexPattern) -> Unit = _
    visit_LexTopPattern_Binder(Self, Binder) -> Unit = _
    visit_LexTopPattern_Wildcard(Self, loc~ :
    Location
    ) -> Unit = _
    visit_LexPattern(Self, LexPattern) -> Unit = _
    visit_LexPattern_Regex(Self, lit~ : String, loc~ :
    Location
    ) -> Unit = _
    visit_LexPattern_RegexInterp(Self, elems~ :
    List
    [InterpElem], loc~ :
    Location
    ) -> Unit = _
    visit_LexPattern_Alias(Self, pat~ : LexPattern, binder~ : Binder, loc~ :
    Location
    ) -> Unit = _
    visit_LexPattern_Sequence(Self, pats~ :
    List
    [LexPattern], loc~ :
    Location
    ) -> Unit = _
    visit_SpreadableElem(Self, SpreadableElem) -> Unit = _
    visit_SpreadableElem_Regular(Self, Expr) -> Unit = _
    visit_SpreadableElem_Spread(Self, expr~ : Expr, loc~ :
    Location
    ) -> Unit = _
    visit_MapExprElem(Self, MapExprElem) -> Unit = _
    visit_StaticAssertion(Self, StaticAssertion) -> Unit = _
    visit_Func(Self, Func) -> Unit = _
    visit_FieldDef(Self, FieldDef) -> Unit = _
    visit_InterpElem(Self, InterpElem) -> Unit = _
    visit_InterpElem_Literal(Self, repr~ : String, loc~ :
    Location
    ) -> Unit = _
    visit_InterpElem_Expr(Self, expr~ : Expr, loc~ :
    Location
    ) -> Unit = _
    visit_InterpElem_Source(Self,
    InterpSource
    ) -> Unit = _
    visit_MultilineStringElem(Self, MultilineStringElem) -> Unit = _
    visit_MultilineStringElem_String(Self, String) -> Unit = _
    visit_MultilineStringElem_Interp(Self,
    List
    [InterpElem]) -> Unit = _
    visit_TryOperatorKind(Self, TryOperatorKind) -> Unit = _
    visit_DotDotBinder(Self, DotDotBinder) -> Unit = _
    visit_DotDotBinder_BinderAs(Self, Binder) -> Unit = _
    visit_DotDotBinder_Binder(Self, Binder) -> Unit = _
    visit_ArrayPattern(Self, ArrayPattern) -> Unit = _
    visit_ArrayPattern_Pattern(Self, Pattern) -> Unit = _
    visit_ArrayPattern_StringSpread(Self, str~ : String, loc~ :
    Location
    ) -> Unit = _
    visit_ArrayPattern_BytesSpread(Self, bytes~ : String, loc~ :
    Location
    ) -> Unit = _
    visit_ArrayPattern_ConstSpread(Self, binder~ : Binder, pkg~ : String?, loc~ :
    Location
    ) -> Unit = _
    visit_ArrayPatterns(Self, ArrayPatterns) -> Unit = _
    visit_ArrayPatterns_Closed(Self,
    List
    [ArrayPattern]) -> Unit = _
    visit_ArrayPatterns_Open(Self,
    List
    [ArrayPattern],
    List
    [ArrayPattern], DotDotBinder) -> Unit = _
    visit_WhereClause(Self, WhereClause) -> Unit = _
    visit_FieldPat(Self, FieldPat) -> Unit = _
    visit_ConstrPatArg(Self, ConstrPatArg) -> Unit = _
    visit_MapPatElem(Self, MapPatElem) -> Unit = _
    visit_RangeKind(Self, RangeKind) -> Unit = _
    visit_Pattern(Self, Pattern) -> Unit = _
    visit_Pattern_Alias(Self, pat~ : Pattern, alias_~ : Binder, loc~ :
    Location
    ) -> Unit = _
    visit_Pattern_Any(Self, loc~ :
    Location
    ) -> Unit = _
    visit_Pattern_Array(Self, pats~ : ArrayPatterns, loc~ :
    Location
    ) -> Unit = _
    visit_Pattern_Constant(Self, c~ : Constant, loc~ :
    Location
    ) -> Unit = _
    visit_Pattern_Constraint(Self, pat~ : Pattern, ty~ : Type, loc~ :
    Location
    ) -> Unit = _
    visit_Pattern_Constr(Self, constr~ : Constructor, args~ :
    List
    [ConstrPatArg]?, is_open~ : Bool, loc~ :
    Location
    ) -> Unit = _
    visit_Pattern_Or(Self, pat1~ : Pattern, pat2~ : Pattern, loc~ :
    Location
    ) -> Unit = _
    visit_Pattern_Tuple(Self, pats~ :
    List
    [Pattern], loc~ :
    Location
    ) -> Unit = _
    visit_Pattern_Var(Self, Binder) -> Unit = _
    visit_Pattern_Record(Self, fields~ :
    List
    [FieldPat], is_closed~ : Bool, loc~ :
    Location
    ) -> Unit = _
    visit_Pattern_Map(Self, elems~ :
    List
    [MapPatElem], is_closed~ : Bool, loc~ :
    Location
    ) -> Unit = _
    visit_Pattern_Range(Self, lhs~ : Pattern, rhs~ : Pattern, kind~ : RangeKind, loc~ :
    Location
    ) -> Unit = _
    visit_Pattern_SpecialConstr(Self, binder~ : Binder, args~ :
    List
    [ConstrPatArg], loc~ :
    Location
    ) -> Unit = _
    visit_LocalTypeDecl(Self, LocalTypeDecl) -> Unit = _
    visit_DerivingDirective(Self, DerivingDirective) -> Unit = _
    visit_TypeDecl(Self, TypeDecl) -> Unit = _
    visit_FuncStubs(Self, FuncStubs) -> Unit = _
    visit_FuncStubs_Import(Self, module_name~ : String, func_name~ : String, language~ : String?) -> Unit = _
    visit_FuncStubs_Embedded(Self, language~ : String?, code~ : EmbeddedCode) -> Unit = _
    visit_EmbeddedCode(Self, EmbeddedCode) -> Unit = _
    visit_EmbeddedCode_CodeString(Self, String) -> Unit = _
    visit_EmbeddedCode_CodeMultilineString(Self,
    List
    [String]) -> Unit = _
    visit_DeclBody(Self, DeclBody) -> Unit = _
    visit_DeclBody_DeclBody(Self, local_types~ :
    List
    [LocalTypeDecl], expr~ : Expr) -> Unit = _
    visit_DeclBody_DeclStubs(Self, FuncStubs) -> Unit = _
    visit_FunDecl(Self, FunDecl) -> Unit = _
    visit_TraitMethodDecl(Self, TraitMethodDecl) -> Unit = _
    visit_TraitDecl(Self, TraitDecl) -> Unit = _
    visit_Impl(Self, Impl) -> Unit = _
    visit_Impl_TopExpr(Self, expr~ : Expr, is_main~ : Bool, local_types~ :
    List
    [LocalTypeDecl], is_async~ :
    Location
    ?, loc~ :
    Location
    ) -> Unit = _
    visit_Impl_TopTest(Self, expr~ : Expr, name~ : (String,
    Location
    )?, params~ :
    List
    [Parameter]?, local_types~ :
    List
    [LocalTypeDecl], is_async~ :
    Location
    ?, loc~ :
    Location
    , attrs~ :
    List
    [
    Attribute
    ], doc~ : DocString) -> Unit = _
    visit_Impl_TopTypeDef(Self, TypeDecl) -> Unit = _
    visit_Impl_TopFuncDef(Self, fun_decl~ : FunDecl, decl_body~ : DeclBody, loc~ :
    Location
    ) -> Unit = _
    visit_Impl_TopFuncAlias(Self, pkg~ : Label?, type_name~ : Label?, targets~ :
    List
    [AliasTarget], vis~ : Visibility, attrs~ :
    List
    [
    Attribute
    ], is_list~ : Bool, doc~ : DocString, loc~ :
    Location
    ) -> Unit = _
    visit_Impl_TopLetDef(Self, binder~ : Binder, ty~ : Type?, expr~ : Expr, vis~ : Visibility, is_constant~ : Bool, loc~ :
    Location
    , attrs~ :
    List
    [
    Attribute
    ], doc~ : DocString, is_declare~ : Bool) -> Unit = _
    visit_Impl_TopTrait(Self, TraitDecl) -> Unit = _
    visit_Impl_TopBatchTypeAlias(Self, pkg~ : Label?, targets~ :
    List
    [AliasTarget], vis~ : Visibility, loc~ :
    Location
    , attrs~ :
    List
    [
    Attribute
    ], is_list~ : Bool, doc~ : DocString) -> Unit = _
    visit_Impl_TopBatchTraitAlias(Self, pkg~ : Label?, targets~ :
    List
    [AliasTarget], vis~ : Visibility, loc~ :
    Location
    , attrs~ :
    List
    [
    Attribute
    ], is_list~ : Bool, doc~ : DocString) -> Unit = _
    visit_Impl_TopImpl(Self, self_ty~ : Type?, trait_~ : TypeName, method_name~ : Binder, has_error~ :
    Location
    ?, quantifiers~ :
    List
    [TypeVarBinder], params~ :
    List
    [Parameter], ret_ty~ : Type?, err_ty~ : ErrorType, body~ : DeclBody, vis~ : Visibility, loc~ :
    Location
    , attrs~ :
    List
    [
    Attribute
    ], doc~ : DocString) -> Unit = _
    visit_Impl_TopView(Self, quantifiers~ :
    List
    [TypeVarBinder], source_ty~ : Type, view_type_name~ : String, view_type_loc~ :
    Location
    , view_constrs~ :
    List
    [ConstrDecl], view_func_name~ : Binder, parameters~ :
    List
    [Parameter], params_loc~ :
    Location
    , body~ : Expr, vis~ : Visibility, loc~ :
    Location
    , attrs~ :
    List
    [
    Attribute
    ], doc~ : DocString) -> Unit = _
    visit_Impl_TopImplRelation(Self, self_ty~ : Type, trait_~ : TypeName, quantifiers~ :
    List
    [TypeVarBinder], vis~ : Visibility, attrs~ :
    List
    [
    Attribute
    ], loc~ :
    Location
    , doc~ : DocString, is_declare~ : Bool) -> Unit = _
    visit_Impl_TopUsing(Self, pkg~ : Label, names~ :
    List
    [(AliasTarget, UsingKind)], vis~ : Visibility, attrs~ :
    List
    [
    Attribute
    ], loc~ :
    Location
    , doc~ : DocString) -> Unit = _
    visit_UsingKind(Self, UsingKind) -> Unit = _
    visit_Expr(Self, Expr) -> Unit = _
    visit_Expr_Apply(Self, func~ : Expr, args~ :
    List
    [Argument], attr~ : ApplyAttr, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_Infix(Self, op~ : Var, lhs~ : Expr, rhs~ : Expr, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_Unary(Self, op~ : Var, expr~ : Expr, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_Array(Self, exprs~ :
    List
    [Expr], loc~ :
    Location
    ) -> Unit = _
    visit_Expr_ArraySpread(Self, elems~ :
    List
    [SpreadableElem], loc~ :
    Location
    ) -> Unit = _
    visit_Expr_ArrayGet(Self, array~ : Expr, index~ : Expr, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_ArrayGetSlice(Self, array~ : Expr, start_index~ : Expr?, end_index~ : Expr?, index_loc~ :
    Location
    , loc~ :
    Location
    ) -> Unit = _
    visit_Expr_ArraySet(Self, array~ : Expr, index~ : Expr, value~ : Expr, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_ArrayAugmentedSet(Self, op~ : Var, array~ : Expr, index~ : Expr, value~ : Expr, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_Constant(Self, c~ : Constant, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_MultilineString(Self, elems~ :
    List
    [MultilineStringElem], loc~ :
    Location
    ) -> Unit = _
    visit_Expr_Interp(Self, elems~ :
    List
    [InterpElem], loc~ :
    Location
    ) -> Unit = _
    visit_Expr_Constraint(Self, expr~ : Expr, ty~ : Type, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_Constr(Self, constr~ : Constructor, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_While(Self, loop_cond~ : Expr, loop_body~ : Expr, while_else~ : Expr?, label~ : Label?, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_Function(Self, func~ : Func, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_Ident(Self, id~ : Var, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_If(Self, cond~ : Expr, ifso~ : Expr, ifnot~ : Expr?, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_Guard(Self, cond~ : Expr, otherwise~ : Expr?, body~ : Expr, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_Is(Self, expr~ : Expr, pat~ : Pattern, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_IsLexMatch(Self, expr~ : Expr, strategy~ : Label?, pat~ :
    List
    [LexTopPattern], pat_loc~ :
    Location
    , loc~ :
    Location
    ) -> Unit = _
    visit_Expr_Defer(Self, expr~ : Expr, body~ : Expr, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_LetFn(Self, name~ : Binder, func~ : Func, body~ : Expr, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_LetRec(Self, bindings~ :
    List
    [(Binder, Func)], body~ : Expr, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_LetAnd(Self, bindings~ :
    List
    [(Binder, Type?, Func)], body~ : Expr, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_Let(Self, pattern~ : Pattern, expr~ : Expr, body~ : Expr, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_Sequence(Self, exprs~ :
    List
    [Expr], last_expr~ : Expr, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_Tuple(Self, exprs~ :
    List
    [Expr], loc~ :
    Location
    ) -> Unit = _
    visit_Expr_Record(Self, type_name~ : TypeName?, fields~ :
    List
    [FieldDef], trailing~ : TrailingMark, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_RecordUpdate(Self, type_name~ : TypeName?, record~ : Expr, fields~ :
    List
    [FieldDef], loc~ :
    Location
    ) -> Unit = _
    visit_Expr_Field(Self, record~ : Expr, accessor~ : Accessor, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_Method(Self, type_name~ : TypeName, method_name~ : Label, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_DotApply(Self, self~ : Expr, method_name~ : Label, args~ :
    List
    [Argument], return_self~ : Bool, attr~ : ApplyAttr, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_As(Self, expr~ : Expr, trait_~ : TypeName, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_Mutate(Self, record~ : Expr, accessor~ : Accessor, field~ : Expr, augmented_by~ : Var?, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_Match(Self, expr~ : Expr, cases~ :
    List
    [Case], match_loc~ :
    Location
    , loc~ :
    Location
    ) -> Unit = _
    visit_Expr_LexMatch(Self, strategy~ : Label?, expr~ : Expr, match_loc~ :
    Location
    , cases~ :
    List
    [LexCase], loc~ :
    Location
    ) -> Unit = _
    visit_Expr_LetMut(Self, binder~ : Binder, ty~ : Type?, expr~ : Expr, body~ : Expr, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_Pipe(Self, lhs~ : Expr, rhs~ : Expr, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_Assign(Self, var_~ : Var, expr~ : Expr, augmented_by~ : Var?, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_Hole(Self, loc~ :
    Location
    , kind~ : Hole) -> Unit = _
    visit_Expr_Return(Self, return_value~ : Expr?, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_Raise(Self, err_value~ : Expr, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_Unit(Self, loc~ :
    Location
    , faked~ : Bool) -> Unit = _
    visit_Expr_Break(Self, arg~ : Expr?, label~ : Label?, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_Continue(Self, args~ :
    List
    [Expr], label~ : Label?, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_Loop(Self, arg~ : Expr, body~ :
    List
    [Case], label~ : Label?, loop_loc~ :
    Location
    , loc~ :
    Location
    ) -> Unit = _
    visit_Expr_For(Self, binders~ :
    List
    [(Binder, Expr)], condition~ : Expr?, continue_block~ :
    List
    [(Binder, Expr)], body~ : Expr, for_else~ : Expr?, label~ : Label?, loc~ :
    Location
    , where_clause~ : WhereClause?) -> Unit = _
    visit_Expr_ForEach(Self, binders~ :
    List
    [Binder?], expr~ : Expr, body~ : Expr, else_block~ : Expr?, label~ : Label?, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_Try(Self, body~ : Expr, catch_~ :
    List
    [Case], catch_all~ : Bool, try_else~ :
    List
    [Case]?, has_try~ : Bool, try_loc~ :
    Location
    , catch_loc~ :
    Location
    , else_loc~ :
    Location
    , loc~ :
    Location
    ) -> Unit = _
    visit_Expr_TryOperator(Self, body~ : Expr, kind~ : TryOperatorKind, try_loc~ :
    Location
    , loc~ :
    Location
    ) -> Unit = _
    visit_Expr_Map(Self, elems~ :
    List
    [MapExprElem], loc~ :
    Location
    ) -> Unit = _
    visit_Expr_Group(Self, expr~ : Expr, group~ : Group, loc~ :
    Location
    ) -> Unit = _
    visit_Expr_StaticAssert(Self, asserts~ :
    List
    [StaticAssertion], body~ : Expr) -> Unit = _
    }

    MapVisitor

    pub(open) trait MapVisitor {
    base(Self) -> MapVisitorBase[Self] = _
    visit_Visibility(Self, Visibility) -> Visibility = _
    visit_Visibility_Pub(Self, attr~ : String?, loc~ :
    Location
    ) -> Visibility = _
    visit_Visibility_Priv(Self, loc~ :
    Location
    ) -> Visibility = _
    visit_Constant(Self, Constant) -> Constant = _
    visit_Label(Self, Label) -> Label = _
    visit_ConstrName(Self, ConstrName) -> ConstrName = _
    visit_LongIdent(Self, LongIdent) -> LongIdent = _
    visit_LongIdent_Ident(Self, name~ : String) -> LongIdent = _
    visit_LongIdent_Dot(Self, pkg~ : String, id~ : String) -> LongIdent = _
    visit_TypeName(Self, TypeName) -> TypeName = _
    visit_ConstrId(Self, ConstrId) -> ConstrId = _
    visit_Type(Self, Type) -> Type = _
    visit_Type_Any(Self, loc~ :
    Location
    ) -> Type = _
    visit_Type_Arrow(Self, args~ :
    List
    [Type], res~ : Type, err~ : ErrorType, is_async~ :
    Location
    ?, loc~ :
    Location
    ) -> Type = _
    visit_Type_Tuple(Self, tys~ :
    List
    [Type], loc~ :
    Location
    ) -> Type = _
    visit_Type_Name(Self, constr_id~ : ConstrId, tys~ :
    List
    [Type], loc~ :
    Location
    ) -> Type = _
    visit_Type_Option(Self, ty~ : Type, loc~ :
    Location
    , question_loc~ :
    Location
    ) -> Type = _
    visit_Type_Object(Self, ConstrId) -> Type = _
    visit_ErrorType(Self, ErrorType) -> ErrorType = _
    visit_ErrorType_ErrorType(Self, ty~ : Type) -> ErrorType = _
    visit_ErrorType_DefaultErrorType(Self, loc~ :
    Location
    ) -> ErrorType = _
    visit_ErrorType_Noraise(Self, loc~ :
    Location
    ) -> ErrorType = _
    visit_ErrorType_MaybeError(Self, ty~ : Type) -> ErrorType = _
    visit_ConstrParam(Self, ConstrParam) -> ConstrParam = _
    visit_ConstrDecl(Self, ConstrDecl) -> ConstrDecl = _
    visit_ExceptionDecl(Self, ExceptionDecl) -> ExceptionDecl = _
    visit_ExceptionDecl_SinglePayload(Self, Type) -> ExceptionDecl = _
    visit_ExceptionDecl_EnumPayload(Self,
    List
    [ConstrDecl]) -> ExceptionDecl = _
    visit_FieldName(Self, FieldName) -> FieldName = _
    visit_FieldDecl(Self, FieldDecl) -> FieldDecl = _
    visit_TypeDesc(Self, TypeDesc) -> TypeDesc = _
    visit_TypeDesc_Newtype(Self, Type) -> TypeDesc = _
    visit_TypeDesc_Error(Self, ExceptionDecl) -> TypeDesc = _
    visit_TypeDesc_Variant(Self,
    List
    [ConstrDecl]) -> TypeDesc = _
    visit_TypeDesc_Record(Self, fields~ :
    List
    [FieldDecl], constr_decl~ : FunDecl?) -> TypeDesc = _
    visit_TypeDesc_TupleStruct(Self,
    List
    [Type]) -> TypeDesc = _
    visit_TypeDesc_Alias(Self, Type) -> TypeDesc = _
    visit_Hole(Self, Hole) -> Hole = _
    visit_ArgumentKind(Self, ArgumentKind) -> ArgumentKind = _
    visit_ArgumentKind_Labelled(Self, Label) -> ArgumentKind = _
    visit_ArgumentKind_LabelledPun(Self, Label) -> ArgumentKind = _
    visit_ArgumentKind_LabelledOption(Self, label~ : Label, question_loc~ :
    Location
    ) -> ArgumentKind = _
    visit_ArgumentKind_LabelledOptionPun(Self, label~ : Label, question_loc~ :
    Location
    ) -> ArgumentKind = _
    visit_FnKind(Self, FnKind) -> FnKind = _
    visit_Group(Self, Group) -> Group = _
    visit_TrailingMark(Self, TrailingMark) -> TrailingMark = _
    visit_ApplyAttr(Self, ApplyAttr) -> ApplyAttr = _
    visit_TypeVarConstraint(Self, TypeVarConstraint) -> TypeVarConstraint = _
    visit_TypeVarBinder(Self, TypeVarBinder) -> TypeVarBinder = _
    visit_TypeDeclBinder(Self, TypeDeclBinder) -> TypeDeclBinder = _
    visit_Binder(Self, Binder) -> Binder = _
    visit_Var(Self, Var) -> Var = _
    visit_ConstructorExtraInfo(Self, ConstructorExtraInfo) -> ConstructorExtraInfo = _
    visit_ConstructorExtraInfo_TypeName(Self, TypeName) -> ConstructorExtraInfo = _
    visit_ConstructorExtraInfo_Package(Self, String) -> ConstructorExtraInfo = _
    visit_Constructor(Self, Constructor) -> Constructor = _
    visit_Accessor(Self, Accessor) -> Accessor = _
    visit_Accessor_Label(Self, Label) -> Accessor = _
    visit_Accessor_Index(Self, tuple_index~ : Int, loc~ :
    Location
    ) -> Accessor = _
    visit_Accessor_Newtype(Self, loc~ :
    Location
    ) -> Accessor = _
    visit_AliasTarget(Self, AliasTarget) -> AliasTarget = _
    visit_Argument(Self, Argument) -> Argument = _
    visit_Parameter(Self, Parameter) -> Parameter = _
    visit_Parameter_DiscardPositional(Self, ty~ : Type?, loc~ :
    Location
    ) -> Parameter = _
    visit_Parameter_Positional(Self, binder~ : Binder, ty~ : Type?) -> Parameter = _
    visit_Parameter_Labelled(Self, binder~ : Binder, ty~ : Type?) -> Parameter = _
    visit_Parameter_Optional(Self, binder~ : Binder, default~ : Expr, ty~ : Type?) -> Parameter = _
    visit_Parameter_QuestionOptional(Self, binder~ : Binder, ty~ : Type?) -> Parameter = _
    visit_Case(Self, Case) -> Case = _
    visit_LexCase(Self, LexCase) -> LexCase = _
    visit_LexTopPattern(Self, LexTopPattern) -> LexTopPattern = _
    visit_LexTopPattern_Pattern(Self, LexPattern) -> LexTopPattern = _
    visit_LexTopPattern_Binder(Self, Binder) -> LexTopPattern = _
    visit_LexTopPattern_Wildcard(Self, loc~ :
    Location
    ) -> LexTopPattern = _
    visit_LexPattern(Self, LexPattern) -> LexPattern = _
    visit_LexPattern_Regex(Self, lit~ : String, loc~ :
    Location
    ) -> LexPattern = _
    visit_LexPattern_RegexInterp(Self, elems~ :
    List
    [InterpElem], loc~ :
    Location
    ) -> LexPattern = _
    visit_LexPattern_Alias(Self, pat~ : LexPattern, binder~ : Binder, loc~ :
    Location
    ) -> LexPattern = _
    visit_LexPattern_Sequence(Self, pats~ :
    List
    [LexPattern], loc~ :
    Location
    ) -> LexPattern = _
    visit_SpreadableElem(Self, SpreadableElem) -> SpreadableElem = _
    visit_SpreadableElem_Regular(Self, Expr) -> SpreadableElem = _
    visit_SpreadableElem_Spread(Self, expr~ : Expr, loc~ :
    Location
    ) -> SpreadableElem = _
    visit_MapExprElem(Self, MapExprElem) -> MapExprElem = _
    visit_StaticAssertion(Self, StaticAssertion) -> StaticAssertion = _
    visit_Func(Self, Func) -> Func = _
    visit_FieldDef(Self, FieldDef) -> FieldDef = _
    visit_InterpElem(Self, InterpElem) -> InterpElem = _
    visit_InterpElem_Literal(Self, repr~ : String, loc~ :
    Location
    ) -> InterpElem = _
    visit_InterpElem_Expr(Self, expr~ : Expr, loc~ :
    Location
    ) -> InterpElem = _
    visit_InterpElem_Source(Self,
    InterpSource
    ) -> InterpElem = _
    visit_MultilineStringElem(Self, MultilineStringElem) -> MultilineStringElem = _
    visit_MultilineStringElem_String(Self, String) -> MultilineStringElem = _
    visit_MultilineStringElem_Interp(Self,
    List
    [InterpElem]) -> MultilineStringElem = _
    visit_TryOperatorKind(Self, TryOperatorKind) -> TryOperatorKind = _
    visit_DotDotBinder(Self, DotDotBinder) -> DotDotBinder = _
    visit_DotDotBinder_BinderAs(Self, Binder) -> DotDotBinder = _
    visit_DotDotBinder_Binder(Self, Binder) -> DotDotBinder = _
    visit_ArrayPattern(Self, ArrayPattern) -> ArrayPattern = _
    visit_ArrayPattern_Pattern(Self, Pattern) -> ArrayPattern = _
    visit_ArrayPattern_StringSpread(Self, str~ : String, loc~ :
    Location
    ) -> ArrayPattern = _
    visit_ArrayPattern_BytesSpread(Self, bytes~ : String, loc~ :
    Location
    ) -> ArrayPattern = _
    visit_ArrayPattern_ConstSpread(Self, binder~ : Binder, pkg~ : String?, loc~ :
    Location
    ) -> ArrayPattern = _
    visit_ArrayPatterns(Self, ArrayPatterns) -> ArrayPatterns = _
    visit_ArrayPatterns_Closed(Self,
    List
    [ArrayPattern]) -> ArrayPatterns = _
    visit_ArrayPatterns_Open(Self,
    List
    [ArrayPattern],
    List
    [ArrayPattern], DotDotBinder) -> ArrayPatterns = _
    visit_WhereClause(Self, WhereClause) -> WhereClause = _
    visit_FieldPat(Self, FieldPat) -> FieldPat = _
    visit_ConstrPatArg(Self, ConstrPatArg) -> ConstrPatArg = _
    visit_MapPatElem(Self, MapPatElem) -> MapPatElem = _
    visit_RangeKind(Self, RangeKind) -> RangeKind = _
    visit_Pattern(Self, Pattern) -> Pattern = _
    visit_Pattern_Alias(Self, pat~ : Pattern, alias_~ : Binder, loc~ :
    Location
    ) -> Pattern = _
    visit_Pattern_Any(Self, loc~ :
    Location
    ) -> Pattern = _
    visit_Pattern_Array(Self, pats~ : ArrayPatterns, loc~ :
    Location
    ) -> Pattern = _
    visit_Pattern_Constant(Self, c~ : Constant, loc~ :
    Location
    ) -> Pattern = _
    visit_Pattern_Constraint(Self, pat~ : Pattern, ty~ : Type, loc~ :
    Location
    ) -> Pattern = _
    visit_Pattern_Constr(Self, constr~ : Constructor, args~ :
    List
    [ConstrPatArg]?, is_open~ : Bool, loc~ :
    Location
    ) -> Pattern = _
    visit_Pattern_Or(Self, pat1~ : Pattern, pat2~ : Pattern, loc~ :
    Location
    ) -> Pattern = _
    visit_Pattern_Tuple(Self, pats~ :
    List
    [Pattern], loc~ :
    Location
    ) -> Pattern = _
    visit_Pattern_Var(Self, Binder) -> Pattern = _
    visit_Pattern_Record(Self, fields~ :
    List
    [FieldPat], is_closed~ : Bool, loc~ :
    Location
    ) -> Pattern = _
    visit_Pattern_Map(Self, elems~ :
    List
    [MapPatElem], is_closed~ : Bool, loc~ :
    Location
    ) -> Pattern = _
    visit_Pattern_Range(Self, lhs~ : Pattern, rhs~ : Pattern, kind~ : RangeKind, loc~ :
    Location
    ) -> Pattern = _
    visit_Pattern_SpecialConstr(Self, binder~ : Binder, args~ :
    List
    [ConstrPatArg], loc~ :
    Location
    ) -> Pattern = _
    visit_LocalTypeDecl(Self, LocalTypeDecl) -> LocalTypeDecl = _
    visit_DerivingDirective(Self, DerivingDirective) -> DerivingDirective = _
    visit_TypeDecl(Self, TypeDecl) -> TypeDecl = _
    visit_FuncStubs(Self, FuncStubs) -> FuncStubs = _
    visit_FuncStubs_Import(Self, module_name~ : String, func_name~ : String, language~ : String?) -> FuncStubs = _
    visit_FuncStubs_Embedded(Self, language~ : String?, code~ : EmbeddedCode) -> FuncStubs = _
    visit_EmbeddedCode(Self, EmbeddedCode) -> EmbeddedCode = _
    visit_EmbeddedCode_CodeString(Self, String) -> EmbeddedCode = _
    visit_EmbeddedCode_CodeMultilineString(Self,
    List
    [String]) -> EmbeddedCode = _
    visit_DeclBody(Self, DeclBody) -> DeclBody = _
    visit_DeclBody_DeclBody(Self, local_types~ :
    List
    [LocalTypeDecl], expr~ : Expr) -> DeclBody = _
    visit_DeclBody_DeclStubs(Self, FuncStubs) -> DeclBody = _
    visit_FunDecl(Self, FunDecl) -> FunDecl = _
    visit_TraitMethodDecl(Self, TraitMethodDecl) -> TraitMethodDecl = _
    visit_TraitDecl(Self, TraitDecl) -> TraitDecl = _
    visit_UsingKind(Self, UsingKind) -> UsingKind = _
    visit_Impl(Self, Impl) -> Impl = _
    visit_Impl_TopExpr(Self, expr~ : Expr, is_main~ : Bool, local_types~ :
    List
    [LocalTypeDecl], is_async~ :
    Location
    ?, loc~ :
    Location
    ) -> Impl = _
    visit_Impl_TopTest(Self, expr~ : Expr, name~ : (String,
    Location
    )?, params~ :
    List
    [Parameter]?, local_types~ :
    List
    [LocalTypeDecl], is_async~ :
    Location
    ?, loc~ :
    Location
    , attrs~ :
    List
    [
    Attribute
    ], doc~ : DocString) -> Impl = _
    visit_Impl_TopTypeDef(Self, TypeDecl) -> Impl = _
    visit_Impl_TopFuncDef(Self, fun_decl~ : FunDecl, decl_body~ : DeclBody, loc~ :
    Location
    ) -> Impl = _
    visit_Impl_TopFuncAlias(Self, pkg~ : Label?, type_name~ : Label?, targets~ :
    List
    [AliasTarget], vis~ : Visibility, attrs~ :
    List
    [
    Attribute
    ], is_list~ : Bool, doc~ : DocString, loc~ :
    Location
    ) -> Impl = _
    visit_Impl_TopLetDef(Self, binder~ : Binder, ty~ : Type?, expr~ : Expr, vis~ : Visibility, is_constant~ : Bool, loc~ :
    Location
    , attrs~ :
    List
    [
    Attribute
    ], doc~ : DocString, is_declare~ : Bool) -> Impl = _
    visit_Impl_TopTrait(Self, TraitDecl) -> Impl = _
    visit_Impl_TopBatchTypeAlias(Self, pkg~ : Label?, targets~ :
    List
    [AliasTarget], vis~ : Visibility, loc~ :
    Location
    , attrs~ :
    List
    [
    Attribute
    ], is_list~ : Bool, doc~ : DocString) -> Impl = _
    visit_Impl_TopBatchTraitAlias(Self, pkg~ : Label?, targets~ :
    List
    [AliasTarget], vis~ : Visibility, loc~ :
    Location
    , attrs~ :
    List
    [
    Attribute
    ], is_list~ : Bool, doc~ : DocString) -> Impl = _
    visit_Impl_TopImpl(Self, self_ty~ : Type?, trait_~ : TypeName, method_name~ : Binder, has_error~ :
    Location
    ?, quantifiers~ :
    List
    [TypeVarBinder], params~ :
    List
    [Parameter], ret_ty~ : Type?, err_ty~ : ErrorType, body~ : DeclBody, vis~ : Visibility, loc~ :
    Location
    , attrs~ :
    List
    [
    Attribute
    ], doc~ : DocString) -> Impl = _
    visit_Impl_TopView(Self, quantifiers~ :
    List
    [TypeVarBinder], source_ty~ : Type, view_type_name~ : String, view_type_loc~ :
    Location
    , view_constrs~ :
    List
    [ConstrDecl], view_func_name~ : Binder, parameters~ :
    List
    [Parameter], params_loc~ :
    Location
    , body~ : Expr, vis~ : Visibility, loc~ :
    Location
    , attrs~ :
    List
    [
    Attribute
    ], doc~ : DocString) -> Impl = _
    visit_Impl_TopImplRelation(Self, self_ty~ : Type, trait_~ : TypeName, quantifiers~ :
    List
    [TypeVarBinder], vis~ : Visibility, attrs~ :
    List
    [
    Attribute
    ], loc~ :
    Location
    , doc~ : DocString, is_declare~ : Bool) -> Impl = _
    visit_Impl_TopUsing(Self, pkg~ : Label, names~ :
    List
    [(AliasTarget, UsingKind)], vis~ : Visibility, attrs~ :
    List
    [
    Attribute
    ], loc~ :
    Location
    , doc~ : DocString) -> Impl = _
    visit_Expr(Self, Expr) -> Expr = _
    visit_Expr_Apply(Self, func~ : Expr, args~ :
    List
    [Argument], attr~ : ApplyAttr, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_Infix(Self, op~ : Var, lhs~ : Expr, rhs~ : Expr, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_Unary(Self, op~ : Var, expr~ : Expr, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_Array(Self, exprs~ :
    List
    [Expr], loc~ :
    Location
    ) -> Expr = _
    visit_Expr_ArraySpread(Self, elems~ :
    List
    [SpreadableElem], loc~ :
    Location
    ) -> Expr = _
    visit_Expr_ArrayGet(Self, array~ : Expr, index~ : Expr, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_ArrayGetSlice(Self, array~ : Expr, start_index~ : Expr?, end_index~ : Expr?, index_loc~ :
    Location
    , loc~ :
    Location
    ) -> Expr = _
    visit_Expr_ArraySet(Self, array~ : Expr, index~ : Expr, value~ : Expr, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_ArrayAugmentedSet(Self, op~ : Var, array~ : Expr, index~ : Expr, value~ : Expr, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_Constant(Self, c~ : Constant, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_MultilineString(Self, elems~ :
    List
    [MultilineStringElem], loc~ :
    Location
    ) -> Expr = _
    visit_Expr_Interp(Self, elems~ :
    List
    [InterpElem], loc~ :
    Location
    ) -> Expr = _
    visit_Expr_Constraint(Self, expr~ : Expr, ty~ : Type, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_Constr(Self, constr~ : Constructor, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_While(Self, loop_cond~ : Expr, loop_body~ : Expr, while_else~ : Expr?, label~ : Label?, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_Function(Self, func~ : Func, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_Ident(Self, id~ : Var, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_If(Self, cond~ : Expr, ifso~ : Expr, ifnot~ : Expr?, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_Guard(Self, cond~ : Expr, otherwise~ : Expr?, body~ : Expr, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_Is(Self, expr~ : Expr, pat~ : Pattern, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_IsLexMatch(Self, expr~ : Expr, strategy~ : Label?, pat~ :
    List
    [LexTopPattern], pat_loc~ :
    Location
    , loc~ :
    Location
    ) -> Expr = _
    visit_Expr_Defer(Self, expr~ : Expr, body~ : Expr, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_LetFn(Self, name~ : Binder, func~ : Func, body~ : Expr, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_LetRec(Self, bindings~ :
    List
    [(Binder, Func)], body~ : Expr, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_LetAnd(Self, bindings~ :
    List
    [(Binder, Type?, Func)], body~ : Expr, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_Let(Self, pattern~ : Pattern, expr~ : Expr, body~ : Expr, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_Sequence(Self, exprs~ :
    List
    [Expr], last_expr~ : Expr, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_Tuple(Self, exprs~ :
    List
    [Expr], loc~ :
    Location
    ) -> Expr = _
    visit_Expr_Record(Self, type_name~ : TypeName?, fields~ :
    List
    [FieldDef], trailing~ : TrailingMark, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_RecordUpdate(Self, type_name~ : TypeName?, record~ : Expr, fields~ :
    List
    [FieldDef], loc~ :
    Location
    ) -> Expr = _
    visit_Expr_Field(Self, record~ : Expr, accessor~ : Accessor, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_Method(Self, type_name~ : TypeName, method_name~ : Label, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_DotApply(Self, self~ : Expr, method_name~ : Label, args~ :
    List
    [Argument], return_self~ : Bool, attr~ : ApplyAttr, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_As(Self, expr~ : Expr, trait_~ : TypeName, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_Mutate(Self, record~ : Expr, accessor~ : Accessor, field~ : Expr, augmented_by~ : Var?, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_Match(Self, expr~ : Expr, cases~ :
    List
    [Case], match_loc~ :
    Location
    , loc~ :
    Location
    ) -> Expr = _
    visit_Expr_LexMatch(Self, strategy~ : Label?, expr~ : Expr, match_loc~ :
    Location
    , cases~ :
    List
    [LexCase], loc~ :
    Location
    ) -> Expr = _
    visit_Expr_LetMut(Self, binder~ : Binder, ty~ : Type?, expr~ : Expr, body~ : Expr, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_Pipe(Self, lhs~ : Expr, rhs~ : Expr, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_Assign(Self, var_~ : Var, expr~ : Expr, augmented_by~ : Var?, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_Hole(Self, loc~ :
    Location
    , kind~ : Hole) -> Expr = _
    visit_Expr_Return(Self, return_value~ : Expr?, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_Raise(Self, err_value~ : Expr, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_Unit(Self, loc~ :
    Location
    , faked~ : Bool) -> Expr = _
    visit_Expr_Break(Self, arg~ : Expr?, label~ : Label?, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_Continue(Self, args~ :
    List
    [Expr], label~ : Label?, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_Loop(Self, arg~ : Expr, body~ :
    List
    [Case], label~ : Label?, loop_loc~ :
    Location
    , loc~ :
    Location
    ) -> Expr = _
    visit_Expr_For(Self, binders~ :
    List
    [(Binder, Expr)], condition~ : Expr?, continue_block~ :
    List
    [(Binder, Expr)], body~ : Expr, for_else~ : Expr?, label~ : Label?, loc~ :
    Location
    , where_clause~ : WhereClause?) -> Expr = _
    visit_Expr_ForEach(Self, binders~ :
    List
    [Binder?], expr~ : Expr, body~ : Expr, else_block~ : Expr?, label~ : Label?, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_Try(Self, body~ : Expr, catch_~ :
    List
    [Case], catch_all~ : Bool, try_else~ :
    List
    [Case]?, has_try~ : Bool, try_loc~ :
    Location
    , catch_loc~ :
    Location
    , else_loc~ :
    Location
    , loc~ :
    Location
    ) -> Expr = _
    visit_Expr_TryOperator(Self, body~ : Expr, kind~ : TryOperatorKind, try_loc~ :
    Location
    , loc~ :
    Location
    ) -> Expr = _
    visit_Expr_Map(Self, elems~ :
    List
    [MapExprElem], loc~ :
    Location
    ) -> Expr = _
    visit_Expr_Group(Self, expr~ : Expr, group~ : Group, loc~ :
    Location
    ) -> Expr = _
    visit_Expr_StaticAssert(Self, asserts~ :
    List
    [StaticAssertion], body~ : Expr) -> Expr = _
    }

    Accessor

    AliasTarget

    pub(all) struct AliasTarget {
    binder : Binder
    target : Label?
    }

    ApplyAttr

    pub(all) enum ApplyAttr {
    NoAttr
    Exclamation
    Question
    }

    Argument

    pub(all) struct Argument {
    value : Expr
    kind : ArgumentKind
    }

    ArgumentKind

    pub(all) enum ArgumentKind {
    Positional
    Labelled(Label)
    LabelledPun(Label)
    LabelledOption(Label,
    Location
    )
    LabelledOptionPun(Label,
    Location
    )
    }

    ArrayPattern

    pub(all) enum ArrayPattern {
    Pattern(Pattern)
    StringSpread(String,
    Location
    )
    BytesSpread(String,
    Location
    )
    ConstSpread(Binder, String?,
    Location
    )
    }

    ArrowFnParam

    pub(all) enum ArrowFnParam {
    Named(Binder)
    Unnamed(
    Location
    )
    }

    Arrow function parameter type

    Binder

    pub(all) struct Binder {
    name : String
    loc :
    Location

    }

    Case

    pub(all) struct Case {
    pattern : Pattern
    guard_ : Expr?
    body : Expr
    }

    Constant

    pub(all) enum Constant {
    Bool(Bool)
    Byte(String)
    Bytes(String)
    Char(String)
    Int(String)
    Int64(String)
    UInt(String)
    UInt64(String)
    Float(String)
    Double(String)
    String(String)
    BigInt(String)
    }

    ConstrId

    pub(all) struct ConstrId {
    id : LongIdent
    loc :
    Location

    }

    ConstrName

    pub(all) struct ConstrName {
    name : String
    loc :
    Location

    }

    ConstrParam

    pub(all) struct ConstrParam {
    ty : Type
    mut_ : Bool
    label : Label?
    }

    ConstrPatArg

    pub(all) struct ConstrPatArg {
    pat : Pattern
    kind : ArgumentKind
    }

    Constructor

    pub(all) struct Constructor {
    name : ConstrName
    extra_info : ConstructorExtraInfo
    loc :
    Location

    }

    ConstructorExtraInfo

    pub(all) enum ConstructorExtraInfo {
    TypeName(TypeName)
    Package(String)
    NoExtraInfo
    }

    DeclBody

    pub(all) enum DeclBody {
    DeclBody(
    List
    [LocalTypeDecl], Expr)
    DeclStubs(FuncStubs)
    DeclNone
    }

    DerivingDirective

    pub(all) struct DerivingDirective {
    type_name : TypeName
    args :
    List
    [Argument]
    loc :
    Location

    }

    DocString

    pub(all) struct DocString {
    content :
    List
    [String]
    loc :
    Location

    }

    impl ToJson for DocString

    DocString::empty

    fn DocString::empty() -> DocString

    DotDotBinder

    pub(all) enum DotDotBinder {
    Underscore
    NoBinder
    BinderAs(Binder)
    Binder(Binder)
    }

    EmbeddedCode

    pub(all) enum EmbeddedCode {
    CodeString(String)
    CodeMultilineString(
    List
    [String])
    }

    ErrorType

    pub(all) enum ErrorType {
    ErrorType(Type)
    DefaultErrorType(
    Location
    )
    NoErrorType
    Noraise(
    Location
    )
    MaybeError(Type)
    }

    ExceptionDecl

    pub(all) enum ExceptionDecl {
    NoPayload
    SinglePayload(Type)
    EnumPayload(
    List
    [ConstrDecl])
    }

    Expr

    pub(all) enum Expr {
    Apply(Expr,
    List
    [Argument], ApplyAttr,
    Location
    )
    Infix(Var, Expr, Expr,
    Location
    )
    Unary(Var, Expr,
    Location
    )
    Array(
    List
    [Expr],
    Location
    )
    ArraySpread(
    List
    [SpreadableElem],
    Location
    )
    ArrayGet(Expr, Expr,
    Location
    )
    ArrayGetSlice(Expr, Expr?, Expr?,
    Location
    ,
    Location
    )
    ArraySet(Expr, Expr, Expr,
    Location
    )
    ArrayAugmentedSet(Var, Expr, Expr, Expr,
    Location
    )
    Constant(Constant,
    Location
    )
    MultilineString(
    List
    [MultilineStringElem],
    Location
    )
    Interp(
    List
    [InterpElem],
    Location
    )
    Constraint(Expr, Type,
    Location
    )
    Constr(Constructor,
    Location
    )
    While(Expr, Expr, Expr?, Label?,
    Location
    )
    Function(Func,
    Location
    )
    Ident(Var,
    Location
    )
    If(Expr, Expr, Expr?,
    Location
    )
    Guard(Expr, Expr?, Expr,
    Location
    )
    Is(Expr, Pattern,
    Location
    )
    IsLexMatch(Expr, Label?,
    List
    [LexTopPattern],
    Location
    ,
    Location
    )
    Defer(Expr, Expr,
    Location
    )
    LetFn(Binder, Func, Expr,
    Location
    )
    LetRec(
    List
    [(Binder, Func)], Expr,
    Location
    )
    LetAnd(
    List
    [(Binder, Type?, Func)], Expr,
    Location
    )
    Let(Pattern, Expr, Expr,
    Location
    )
    Sequence(
    List
    [Expr], Expr,
    Location
    )
    Tuple(
    List
    [Expr],
    Location
    )
    Record(TypeName?,
    List
    [FieldDef], TrailingMark,
    Location
    )
    RecordUpdate(TypeName?, Expr,
    List
    [FieldDef],
    Location
    )
    Field(Expr, Accessor,
    Location
    )
    Method(TypeName, Label,
    Location
    )
    DotApply(Expr, Label,
    List
    [Argument], Bool, ApplyAttr,
    Location
    )
    As(Expr, TypeName,
    Location
    )
    Mutate(Expr, Accessor, Expr, Var?,
    Location
    )
    Match(Expr,
    List
    [Case],
    Location
    ,
    Location
    )
    LexMatch(Label?, Expr,
    Location
    ,
    List
    [LexCase],
    Location
    )
    LetMut(Binder, Type?, Expr, Expr,
    Location
    )
    Pipe(Expr, Expr,
    Location
    )
    Assign(Var, Expr, Var?,
    Location
    )
    Hole(
    Location
    , Hole)
    Return(Expr?,
    Location
    )
    Raise(Expr,
    Location
    )
    Unit(
    Location
    , Bool)
    Break(Expr?, Label?,
    Location
    )
    Continue(
    List
    [Expr], Label?,
    Location
    )
    Loop(Expr,
    List
    [Case], Label?,
    Location
    ,
    Location
    )
    For(
    List
    [(Binder, Expr)], Expr?,
    List
    [(Binder, Expr)], Expr, Expr?, WhereClause?, Label?,
    Location
    )
    ForEach(
    List
    [Binder?], Expr, Expr, Expr?, Label?,
    Location
    )
    Try(Expr,
    List
    [Case], Bool,
    List
    [Case]?, Bool,
    Location
    ,
    Location
    ,
    Location
    ,
    Location
    )
    TryOperator(Expr, TryOperatorKind,
    Location
    ,
    Location
    )
    Map(
    List
    [MapExprElem],
    Location
    )
    Group(Expr, Group,
    Location
    )
    StaticAssert(
    List
    [StaticAssertion], Expr)
    }

    impl ToJson for Expr

    Expr::json_repr

    fn Expr::json_repr(self : Expr) -> Json

    FieldDef

    pub(all) struct FieldDef {
    label : Label
    expr : Expr
    is_pun : Bool
    loc :
    Location

    }

    FieldName

    pub(all) struct FieldName {
    label : String
    loc :
    Location

    }

    FieldPat

    pub(all) struct FieldPat {
    label : Label
    pattern : Pattern
    is_pun : Bool
    loc :
    Location

    }

    FnKind

    pub(all) enum FnKind {
    Lambda
    Arrow
    }

    FuncStubs

    pub(all) enum FuncStubs {
    Import(String, String, String?)
    Embedded(String?, EmbeddedCode)
    }

    Group

    pub(all) enum Group {
    Brace
    Paren
    }

    Hole

    pub(all) enum Hole {
    Synthesized
    Incomplete
    Todo
    }

    Impl

    pub(all) enum Impl {
    TopExpr(Expr, Bool,
    List
    [LocalTypeDecl],
    Location
    ?,
    Location
    )
    TopTest(Expr, (String,
    Location
    )?,
    List
    [Parameter]?,
    List
    [LocalTypeDecl],
    Location
    ?,
    Location
    ,
    List
    [
    Attribute
    ], DocString)
    TopTypeDef(TypeDecl)
    TopFuncDef(FunDecl, DeclBody,
    Location
    )
    TopFuncAlias(Label?, Label?,
    List
    [AliasTarget], Visibility,
    List
    [
    Attribute
    ], Bool, DocString,
    Location
    )
    TopLetDef(Binder, Type?, Expr, Visibility, Bool,
    Location
    ,
    List
    [
    Attribute
    ], DocString, Bool)
    TopTrait(TraitDecl)
    TopBatchTypeAlias(Label?,
    List
    [AliasTarget], Visibility,
    Location
    ,
    List
    [
    Attribute
    ], Bool, DocString)
    TopBatchTraitAlias(Label?,
    List
    [AliasTarget], Visibility,
    Location
    ,
    List
    [
    Attribute
    ], Bool, DocString)
    TopImpl(Type?, TypeName, Binder,
    Location
    ?,
    List
    [TypeVarBinder],
    List
    [Parameter], Type?, ErrorType, DeclBody, Visibility,
    Location
    ,
    List
    [
    Attribute
    ], DocString)
    TopView(
    List
    [TypeVarBinder], Type, String,
    Location
    ,
    List
    [ConstrDecl], Binder,
    List
    [Parameter],
    Location
    , Expr, Visibility,
    Location
    ,
    List
    [
    Attribute
    ], DocString)
    TopImplRelation(Type, TypeName,
    List
    [TypeVarBinder], Visibility,
    List
    [
    Attribute
    ],
    Location
    , DocString, Bool)
    TopUsing(Label,
    List
    [(AliasTarget, UsingKind)], Visibility,
    List
    [
    Attribute
    ],
    Location
    , DocString)
    }

    impl ToJson for Impl

    Impl::json_repr

    fn Impl::json_repr(self : Impl) -> Json

    InterpolationComponent

    pub(all) enum InterpolationComponent {
    InterpLit(String,
    Location
    )
    InterpSource(
    InterpSource
    )
    }

    IterVisitorBase

    pub type IterVisitorBase[T] T

    IterVisitorBase::inner

    #deprecated("Use `struct T(A)` to declare a newtype and use `.0` access the underlying type instead.")
    fn[T] IterVisitorBase::inner(self : IterVisitorBase[T]) -> T
    Convert newtype to its underlying type, automatically derived.

    Label

    pub(all) struct Label {
    name : String
    loc :
    Location

    }

    LexCase

    pub(all) struct LexCase {
    pat :
    List
    [LexTopPattern]
    pat_loc :
    Location

    guard_ : Expr?
    body : Expr
    }

    LexTopPattern

    pub(all) enum LexTopPattern {
    Pattern(LexPattern)
    Binder(Binder)
    Wildcard(
    Location
    )
    }

    LocalTypeDecl

    pub(all) struct LocalTypeDecl {
    tycon : String
    tycon_loc :
    Location

    components : TypeDesc
    deriving :
    List
    [DerivingDirective]
    }

    LongIdent

    pub(all) enum LongIdent {
    Ident(String)
    Dot(String, String)
    }

    LongIdent::dummy

    fn LongIdent::dummy() -> LongIdent

    The dummy LongIdent is used in typer to represent an parsing error.

    MapExprElem

    MapPatElem

    pub(all) struct MapPatElem {
    key : Constant
    pat : Pattern
    match_absent : Bool
    key_loc :
    Location

    loc :
    Location

    }

    MapVisitorBase

    pub(all) type MapVisitorBase[T] T

    MapVisitorBase::inner

    #deprecated("Use `struct T(A)` to declare a newtype and use `.0` access the underlying type instead.")
    fn[T] MapVisitorBase::inner(self : MapVisitorBase[T]) -> T
    Convert newtype to its underlying type, automatically derived.

    MultilineStringElem

    pub(all) enum MultilineStringElem {
    String(String)
    Interp(
    List
    [InterpElem])
    }

    Parameter

    pub(all) enum Parameter {
    DiscardPositional(Type?,
    Location
    )
    Positional(Binder, Type?)
    Labelled(Binder, Type?)
    Optional(Binder, Expr, Type?)
    QuestionOptional(Binder, Type?)
    }

    RangeKind

    pub(all) enum RangeKind {
    Inclusive
    Exclusive
    InclusiveMissingEqual
    }

    SpreadableElem

    pub(all) enum SpreadableElem {
    Regular(Expr)
    Spread(Expr,
    Location
    )
    }

    StaticAssertion

    pub(all) struct StaticAssertion {
    ty : Type
    trait_ : LongIdent
    loc :
    Location

    msg : String
    }

    TrailingMark

    pub(all) enum TrailingMark {
    Comma
    Semi
    None
    }

    TryOperatorKind

    pub(all) enum TryOperatorKind {
    Question
    Exclamation
    }

    TypeDeclBinder

    pub(all) struct TypeDeclBinder {
    name : String?
    loc :
    Location

    }

    TypeDesc

    pub(all) enum TypeDesc {
    Abstract
    Extern
    Newtype(Type)
    Error(ExceptionDecl)
    Variant(
    List
    [ConstrDecl])
    Record(
    List
    [FieldDecl], FunDecl?)
    TupleStruct(
    List
    [Type])
    Alias(Type)
    }

    TypeName

    pub(all) struct TypeName {
    name : LongIdent
    is_object : Bool
    loc :
    Location

    }

    TypeVarBinder

    pub(all) struct TypeVarBinder {
    name : String
    name_loc :
    Location

    constraints :
    List
    [TypeVarConstraint]
    }

    Represent type variable and optional constraints.

    fn [T] f() -> Unit {...} // ^---- TypeVarBinder fn [T : TraitA + TraitB] f() -> Unit {...} // ^^^^^^^^^^^^^^^^^^^----- TypeVarBinder

    TypeVarConstraint

    pub(all) struct TypeVarConstraint {
    trait_ : LongIdent
    loc :
    Location

    }

    UsingKind

    pub(all) enum UsingKind {
    Value
    Type
    Trait
    }

    Var

    pub(all) struct Var {
    name : LongIdent
    loc :
    Location

    }

    Visibility

    pub(all) enum Visibility {
    Default
    Pub(String?,
    Location
    )
    Priv(
    Location
    )
    }

    WhereClause

    arrow_fn_param_to_expr

    fn arrow_fn_param_to_expr(p : ArrowFnParam) -> Expr

    Convert arrow function parameter to expression

    binder_to_expr

    fn binder_to_expr(p : Binder) -> Expr

    Convert binder to expression

    bracket_loc

    desugar_array_augmented_set

    fn desugar_array_augmented_set(loc :
    Location
    , op : Var, array : Expr, index : Expr, value : Expr) -> Expr

    Desugar augmented array assignment

    desugar_array_get

    fn desugar_array_get(loc~ :
    Location
    , obj : Expr, index : Expr) -> Expr

    Desugar array get operation to method call

    desugar_array_set

    fn desugar_array_set(loc~ :
    Location
    , obj : Expr, index : Expr, value : Expr) -> Expr

    Desugar array set operation to method call

    label_to_expr

    fn label_to_expr(loc~ :
    Location
    , label : Label) -> Expr

    Convert label to expression

    label_to_pat

    fn label_to_pat(loc~ :
    Location
    , label : Label) -> Pattern

    Convert label to pattern

    loc_of_expression

    fn loc_of_expression(expr : Expr) ->
    Location

    make_alias_pattern

    fn make_alias_pattern(loc~ :
    Location
    , pat : Pattern, alias_ : Binder) -> Pattern

    Create alias pattern

    make_array_expr

    Create array expression with possible spread elements

    make_arrow_fn

    Create arrow function

    make_assign_opt

    fn make_assign_opt(loc~ :
    Location
    , lhs : Expr, rhs : Expr) -> Expr?

    Try to create assignment expression

    make_augmented_assign_opt

    fn make_augmented_assign_opt(loc~ :
    Location
    , op : Var, lhs : Expr, rhs : Expr) -> Expr?

    Try to create augmented assignment expression

    make_constant_expr

    fn make_constant_expr(loc~ :
    Location
    , c : Constant) -> Expr

    Create constant expression with location

    make_constant_pattern

    fn make_constant_pattern(loc~ :
    Location
    , c : Constant) -> Pattern

    Create constant pattern

    make_constr_pattern

    fn make_constr_pattern(loc~ :
    Location
    , constr : Constructor, args :
    List
    [ConstrPatArg]?, is_open : Bool) -> Pattern

    Create constructor pattern

    make_double

    fn make_double(f : String) -> Constant

    Create double constant

    make_field_def

    fn make_field_def(loc~ :
    Location
    , label : Label, expr : Expr, is_pun : Bool) -> FieldDef

    Create field definition

    make_field_pat

    fn make_field_pat(loc~ :
    Location
    , label : Label, pattern : Pattern, is_pun : Bool) -> FieldPat

    Create field pattern

    make_float

    fn make_float(f : String) -> Constant

    Create float constant

    make_ident_expr

    fn make_ident_expr(loc~ :
    Location
    , id : Var) -> Expr

    Create identifier expression

    make_int

    fn make_int(i : String) -> Constant

    Parse integer literal with suffix

    make_interp_expr

    Create interpolation expression

    make_interps

    Create interpolation elements from literal components

    make_option_type

    Create option type

    make_record_expr

    fn make_record_expr(loc~ :
    Location
    , trailing~ : TrailingMark, type_name : TypeName?, fields :
    List
    [FieldDef]) -> Expr

    Create record expression

    make_tuple_expr

    Create tuple expression

    make_tuple_pattern

    Create tuple pattern

    make_tuple_type

    Create tuple type

    make_uminus

    fn make_uminus(loc~ :
    Location
    , name : String, arg : Expr) -> Expr

    Create unary minus expression

    make_unot

    Create logical not expression

    make_uplus

    fn make_uplus(loc~ :
    Location
    , name : String, arg : Expr) -> Expr

    Create unary plus expression