diff options
| author | DanielGavin <danielgavin5@hotmail.com> | 2020-11-09 23:55:10 +0100 |
|---|---|---|
| committer | DanielGavin <danielgavin5@hotmail.com> | 2020-11-09 23:55:10 +0100 |
| commit | b08dcc40c81212755f6143ab47c7bc3dd746417d (patch) | |
| tree | 16a06d63d6d35f054429b99e61205595b2206d1e /src | |
| parent | f9416ac2e7ebef3b881305467edad22ea411603e (diff) | |
wrong format - need odin formatter pls
Diffstat (limited to 'src')
| -rw-r--r-- | src/common/pretty.odin | 386 | ||||
| -rw-r--r-- | src/server/analysis.odin | 384 |
2 files changed, 385 insertions, 385 deletions
diff --git a/src/common/pretty.odin b/src/common/pretty.odin index 503d181..d2a4d77 100644 --- a/src/common/pretty.odin +++ b/src/common/pretty.odin @@ -9,24 +9,24 @@ import "core:fmt" */ print_ast :: proc{ - print_ast_array, - print_ast_dynamic_array, - print_ast_node, + print_ast_array, + print_ast_dynamic_array, + print_ast_node, }; print_ast_array :: proc(array: $A/[]^$T, depth: int, src: []byte, newline := false) { - for elem, i in array { - print_ast(elem, depth, src); - } + for elem, i in array { + print_ast(elem, depth, src); + } } print_ast_dynamic_array :: proc(array: $A/[dynamic]^$T, depth: int, src: []byte, newline := false) { - for elem, i in array { - print_ast(elem, depth, src); - } + for elem, i in array { + print_ast(elem, depth, src); + } } @@ -38,9 +38,9 @@ print_ast_node :: proc(node: ^ast.Node, depth: int, src: []byte, newline := fals using ast; - if node == nil { - return; - } + if node == nil { + return; + } if newline { fmt.println(); @@ -53,197 +53,197 @@ print_ast_node :: proc(node: ^ast.Node, depth: int, src: []byte, newline := fals name := string(src[node.pos.offset:node.end.offset]); - switch n in node.derived { - case Bad_Expr: - case Ident: + switch n in node.derived { + case Bad_Expr: + case Ident: fmt.printf(" %v ", n.name); - case Implicit: - case Undef: - case Basic_Lit: - case Ellipsis: - print_ast(n.expr, depth + 1, src); - case Proc_Lit: + case Implicit: + case Undef: + case Basic_Lit: + case Ellipsis: + print_ast(n.expr, depth + 1, src); + case Proc_Lit: fmt.printf("function"); - print_ast(n.type, depth + 1, src); - print_ast(n.body, depth + 1, src, true); - case Comp_Lit: - print_ast(n.type, depth + 1, src); - print_ast(n.elems, depth + 1, src); - case Tag_Expr: - print_ast(n.expr, depth + 1, src); - case Unary_Expr: - print_ast(n.expr, depth + 1, src); - case Binary_Expr: - print_ast(n.left, depth + 1, src); + print_ast(n.type, depth + 1, src); + print_ast(n.body, depth + 1, src, true); + case Comp_Lit: + print_ast(n.type, depth + 1, src); + print_ast(n.elems, depth + 1, src); + case Tag_Expr: + print_ast(n.expr, depth + 1, src); + case Unary_Expr: + print_ast(n.expr, depth + 1, src); + case Binary_Expr: + print_ast(n.left, depth + 1, src); fmt.printf("%v", n.op.text); - print_ast(n.right, depth + 1, src); - case Paren_Expr: - print_ast(n.expr, depth + 1, src); + print_ast(n.right, depth + 1, src); + case Paren_Expr: + print_ast(n.expr, depth + 1, src); case Call_Expr: fmt.printf("call"); print_ast(n.expr, depth + 1, src); fmt.printf("("); - print_ast(n.args, depth + 1, src); + print_ast(n.args, depth + 1, src); fmt.printf(")"); - case Selector_Expr: - print_ast(n.expr, depth + 1, src); + case Selector_Expr: + print_ast(n.expr, depth + 1, src); fmt.printf("."); - print_ast(n.field, depth + 1, src); - case Index_Expr: - print_ast(n.expr, depth + 1, src); - print_ast(n.index, depth + 1, src); - case Deref_Expr: - print_ast(n.expr, depth + 1, src); - case Slice_Expr: - print_ast(n.expr, depth + 1, src); - print_ast(n.low, depth + 1, src); - print_ast(n.high, depth + 1, src); - case Field_Value: - print_ast(n.field, depth + 1, src); - print_ast(n.value, depth + 1, src); - case Ternary_Expr: - print_ast(n.cond, depth + 1, src); - print_ast(n.x, depth + 1, src); - print_ast(n.y, depth + 1, src); - case Ternary_If_Expr: - print_ast(n.x, depth + 1, src); - print_ast(n.cond, depth + 1, src); - print_ast(n.y, depth + 1, src); - case Ternary_When_Expr: - print_ast(n.x, depth + 1, src); - print_ast(n.cond, depth + 1, src); - print_ast(n.y, depth + 1, src); - case Type_Assertion: - print_ast(n.expr, depth + 1, src); - print_ast(n.type, depth + 1, src); - case Type_Cast: - print_ast(n.type, depth + 1, src); - print_ast(n.expr, depth + 1, src); - case Auto_Cast: - print_ast(n.expr, depth + 1, src); - case Bad_Stmt: - case Empty_Stmt: - case Expr_Stmt: - print_ast(n.expr, depth + 1, src); - case Tag_Stmt: + print_ast(n.field, depth + 1, src); + case Index_Expr: + print_ast(n.expr, depth + 1, src); + print_ast(n.index, depth + 1, src); + case Deref_Expr: + print_ast(n.expr, depth + 1, src); + case Slice_Expr: + print_ast(n.expr, depth + 1, src); + print_ast(n.low, depth + 1, src); + print_ast(n.high, depth + 1, src); + case Field_Value: + print_ast(n.field, depth + 1, src); + print_ast(n.value, depth + 1, src); + case Ternary_Expr: + print_ast(n.cond, depth + 1, src); + print_ast(n.x, depth + 1, src); + print_ast(n.y, depth + 1, src); + case Ternary_If_Expr: + print_ast(n.x, depth + 1, src); + print_ast(n.cond, depth + 1, src); + print_ast(n.y, depth + 1, src); + case Ternary_When_Expr: + print_ast(n.x, depth + 1, src); + print_ast(n.cond, depth + 1, src); + print_ast(n.y, depth + 1, src); + case Type_Assertion: + print_ast(n.expr, depth + 1, src); + print_ast(n.type, depth + 1, src); + case Type_Cast: + print_ast(n.type, depth + 1, src); + print_ast(n.expr, depth + 1, src); + case Auto_Cast: + print_ast(n.expr, depth + 1, src); + case Bad_Stmt: + case Empty_Stmt: + case Expr_Stmt: + print_ast(n.expr, depth + 1, src); + case Tag_Stmt: r := cast(^Expr_Stmt)node; - print_ast(r.expr, depth + 1, src); - case Assign_Stmt: - print_ast(n.lhs, depth + 1, src); - print_ast(n.rhs, depth + 1, src); - case Block_Stmt: - print_ast(n.label, depth + 1, src); - print_ast(n.stmts, depth + 1, src); - case If_Stmt: - print_ast(n.label, depth + 1, src); - print_ast(n.init, depth + 1, src); - print_ast(n.cond, depth + 1, src); - print_ast(n.body, depth + 1, src); - print_ast(n.else_stmt, depth + 1, src); - case When_Stmt: - print_ast(n.cond, depth + 1, src); - print_ast(n.body, depth + 1, src); - print_ast(n.else_stmt, depth + 1, src); - case Return_Stmt: - print_ast(n.results, depth + 1, src); - case Defer_Stmt: - print_ast(n.stmt, depth + 1, src); - case For_Stmt: - print_ast(n.label, depth + 1, src); - print_ast(n.init, depth + 1, src); - print_ast(n.cond, depth + 1, src); - print_ast(n.post, depth + 1, src); - print_ast(n.body, depth + 1, src); - case Range_Stmt: - print_ast(n.label, depth + 1, src); - print_ast(n.val0, depth + 1, src); - print_ast(n.val1, depth + 1, src); - print_ast(n.expr, depth + 1, src); - print_ast(n.body, depth + 1, src); - case Case_Clause: - print_ast(n.list, depth + 1, src); - print_ast(n.body, depth + 1, src); - case Switch_Stmt: - print_ast(n.label, depth + 1, src); - print_ast(n.init, depth + 1, src); - print_ast(n.cond, depth + 1, src); - print_ast(n.body, depth + 1, src); - case Type_Switch_Stmt: - print_ast(n.label, depth + 1, src); - print_ast(n.tag, depth + 1, src); - print_ast(n.expr, depth + 1, src); - print_ast(n.body, depth + 1, src); - case Branch_Stmt: - print_ast(n.label, depth + 1, src); - case Using_Stmt: - print_ast(n.list, depth + 1, src); - case Bad_Decl: - case Value_Decl: - print_ast(n.attributes, depth + 1, src); - print_ast(n.names, depth + 1, src); - print_ast(n.type, depth + 1, src); - print_ast(n.values, depth + 1, src); + print_ast(r.expr, depth + 1, src); + case Assign_Stmt: + print_ast(n.lhs, depth + 1, src); + print_ast(n.rhs, depth + 1, src); + case Block_Stmt: + print_ast(n.label, depth + 1, src); + print_ast(n.stmts, depth + 1, src); + case If_Stmt: + print_ast(n.label, depth + 1, src); + print_ast(n.init, depth + 1, src); + print_ast(n.cond, depth + 1, src); + print_ast(n.body, depth + 1, src); + print_ast(n.else_stmt, depth + 1, src); + case When_Stmt: + print_ast(n.cond, depth + 1, src); + print_ast(n.body, depth + 1, src); + print_ast(n.else_stmt, depth + 1, src); + case Return_Stmt: + print_ast(n.results, depth + 1, src); + case Defer_Stmt: + print_ast(n.stmt, depth + 1, src); + case For_Stmt: + print_ast(n.label, depth + 1, src); + print_ast(n.init, depth + 1, src); + print_ast(n.cond, depth + 1, src); + print_ast(n.post, depth + 1, src); + print_ast(n.body, depth + 1, src); + case Range_Stmt: + print_ast(n.label, depth + 1, src); + print_ast(n.val0, depth + 1, src); + print_ast(n.val1, depth + 1, src); + print_ast(n.expr, depth + 1, src); + print_ast(n.body, depth + 1, src); + case Case_Clause: + print_ast(n.list, depth + 1, src); + print_ast(n.body, depth + 1, src); + case Switch_Stmt: + print_ast(n.label, depth + 1, src); + print_ast(n.init, depth + 1, src); + print_ast(n.cond, depth + 1, src); + print_ast(n.body, depth + 1, src); + case Type_Switch_Stmt: + print_ast(n.label, depth + 1, src); + print_ast(n.tag, depth + 1, src); + print_ast(n.expr, depth + 1, src); + print_ast(n.body, depth + 1, src); + case Branch_Stmt: + print_ast(n.label, depth + 1, src); + case Using_Stmt: + print_ast(n.list, depth + 1, src); + case Bad_Decl: + case Value_Decl: + print_ast(n.attributes, depth + 1, src); + print_ast(n.names, depth + 1, src); + print_ast(n.type, depth + 1, src); + print_ast(n.values, depth + 1, src); fmt.println(); - case Package_Decl: - case Import_Decl: - case Foreign_Block_Decl: - print_ast(n.attributes, depth + 1, src); - print_ast(n.foreign_library, depth + 1, src); - print_ast(n.body, depth + 1, src); - case Foreign_Import_Decl: - print_ast(n.name, depth + 1, src); - case Proc_Group: - print_ast(n.args, depth + 1, src); - case Attribute: - print_ast(n.elems, depth + 1, src); - case Field: - print_ast(n.names, depth + 1, src); - print_ast(n.type, depth + 1, src); - print_ast(n.default_value, depth + 1, src); - case Field_List: - print_ast(n.list, depth + 1, src); - case Typeid_Type: - print_ast(n.specialization, depth + 1, src); - case Helper_Type: - print_ast(n.type, depth + 1, src); - case Distinct_Type: - print_ast(n.type, depth + 1, src); - case Opaque_Type: - print_ast(n.type, depth + 1, src); - case Poly_Type: - print_ast(n.type, depth + 1, src); - print_ast(n.specialization, depth + 1, src); - case Proc_Type: - print_ast(n.params, depth + 1, src); - print_ast(n.results, depth + 1, src); - case Pointer_Type: - print_ast(n.elem, depth + 1, src); - case Array_Type: - print_ast(n.len, depth + 1, src); - print_ast(n.elem, depth + 1, src); - case Dynamic_Array_Type: - print_ast(n.elem, depth + 1, src); - case Struct_Type: - print_ast(n.poly_params, depth + 1, src); - print_ast(n.align, depth + 1, src); - print_ast(n.fields, depth + 1, src); - case Union_Type: - print_ast(n.poly_params, depth + 1, src); - print_ast(n.align, depth + 1, src); - print_ast(n.variants, depth + 1, src); - case Enum_Type: - print_ast(n.base_type, depth + 1, src); - print_ast(n.fields, depth + 1, src); - case Bit_Field_Type: - print_ast(n.fields, depth + 1, src); - case Bit_Set_Type: - print_ast(n.elem, depth + 1, src); - print_ast(n.underlying, depth + 1, src); - case Map_Type: - print_ast(n.key, depth + 1, src); - print_ast(n.value, depth + 1, src); - case: - fmt.panicf("Unhandled node kind: %T", n); - } + case Package_Decl: + case Import_Decl: + case Foreign_Block_Decl: + print_ast(n.attributes, depth + 1, src); + print_ast(n.foreign_library, depth + 1, src); + print_ast(n.body, depth + 1, src); + case Foreign_Import_Decl: + print_ast(n.name, depth + 1, src); + case Proc_Group: + print_ast(n.args, depth + 1, src); + case Attribute: + print_ast(n.elems, depth + 1, src); + case Field: + print_ast(n.names, depth + 1, src); + print_ast(n.type, depth + 1, src); + print_ast(n.default_value, depth + 1, src); + case Field_List: + print_ast(n.list, depth + 1, src); + case Typeid_Type: + print_ast(n.specialization, depth + 1, src); + case Helper_Type: + print_ast(n.type, depth + 1, src); + case Distinct_Type: + print_ast(n.type, depth + 1, src); + case Opaque_Type: + print_ast(n.type, depth + 1, src); + case Poly_Type: + print_ast(n.type, depth + 1, src); + print_ast(n.specialization, depth + 1, src); + case Proc_Type: + print_ast(n.params, depth + 1, src); + print_ast(n.results, depth + 1, src); + case Pointer_Type: + print_ast(n.elem, depth + 1, src); + case Array_Type: + print_ast(n.len, depth + 1, src); + print_ast(n.elem, depth + 1, src); + case Dynamic_Array_Type: + print_ast(n.elem, depth + 1, src); + case Struct_Type: + print_ast(n.poly_params, depth + 1, src); + print_ast(n.align, depth + 1, src); + print_ast(n.fields, depth + 1, src); + case Union_Type: + print_ast(n.poly_params, depth + 1, src); + print_ast(n.align, depth + 1, src); + print_ast(n.variants, depth + 1, src); + case Enum_Type: + print_ast(n.base_type, depth + 1, src); + print_ast(n.fields, depth + 1, src); + case Bit_Field_Type: + print_ast(n.fields, depth + 1, src); + case Bit_Set_Type: + print_ast(n.elem, depth + 1, src); + print_ast(n.underlying, depth + 1, src); + case Map_Type: + print_ast(n.key, depth + 1, src); + print_ast(n.value, depth + 1, src); + case: + fmt.panicf("Unhandled node kind: %T", n); + } }
\ No newline at end of file diff --git a/src/server/analysis.odin b/src/server/analysis.odin index 1996041..98639c2 100644 --- a/src/server/analysis.odin +++ b/src/server/analysis.odin @@ -198,24 +198,24 @@ get_document_position_context :: proc(document: ^Document, position: common.Posi } get_document_position :: proc{ - get_document_position_array, - get_document_position_dynamic_array, - get_document_position_node, + get_document_position_array, + get_document_position_dynamic_array, + get_document_position_node, }; get_document_position_array :: proc(array: $A/[]^$T, position_context: ^DocumentPositionContext) { - for elem, i in array { - get_document_position(elem, position_context); - } + for elem, i in array { + get_document_position(elem, position_context); + } } get_document_position_dynamic_array :: proc(array: $A/[dynamic]^$T, position_context: ^DocumentPositionContext) { - for elem, i in array { - get_document_position(elem, position_context); - } + for elem, i in array { + get_document_position(elem, position_context); + } } @@ -227,211 +227,211 @@ get_document_position_node :: proc(node: ^ast.Node, position_context: ^DocumentP using ast; - if node == nil { - return; - } + if node == nil { + return; + } if !(node.pos.offset <= position_context.position && position_context.position <= node.end.offset) { return; } - switch n in node.derived { - case Bad_Expr: - case Ident: + switch n in node.derived { + case Bad_Expr: + case Ident: position_context.identifier = node; return; - case Implicit: - case Undef: - case Basic_Lit: - case Ellipsis: - get_document_position(n.expr, position_context); - case Proc_Lit: - get_document_position(n.type, position_context); + case Implicit: + case Undef: + case Basic_Lit: + case Ellipsis: + get_document_position(n.expr, position_context); + case Proc_Lit: + get_document_position(n.type, position_context); if position_in_node(n.body, position_context.position) { position_context.function = node; - get_document_position(n.body, position_context); + get_document_position(n.body, position_context); return; } - case Comp_Lit: - get_document_position(n.type, position_context); - get_document_position(n.elems, position_context); - case Tag_Expr: - get_document_position(n.expr, position_context); - case Unary_Expr: - get_document_position(n.expr, position_context); - case Binary_Expr: - get_document_position(n.left, position_context); - get_document_position(n.right, position_context); - case Paren_Expr: - get_document_position(n.expr, position_context); + case Comp_Lit: + get_document_position(n.type, position_context); + get_document_position(n.elems, position_context); + case Tag_Expr: + get_document_position(n.expr, position_context); + case Unary_Expr: + get_document_position(n.expr, position_context); + case Binary_Expr: + get_document_position(n.left, position_context); + get_document_position(n.right, position_context); + case Paren_Expr: + get_document_position(n.expr, position_context); case Call_Expr: - get_document_position(n.expr, position_context); - get_document_position(n.args, position_context); - case Selector_Expr: - get_document_position(n.expr, position_context); + get_document_position(n.expr, position_context); + get_document_position(n.args, position_context); + case Selector_Expr: + get_document_position(n.expr, position_context); if position_in_node(n.field, position_context.position) { position_context.selector = n.expr; position_context.field = n.field; - get_document_position(n.field, position_context); + get_document_position(n.field, position_context); return; } - case Index_Expr: + case Index_Expr: get_document_position(n.expr, position_context); get_document_position(n.index, position_context); - case Deref_Expr: - get_document_position(n.expr, position_context); - case Slice_Expr: - get_document_position(n.expr, position_context); - get_document_position(n.low, position_context); - get_document_position(n.high, position_context); - case Field_Value: - get_document_position(n.field, position_context); - get_document_position(n.value, position_context); - case Ternary_Expr: - get_document_position(n.cond, position_context); - get_document_position(n.x, position_context); - get_document_position(n.y, position_context); - case Ternary_If_Expr: - get_document_position(n.x, position_context); - get_document_position(n.cond, position_context); - get_document_position(n.y, position_context); - case Ternary_When_Expr: - get_document_position(n.x, position_context); - get_document_position(n.cond, position_context); - get_document_position(n.y, position_context); - case Type_Assertion: - get_document_position(n.expr, position_context); - get_document_position(n.type, position_context); - case Type_Cast: - get_document_position(n.type, position_context); - get_document_position(n.expr, position_context); - case Auto_Cast: - get_document_position(n.expr, position_context); - case Bad_Stmt: - case Empty_Stmt: - case Expr_Stmt: - get_document_position(n.expr, position_context); - case Tag_Stmt: + case Deref_Expr: + get_document_position(n.expr, position_context); + case Slice_Expr: + get_document_position(n.expr, position_context); + get_document_position(n.low, position_context); + get_document_position(n.high, position_context); + case Field_Value: + get_document_position(n.field, position_context); + get_document_position(n.value, position_context); + case Ternary_Expr: + get_document_position(n.cond, position_context); + get_document_position(n.x, position_context); + get_document_position(n.y, position_context); + case Ternary_If_Expr: + get_document_position(n.x, position_context); + get_document_position(n.cond, position_context); + get_document_position(n.y, position_context); + case Ternary_When_Expr: + get_document_position(n.x, position_context); + get_document_position(n.cond, position_context); + get_document_position(n.y, position_context); + case Type_Assertion: + get_document_position(n.expr, position_context); + get_document_position(n.type, position_context); + case Type_Cast: + get_document_position(n.type, position_context); + get_document_position(n.expr, position_context); + case Auto_Cast: + get_document_position(n.expr, position_context); + case Bad_Stmt: + case Empty_Stmt: + case Expr_Stmt: + get_document_position(n.expr, position_context); + case Tag_Stmt: r := cast(^Expr_Stmt)node; - get_document_position(r.expr, position_context); - case Assign_Stmt: - get_document_position(n.lhs, position_context); - get_document_position(n.rhs, position_context); - case Block_Stmt: - get_document_position(n.label, position_context); - get_document_position(n.stmts, position_context); - case If_Stmt: - get_document_position(n.label, position_context); - get_document_position(n.init, position_context); - get_document_position(n.cond, position_context); - get_document_position(n.body, position_context); - get_document_position(n.else_stmt, position_context); - case When_Stmt: - get_document_position(n.cond, position_context); - get_document_position(n.body, position_context); - get_document_position(n.else_stmt, position_context); - case Return_Stmt: - get_document_position(n.results, position_context); - case Defer_Stmt: - get_document_position(n.stmt, position_context); - case For_Stmt: - get_document_position(n.label, position_context); - get_document_position(n.init, position_context); - get_document_position(n.cond, position_context); - get_document_position(n.post, position_context); - get_document_position(n.body, position_context); - case Range_Stmt: - get_document_position(n.label, position_context); - get_document_position(n.val0, position_context); - get_document_position(n.val1, position_context); - get_document_position(n.expr, position_context); - get_document_position(n.body, position_context); - case Case_Clause: - get_document_position(n.list, position_context); - get_document_position(n.body, position_context); - case Switch_Stmt: - get_document_position(n.label, position_context); - get_document_position(n.init, position_context); - get_document_position(n.cond, position_context); - get_document_position(n.body, position_context); - case Type_Switch_Stmt: - get_document_position(n.label, position_context); - get_document_position(n.tag, position_context); - get_document_position(n.expr, position_context); - get_document_position(n.body, position_context); - case Branch_Stmt: - get_document_position(n.label, position_context); - case Using_Stmt: - get_document_position(n.list, position_context); - case Bad_Decl: - case Value_Decl: - get_document_position(n.attributes, position_context); - get_document_position(n.names, position_context); - get_document_position(n.type, position_context); - get_document_position(n.values, position_context); - case Package_Decl: - case Import_Decl: - case Foreign_Block_Decl: - get_document_position(n.attributes, position_context); - get_document_position(n.foreign_library, position_context); - get_document_position(n.body, position_context); - case Foreign_Import_Decl: - get_document_position(n.name, position_context); - case Proc_Group: - get_document_position(n.args, position_context); - case Attribute: - get_document_position(n.elems, position_context); - case Field: - get_document_position(n.names, position_context); - get_document_position(n.type, position_context); - get_document_position(n.default_value, position_context); - case Field_List: - get_document_position(n.list, position_context); - case Typeid_Type: - get_document_position(n.specialization, position_context); - case Helper_Type: - get_document_position(n.type, position_context); - case Distinct_Type: - get_document_position(n.type, position_context); - case Opaque_Type: - get_document_position(n.type, position_context); - case Poly_Type: - get_document_position(n.type, position_context); - get_document_position(n.specialization, position_context); - case Proc_Type: - get_document_position(n.params, position_context); - get_document_position(n.results, position_context); - case Pointer_Type: - get_document_position(n.elem, position_context); - case Array_Type: - get_document_position(n.len, position_context); - get_document_position(n.elem, position_context); - case Dynamic_Array_Type: - get_document_position(n.elem, position_context); - case Struct_Type: - get_document_position(n.poly_params, position_context); - get_document_position(n.align, position_context); - get_document_position(n.fields, position_context); - case Union_Type: - get_document_position(n.poly_params, position_context); - get_document_position(n.align, position_context); - get_document_position(n.variants, position_context); - case Enum_Type: - get_document_position(n.base_type, position_context); - get_document_position(n.fields, position_context); - case Bit_Field_Type: - get_document_position(n.fields, position_context); - case Bit_Set_Type: - get_document_position(n.elem, position_context); - get_document_position(n.underlying, position_context); - case Map_Type: - get_document_position(n.key, position_context); - get_document_position(n.value, position_context); - case: - fmt.panicf("Unhandled node kind: %T", n); - } + get_document_position(r.expr, position_context); + case Assign_Stmt: + get_document_position(n.lhs, position_context); + get_document_position(n.rhs, position_context); + case Block_Stmt: + get_document_position(n.label, position_context); + get_document_position(n.stmts, position_context); + case If_Stmt: + get_document_position(n.label, position_context); + get_document_position(n.init, position_context); + get_document_position(n.cond, position_context); + get_document_position(n.body, position_context); + get_document_position(n.else_stmt, position_context); + case When_Stmt: + get_document_position(n.cond, position_context); + get_document_position(n.body, position_context); + get_document_position(n.else_stmt, position_context); + case Return_Stmt: + get_document_position(n.results, position_context); + case Defer_Stmt: + get_document_position(n.stmt, position_context); + case For_Stmt: + get_document_position(n.label, position_context); + get_document_position(n.init, position_context); + get_document_position(n.cond, position_context); + get_document_position(n.post, position_context); + get_document_position(n.body, position_context); + case Range_Stmt: + get_document_position(n.label, position_context); + get_document_position(n.val0, position_context); + get_document_position(n.val1, position_context); + get_document_position(n.expr, position_context); + get_document_position(n.body, position_context); + case Case_Clause: + get_document_position(n.list, position_context); + get_document_position(n.body, position_context); + case Switch_Stmt: + get_document_position(n.label, position_context); + get_document_position(n.init, position_context); + get_document_position(n.cond, position_context); + get_document_position(n.body, position_context); + case Type_Switch_Stmt: + get_document_position(n.label, position_context); + get_document_position(n.tag, position_context); + get_document_position(n.expr, position_context); + get_document_position(n.body, position_context); + case Branch_Stmt: + get_document_position(n.label, position_context); + case Using_Stmt: + get_document_position(n.list, position_context); + case Bad_Decl: + case Value_Decl: + get_document_position(n.attributes, position_context); + get_document_position(n.names, position_context); + get_document_position(n.type, position_context); + get_document_position(n.values, position_context); + case Package_Decl: + case Import_Decl: + case Foreign_Block_Decl: + get_document_position(n.attributes, position_context); + get_document_position(n.foreign_library, position_context); + get_document_position(n.body, position_context); + case Foreign_Import_Decl: + get_document_position(n.name, position_context); + case Proc_Group: + get_document_position(n.args, position_context); + case Attribute: + get_document_position(n.elems, position_context); + case Field: + get_document_position(n.names, position_context); + get_document_position(n.type, position_context); + get_document_position(n.default_value, position_context); + case Field_List: + get_document_position(n.list, position_context); + case Typeid_Type: + get_document_position(n.specialization, position_context); + case Helper_Type: + get_document_position(n.type, position_context); + case Distinct_Type: + get_document_position(n.type, position_context); + case Opaque_Type: + get_document_position(n.type, position_context); + case Poly_Type: + get_document_position(n.type, position_context); + get_document_position(n.specialization, position_context); + case Proc_Type: + get_document_position(n.params, position_context); + get_document_position(n.results, position_context); + case Pointer_Type: + get_document_position(n.elem, position_context); + case Array_Type: + get_document_position(n.len, position_context); + get_document_position(n.elem, position_context); + case Dynamic_Array_Type: + get_document_position(n.elem, position_context); + case Struct_Type: + get_document_position(n.poly_params, position_context); + get_document_position(n.align, position_context); + get_document_position(n.fields, position_context); + case Union_Type: + get_document_position(n.poly_params, position_context); + get_document_position(n.align, position_context); + get_document_position(n.variants, position_context); + case Enum_Type: + get_document_position(n.base_type, position_context); + get_document_position(n.fields, position_context); + case Bit_Field_Type: + get_document_position(n.fields, position_context); + case Bit_Set_Type: + get_document_position(n.elem, position_context); + get_document_position(n.underlying, position_context); + case Map_Type: + get_document_position(n.key, position_context); + get_document_position(n.value, position_context); + case: + fmt.panicf("Unhandled node kind: %T", n); + } }
\ No newline at end of file |