package core:odin/ast
Overview
Abstract Syntax Tree for the Odin parser packages.
Index
Types (101)
- Any_Expr
- Any_Node
- Any_Stmt
- Array_Type
- Assign_Stmt
- Attribute
- Auto_Cast
- Bad_Decl
- Bad_Expr
- Bad_Stmt
- Basic_Directive
- Basic_Lit
- Binary_Expr
- Bit_Field_Field
- Bit_Field_Type
- Bit_Set_Type
- Block_Stmt
- Branch_Stmt
- Call_Expr
- Case_Clause
- Comment_Group
- Comp_Lit
- Decl
- Defer_Stmt
- Deref_Expr
- Distinct_Type
- Dynamic_Array_Type
- Ellipsis
- Empty_Stmt
- Enum_Type
- Expr
- Expr_Stmt
- Field
- Field_Flag
- Field_Flags
- Field_List
- Field_Value
- File
- For_Stmt
- Foreign_Block_Decl
- Foreign_Import_Decl
- Helper_Type
- Ident
- If_Stmt
- Implicit
- Implicit_Selector_Expr
- Import_Decl
- Index_Expr
- Inline_Asm_Dialect
- Inline_Asm_Expr
- Inline_Range_Stmt
- Map_Type
- Matrix_Index_Expr
- Matrix_Type
- Multi_Pointer_Type
- Node
- Node_State_Flag
- Node_State_Flags
- Or_Branch_Expr
- Or_Else_Expr
- Or_Return_Expr
- Package
- Package_Decl
- Package_Kind
- Paren_Expr
- Pointer_Type
- Poly_Type
- Proc_Calling_Convention
- Proc_Calling_Convention_Extra
- Proc_Group
- Proc_Inlining
- Proc_Lit
- Proc_Tag
- Proc_Tags
- Proc_Type
- Range_Stmt
- Relative_Type
- Return_Stmt
- Selector_Call_Expr
- Selector_Expr
- Slice_Expr
- Stmt
- Struct_Type
- Switch_Stmt
- Tag_Expr
- Tag_Stmt
- Ternary_If_Expr
- Ternary_When_Expr
- Type_Assertion
- Type_Cast
- Type_Switch_Stmt
- Typeid_Type
- Unary_Expr
- Undef
- Union_Type
- Union_Type_Kind
- Unroll_Range_Stmt
- Using_Stmt
- Value_Decl
- Visitor
- When_Stmt
Variables (2)
Types
Any_Expr ¶
Any_Expr :: union { ^Bad_Expr, ^Ident, ^Implicit, ^Undef, ^Basic_Lit, ^Basic_Directive, ^Ellipsis, ^Proc_Lit, ^Comp_Lit, ^Tag_Expr, ^Unary_Expr, ^Binary_Expr, ^Paren_Expr, ^Selector_Expr, ^Implicit_Selector_Expr, ^Selector_Call_Expr, ^Index_Expr, ^Deref_Expr, ^Slice_Expr, ^Matrix_Index_Expr, ^Call_Expr, ^Field_Value, ^Ternary_If_Expr, ^Ternary_When_Expr, ^Or_Else_Expr, ^Or_Return_Expr, ^Or_Branch_Expr, ^Type_Assertion, ^Type_Cast, ^Auto_Cast, ^Inline_Asm_Expr, ^Proc_Group, ^Typeid_Type, ^Helper_Type, ^Distinct_Type, ^Poly_Type, ^Proc_Type, ^Pointer_Type, ^Multi_Pointer_Type, ^Array_Type, ^Dynamic_Array_Type, ^Struct_Type, ^Union_Type, ^Enum_Type, ^Bit_Set_Type, ^Map_Type, ^Relative_Type, ^Matrix_Type, ^Bit_Field_Type, }
Any_Node ¶
Any_Node :: union { ^Package, ^File, ^Comment_Group, ^Bad_Expr, ^Ident, ^Implicit, ^Undef, ^Basic_Lit, ^Basic_Directive, ^Ellipsis, ^Proc_Lit, ^Comp_Lit, ^Tag_Expr, ^Unary_Expr, ^Binary_Expr, ^Paren_Expr, ^Selector_Expr, ^Implicit_Selector_Expr, ^Selector_Call_Expr, ^Index_Expr, ^Deref_Expr, ^Slice_Expr, ^Matrix_Index_Expr, ^Call_Expr, ^Field_Value, ^Ternary_If_Expr, ^Ternary_When_Expr, ^Or_Else_Expr, ^Or_Return_Expr, ^Or_Branch_Expr, ^Type_Assertion, ^Type_Cast, ^Auto_Cast, ^Inline_Asm_Expr, ^Proc_Group, ^Typeid_Type, ^Helper_Type, ^Distinct_Type, ^Poly_Type, ^Proc_Type, ^Pointer_Type, ^Multi_Pointer_Type, ^Array_Type, ^Dynamic_Array_Type, ^Struct_Type, ^Union_Type, ^Enum_Type, ^Bit_Set_Type, ^Map_Type, ^Relative_Type, ^Matrix_Type, ^Bit_Field_Type, ^Bad_Stmt, ^Empty_Stmt, ^Expr_Stmt, ^Tag_Stmt, ^Assign_Stmt, ^Block_Stmt, ^If_Stmt, ^When_Stmt, ^Return_Stmt, ^Defer_Stmt, ^For_Stmt, ^Range_Stmt, ^Unroll_Range_Stmt, ^Case_Clause, ^Switch_Stmt, ^Type_Switch_Stmt, ^Branch_Stmt, ^Using_Stmt, ^Bad_Decl, ^Value_Decl, ^Package_Decl, ^Import_Decl, ^Foreign_Block_Decl, ^Foreign_Import_Decl, ^Attribute, ^Field, ^Field_List, ^Bit_Field_Field, }
Any_Stmt ¶
Any_Stmt :: union { ^Bad_Stmt, ^Empty_Stmt, ^Expr_Stmt, ^Tag_Stmt, ^Assign_Stmt, ^Block_Stmt, ^If_Stmt, ^When_Stmt, ^Return_Stmt, ^Defer_Stmt, ^For_Stmt, ^Range_Stmt, ^Unroll_Range_Stmt, ^Case_Clause, ^Switch_Stmt, ^Type_Switch_Stmt, ^Branch_Stmt, ^Using_Stmt, ^Bad_Decl, ^Value_Decl, ^Package_Decl, ^Import_Decl, ^Foreign_Block_Decl, ^Foreign_Import_Decl, }
Array_Type ¶
Array_Type :: struct { using node: Expr, open: odin_tokenizer.Pos, tag: ^Expr, // possibly nil len: ^Expr, // Unary_Expr node for [?]T array types, nil for slice types close: odin_tokenizer.Pos, elem: ^Expr, }
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Assign_Stmt ¶
Procedures Through `using` From Stmt
- clone_stmt
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Attribute ¶
Attribute :: struct { using node: Node, tok: odin_tokenizer.Token_Kind, open: odin_tokenizer.Pos, elems: []^Expr, close: odin_tokenizer.Pos, }
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- clone (procedure groups)
- new (procedure groups)
Auto_Cast ¶
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Bad_Decl ¶
Bad_Decl :: struct { using node: Decl, }
Procedures Through `using` From Decl
- clone_decl
- clone (procedure groups)
Procedures Through `using` From Stmt
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Bad_Expr ¶
Bad_Expr :: struct { using node: Expr, }
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Bad_Stmt ¶
Bad_Stmt :: struct { using node: Stmt, }
Procedures Through `using` From Stmt
- clone_stmt
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Basic_Directive ¶
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Basic_Lit ¶
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Binary_Expr ¶
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Bit_Field_Field ¶
Bit_Field_Field :: struct { using node: Node, docs: ^Comment_Group, // possibly nil name: ^Expr, type: ^Expr, bit_size: ^Expr, tag: odin_tokenizer.Token, comments: ^Comment_Group, }
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- clone (procedure groups)
- new (procedure groups)
Bit_Field_Type ¶
Bit_Field_Type :: struct { using node: Expr, tok_pos: odin_tokenizer.Pos, backing_type: ^Expr, open: odin_tokenizer.Pos, fields: []^Bit_Field_Field, close: odin_tokenizer.Pos, }
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Bit_Set_Type ¶
Bit_Set_Type :: struct { using node: Expr, tok_pos: odin_tokenizer.Pos, open: odin_tokenizer.Pos, elem: ^Expr, underlying: ^Expr, // possibly nil close: odin_tokenizer.Pos, }
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Block_Stmt ¶
Block_Stmt :: struct { using node: Stmt, label: ^Expr, open: odin_tokenizer.Pos, stmts: []^Stmt, close: odin_tokenizer.Pos, uses_do: bool, }
Procedures Through `using` From Stmt
- clone_stmt
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Branch_Stmt ¶
Procedures Through `using` From Stmt
- clone_stmt
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Call_Expr ¶
Call_Expr :: struct { using node: Expr, inlining: Proc_Inlining, expr: ^Expr, open: odin_tokenizer.Pos, args: []^Expr, ellipsis: odin_tokenizer.Token, close: odin_tokenizer.Pos, }
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Case_Clause ¶
Case_Clause :: struct { using node: Stmt, case_pos: odin_tokenizer.Pos, list: []^Expr, terminator: odin_tokenizer.Token, body: []^Stmt, }
Procedures Through `using` From Stmt
- clone_stmt
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Comment_Group ¶
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- clone (procedure groups)
- new (procedure groups)
Comp_Lit ¶
Comp_Lit :: struct { using node: Expr, type: ^Expr, // nil when type is inferred open: odin_tokenizer.Pos, elems: []^Expr, close: odin_tokenizer.Pos, tag: ^Expr, }
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Decl ¶
Decl :: struct { using decl_base: Stmt, }
Related Procedures With Parameters
- clone_decl
- clone (procedure groups)
Procedures Through `using` From Stmt
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Defer_Stmt ¶
Procedures Through `using` From Stmt
- clone_stmt
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Deref_Expr ¶
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Distinct_Type ¶
Distinct_Type :: struct { using node: Expr, tok: odin_tokenizer.Token_Kind, type: ^Expr, }
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Dynamic_Array_Type ¶
Dynamic_Array_Type :: struct { using node: Expr, tag: ^Expr, // possibly nil open: odin_tokenizer.Pos, dynamic_pos: odin_tokenizer.Pos, close: odin_tokenizer.Pos, elem: ^Expr, }
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Ellipsis ¶
Ellipsis :: struct { using node: Expr, tok: odin_tokenizer.Token_Kind, expr: ^Expr, }
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Empty_Stmt ¶
Procedures Through `using` From Stmt
- clone_stmt
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Enum_Type ¶
Enum_Type :: struct { using node: Expr, tok_pos: odin_tokenizer.Pos, base_type: ^Expr, // possibly nil open: odin_tokenizer.Pos, fields: []^Expr, close: odin_tokenizer.Pos, is_using: bool, }
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Expr ¶
Related Procedures With Parameters
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Expr_Stmt ¶
Procedures Through `using` From Stmt
- clone_stmt
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Field ¶
Field :: struct { using node: Node, docs: ^Comment_Group, // possibly nil names: []^Expr, // Could be polymorphic type: ^Expr, default_value: ^Expr, // possibly nil tag: odin_tokenizer.Token, flags: Field_Flags, comment: ^Comment_Group, }
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- clone (procedure groups)
- new (procedure groups)
Field_Flag ¶
Field_Flag :: enum int { Invalid, Unknown, Ellipsis, Using, No_Alias, C_Vararg, Const, Any_Int, Subtype, By_Ptr, No_Broadcast, No_Capture, Results, Tags, Default_Parameters, Typeid_Token, }
Field_List ¶
Field_List :: struct { using node: Node, open: odin_tokenizer.Pos, list: []^Field, close: odin_tokenizer.Pos, }
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- clone (procedure groups)
- new (procedure groups)
Field_Value ¶
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
File ¶
File :: struct { using node: Node, id: int, pkg: ^Package, fullpath: string, src: string, tags: [dynamic]odin_tokenizer.Token, docs: ^Comment_Group, // possibly nil pkg_decl: ^Package_Decl, pkg_token: odin_tokenizer.Token, pkg_name: string, decls: [dynamic]^Stmt, imports: [dynamic]^Import_Decl, directive_count: int, comments: [dynamic]^Comment_Group, syntax_warning_count: int, syntax_error_count: int, }
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- clone (procedure groups)
- new (procedure groups)
For_Stmt ¶
For_Stmt :: struct { using node: Stmt, label: ^Expr, // possibly nil for_pos: odin_tokenizer.Pos, init: ^Stmt, // possibly nil cond: ^Expr, // possibly nil post: ^Stmt, // possibly nil body: ^Stmt, }
Procedures Through `using` From Stmt
- clone_stmt
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Foreign_Block_Decl ¶
Foreign_Block_Decl :: struct { using node: Decl, docs: ^Comment_Group, // possibly nil attributes: [dynamic]^Attribute, // dynamic as parsing will add to them lazily tok: odin_tokenizer.Token, foreign_library: ^Expr, // possibly nil body: ^Stmt, }
Procedures Through `using` From Decl
- clone_decl
- clone (procedure groups)
Procedures Through `using` From Stmt
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Foreign_Import_Decl ¶
Foreign_Import_Decl :: struct { using node: Decl, docs: ^Comment_Group, // possibly nil attributes: [dynamic]^Attribute, // dynamic as parsing will add to them lazily foreign_tok: odin_tokenizer.Token, import_tok: odin_tokenizer.Token, name: ^Ident, // possibly nil collection_name: string, fullpaths: []^Expr, comment: ^Comment_Group, }
Procedures Through `using` From Decl
- clone_decl
- clone (procedure groups)
Procedures Through `using` From Stmt
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Helper_Type ¶
Helper_Type :: struct { using node: Expr, tok: odin_tokenizer.Token_Kind, type: ^Expr, }
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Ident ¶
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
If_Stmt ¶
If_Stmt :: struct { using node: Stmt, label: ^Expr, // possibly nil if_pos: odin_tokenizer.Pos, init: ^Stmt, // possibly nil cond: ^Expr, body: ^Stmt, else_pos: odin_tokenizer.Pos, else_stmt: ^Stmt, }
Procedures Through `using` From Stmt
- clone_stmt
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Implicit ¶
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Implicit_Selector_Expr ¶
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Import_Decl ¶
Import_Decl :: struct { using node: Decl, docs: ^Comment_Group, // possibly nil attributes: [dynamic]^Attribute, // dynamic as parsing will add to them lazily is_using: bool, import_tok: odin_tokenizer.Token, name: odin_tokenizer.Token, relpath: odin_tokenizer.Token, fullpath: string, comment: ^Comment_Group, }
Procedures Through `using` From Decl
- clone_decl
- clone (procedure groups)
Procedures Through `using` From Stmt
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Index_Expr ¶
Index_Expr :: struct { using node: Expr, expr: ^Expr, open: odin_tokenizer.Pos, index: ^Expr, close: odin_tokenizer.Pos, }
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Inline_Asm_Dialect ¶
Inline_Asm_Dialect :: enum u8 { Default = 0, ATT = 1, Intel = 2, }
Inline_Asm_Expr ¶
Inline_Asm_Expr :: struct { using node: Expr, tok: odin_tokenizer.Token, param_types: []^Expr, return_type: ^Expr, has_side_effects: bool, is_align_stack: bool, dialect: Inline_Asm_Dialect, open: odin_tokenizer.Pos, constraints_string: ^Expr, asm_string: ^Expr, close: odin_tokenizer.Pos, }
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Inline_Range_Stmt ¶
Inline_Range_Stmt :: Unroll_Range_Stmt
Procedures Through `using` From Stmt
- clone_stmt
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Map_Type ¶
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Matrix_Index_Expr ¶
Matrix_Index_Expr :: struct { using node: Expr, expr: ^Expr, open: odin_tokenizer.Pos, row_index: ^Expr, column_index: ^Expr, close: odin_tokenizer.Pos, }
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Matrix_Type ¶
Matrix_Type :: struct { using node: Expr, tok_pos: odin_tokenizer.Pos, row_count: ^Expr, column_count: ^Expr, elem: ^Expr, }
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Multi_Pointer_Type ¶
Multi_Pointer_Type :: struct { using node: Expr, open: odin_tokenizer.Pos, pointer: odin_tokenizer.Pos, close: odin_tokenizer.Pos, elem: ^Expr, }
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Node ¶
Node :: struct { pos: odin_tokenizer.Pos, end: odin_tokenizer.Pos, state_flags: Node_State_Flags, derived: Any_Node, }
Related Procedures With Parameters
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- clone (procedure groups)
- new (procedure groups)
Node_State_Flag ¶
Node_State_Flag :: enum int { Bounds_Check, No_Bounds_Check, Type_Assert, No_Type_Assert, }
Node_State_Flags ¶
Node_State_Flags :: distinct bit_set[Node_State_Flag]
Or_Branch_Expr ¶
Or_Branch_Expr :: struct { using node: Expr, expr: ^Expr, token: odin_tokenizer.Token, label: ^Expr, }
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Or_Else_Expr ¶
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Or_Return_Expr ¶
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Package ¶
Package :: struct { using node: Node, kind: Package_Kind, id: int, name: string, fullpath: string, files: map[string]^File, user_data: rawptr, }
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- clone (procedure groups)
- new (procedure groups)
Package_Decl ¶
Package_Decl :: struct { using node: Decl, docs: ^Comment_Group, // possibly nil token: odin_tokenizer.Token, name: string, comment: ^Comment_Group, }
Procedures Through `using` From Decl
- clone_decl
- clone (procedure groups)
Procedures Through `using` From Stmt
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Package_Kind ¶
Package_Kind :: enum int { Normal, Runtime, Init, }
Paren_Expr ¶
Paren_Expr :: struct { using node: Expr, open: odin_tokenizer.Pos, expr: ^Expr, close: odin_tokenizer.Pos, }
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Pointer_Type ¶
Pointer_Type :: struct { using node: Expr, tag: ^Expr, // possibly nil pointer: odin_tokenizer.Pos, elem: ^Expr, }
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Poly_Type ¶
Poly_Type :: struct { using node: Expr, dollar: odin_tokenizer.Pos, type: ^Ident, specialization: ^Expr, }
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Proc_Calling_Convention ¶
Proc_Calling_Convention :: union { string, Proc_Calling_Convention_Extra, }
Proc_Calling_Convention_Extra ¶
Proc_Calling_Convention_Extra :: enum i32 { Foreign_Block_Default, }
Proc_Group ¶
Proc_Group :: struct { using node: Expr, tok: odin_tokenizer.Token, open: odin_tokenizer.Pos, args: []^Expr, close: odin_tokenizer.Pos, }
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Proc_Inlining ¶
Proc_Inlining :: enum u32 { None = 0, Inline = 1, No_Inline = 2, }
Proc_Lit ¶
Proc_Lit :: struct { using node: Expr, type: ^Proc_Type, body: ^Stmt, // nil when it represents a foreign procedure tags: Proc_Tags, inlining: Proc_Inlining, where_token: odin_tokenizer.Token, where_clauses: []^Expr, }
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Proc_Tag ¶
Proc_Tag :: enum int { Bounds_Check, No_Bounds_Check, Optional_Ok, Optional_Allocator_Error, }
Proc_Type ¶
Proc_Type :: struct { using node: Expr, tok: odin_tokenizer.Token, calling_convention: Proc_Calling_Convention, params: ^Field_List, arrow: odin_tokenizer.Pos, results: ^Field_List, tags: Proc_Tags, generic: bool, diverging: bool, }
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Range_Stmt ¶
Range_Stmt :: struct { using node: Stmt, label: ^Expr, // possibly nil for_pos: odin_tokenizer.Pos, vals: []^Expr, in_pos: odin_tokenizer.Pos, expr: ^Expr, body: ^Stmt, reverse: bool, }
Procedures Through `using` From Stmt
- clone_stmt
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Relative_Type ¶
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Return_Stmt ¶
Procedures Through `using` From Stmt
- clone_stmt
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Selector_Call_Expr ¶
Selector_Call_Expr :: struct { using node: Expr, expr: ^Expr, call: ^Call_Expr, modified_call: bool, }
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Selector_Expr ¶
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Slice_Expr ¶
Slice_Expr :: struct { using node: Expr, expr: ^Expr, open: odin_tokenizer.Pos, low: ^Expr, // possibly nil interval: odin_tokenizer.Token, high: ^Expr, // possibly nil close: odin_tokenizer.Pos, }
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Stmt ¶
Related Procedures With Parameters
- clone_stmt
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Struct_Type ¶
Struct_Type :: struct { using node: Expr, tok_pos: odin_tokenizer.Pos, poly_params: ^Field_List, // possibly nil align: ^Expr, // possibly nil min_field_align: ^Expr, // possibly nil max_field_align: ^Expr, // possibly nil where_token: odin_tokenizer.Token, where_clauses: []^Expr, is_packed: bool, is_raw_union: bool, is_no_copy: bool, fields: ^Field_List, name_count: int, }
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Switch_Stmt ¶
Switch_Stmt :: struct { using node: Stmt, label: ^Expr, // possibly nil switch_pos: odin_tokenizer.Pos, init: ^Stmt, // possibly nil cond: ^Expr, body: ^Stmt, partial: bool, }
Procedures Through `using` From Stmt
- clone_stmt
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Tag_Expr ¶
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Tag_Stmt ¶
Procedures Through `using` From Stmt
- clone_stmt
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Ternary_If_Expr ¶
Ternary_If_Expr :: struct { using node: Expr, x: ^Expr, op1: odin_tokenizer.Token, cond: ^Expr, op2: odin_tokenizer.Token, y: ^Expr, }
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Ternary_When_Expr ¶
Ternary_When_Expr :: struct { using node: Expr, x: ^Expr, op1: odin_tokenizer.Token, cond: ^Expr, op2: odin_tokenizer.Token, y: ^Expr, }
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Type_Assertion ¶
Type_Assertion :: struct { using node: Expr, expr: ^Expr, dot: odin_tokenizer.Pos, open: odin_tokenizer.Pos, type: ^Expr, close: odin_tokenizer.Pos, }
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Type_Cast ¶
Type_Cast :: struct { using node: Expr, tok: odin_tokenizer.Token, open: odin_tokenizer.Pos, type: ^Expr, close: odin_tokenizer.Pos, expr: ^Expr, }
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Type_Switch_Stmt ¶
Type_Switch_Stmt :: struct { using node: Stmt, label: ^Expr, // possibly nil switch_pos: odin_tokenizer.Pos, tag: ^Stmt, expr: ^Expr, body: ^Stmt, partial: bool, }
Procedures Through `using` From Stmt
- clone_stmt
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Typeid_Type ¶
Typeid_Type :: struct { using node: Expr, tok: odin_tokenizer.Token_Kind, specialization: ^Expr, }
Types
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Unary_Expr ¶
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Undef ¶
Undef :: struct { using node: Expr, tok: odin_tokenizer.Token_Kind, }
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Union_Type ¶
Union_Type :: struct { using node: Expr, tok_pos: odin_tokenizer.Pos, poly_params: ^Field_List, // possibly nil align: ^Expr, // possibly nil kind: Union_Type_Kind, where_token: odin_tokenizer.Token, where_clauses: []^Expr, variants: []^Expr, }
Procedures Through `using` From Expr
- clone_expr
- strip_or_return_expr
- unparen_expr
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Union_Type_Kind ¶
Union_Type_Kind :: enum u8 { Normal, maybe, no_nil, shared_nil, }
Unroll_Range_Stmt ¶
Unroll_Range_Stmt :: struct { using node: Stmt, label: ^Expr, // possibly nil unroll_pos: odin_tokenizer.Pos, args: []^Expr, for_pos: odin_tokenizer.Pos, val0: ^Expr, val1: ^Expr, // possibly nil in_pos: odin_tokenizer.Pos, expr: ^Expr, body: ^Stmt, }
Procedures Through `using` From Stmt
- clone_stmt
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Using_Stmt ¶
Procedures Through `using` From Stmt
- clone_stmt
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Value_Decl ¶
Value_Decl :: struct { using node: Decl, docs: ^Comment_Group, // possibly nil attributes: [dynamic]^Attribute, // dynamic as parsing will add to them lazily names: []^Expr, type: ^Expr, // possibly nil values: []^Expr, comment: ^Comment_Group, // possibly nil is_using: bool, is_mutable: bool, }
Procedures Through `using` From Decl
- clone_decl
- clone (procedure groups)
Procedures Through `using` From Stmt
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Visitor ¶
A Visitor's visit procedure is invoked for each node encountered by walk If the result visitor is not nil, walk visits each of the children of node with the new visitor, followed by a call of v.visit(v, nil)
Related Procedures With Parameters
When_Stmt ¶
When_Stmt :: struct { using node: Stmt, when_pos: odin_tokenizer.Pos, cond: ^Expr, body: ^Stmt, else_stmt: ^Stmt, }
Procedures Through `using` From Stmt
- clone_stmt
- clone (procedure groups)
Procedures Through `using` From Node
- clone_node
- inspect
- new_from_pos_and_end_node
- walk
- new (procedure groups)
Constants
Field_Flags_Record_Poly_Params ¶
Field_Flags_Record_Poly_Params :: Field_Flags{.Typeid_Token, .Default_Parameters}
Field_Flags_Signature ¶
Field_Flags_Signature :: Field_Flags{.Ellipsis, .Using, .No_Alias, .C_Vararg, .Const, .Any_Int, .By_Ptr, .No_Broadcast, .Default_Parameters}
Field_Flags_Signature_Params ¶
Field_Flags_Signature_Params :: Field_Flags_Signature | {Field_Flag.Typeid_Token}
Field_Flags_Signature_Results ¶
Field_Flags_Signature_Results :: Field_Flags_Signature
Field_Flags_Struct ¶
Field_Flags_Struct :: Field_Flags{.Using, .Tags, .Subtype}
Variables
field_flag_strings ¶
field_flag_strings: [Field_Flag]string = …
field_hash_flag_strings ¶
field_hash_flag_strings: []struct { key: string, flag: Field_Flag, } = …
Procedures
clone_dynamic_array ¶
clone_dynamic_array :: proc(array: $A/[dynamic]^$T) -> $A/[dynamic]^$T {…}
Related Procedure Groups
inspect ¶
inspect traverses an AST in depth-first order It starts by calling f(node), and node must be non-nil If f returns true, inspect invokes f recursively for each of the non-nil children of node, followed by a call of f(nil)
new_from_pos_and_end_node ¶
Related Procedure Groups
new_from_positions ¶
Related Procedure Groups
walk ¶
walk traverses an AST in depth-first order: It starts by calling v.visit(v, node), and node must not be nil If the visitor returned by v.visit(v, node) is not nil, walk is invoked recursively with the new visitor for each of the non-nil children of node, followed by a call of the new visit procedure
Procedure Groups
clone ¶
clone :: proc{ clone_node, clone_expr, clone_stmt, clone_decl, clone_array, clone_dynamic_array, }
new ¶
new :: proc{ new_from_positions, new_from_pos_and_end_node, }
Source Files
Generation Information
Generated with odin version dev-2025-10 (vendor "odin") Windows_amd64 @ 2025-10-28 21:13:04.814431500 +0000 UTC