From 1be454a8b0b6c515d5c89b2363e24fed6e1f0707 Mon Sep 17 00:00:00 2001 From: DanielGavin Date: Tue, 26 Mar 2024 19:29:13 +0100 Subject: [PATCH] Support relative type --- src/common/ast.odin | 6 ++++-- src/server/analysis.odin | 3 +-- src/server/clone.odin | 4 +++- src/server/collector.odin | 1 - src/server/semantic_tokens.odin | 2 -- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/common/ast.odin b/src/common/ast.odin index a2e5d423..221432b1 100644 --- a/src/common/ast.odin +++ b/src/common/ast.odin @@ -700,8 +700,11 @@ free_ast_node :: proc(node: ^ast.Node, allocator: mem.Allocator) { free_ast(n.elem, allocator) case ^Matrix_Type: free_ast(n.elem, allocator) + case ^Relative_Type: + free_ast(n.tag, allocator) + free_ast(n.type, allocator) case: - panic(fmt.aprintf("free Unhandled node kind: %T", n)) + panic(fmt.aprintf("free Unhandled node kind: %v", node.derived)) } mem.free(node, allocator) @@ -911,7 +914,6 @@ node_equal_node :: proc(a, b: ^ast.Node) -> bool { case ^Typeid_Type: return true case: - log.warn("Unhandled poly node kind: %T", m) } return false diff --git a/src/server/analysis.odin b/src/server/analysis.odin index 45e2e74d..81f2df9b 100644 --- a/src/server/analysis.odin +++ b/src/server/analysis.odin @@ -1078,7 +1078,7 @@ internal_resolve_type_expression :: proc( } } case: - log.warnf("default node kind, internal_resolve_type_expression: %T", v) + log.warnf("default node kind, internal_resolve_type_expression: %v", v) } return Symbol{}, false @@ -5075,6 +5075,5 @@ get_document_position_node :: proc( case ^ast.Or_Return_Expr: get_document_position(n.expr, position_context) case: - log.warnf("Unhandled node kind: %T", n) } } diff --git a/src/server/clone.odin b/src/server/clone.odin index 09827d1b..796bf334 100644 --- a/src/server/clone.odin +++ b/src/server/clone.odin @@ -284,8 +284,10 @@ clone_node :: proc( case ^Type_Assertion: r.expr = clone_type(r.expr, allocator, unique_strings) r.type = clone_type(r.type, allocator, unique_strings) + case ^Relative_Type: + r.tag = clone_type(r.tag, allocator, unique_strings) + r.type = clone_type(r.type, allocator, unique_strings) case: - //fmt.logf("Unhandled node kind: %T", r) } return res diff --git a/src/server/collector.odin b/src/server/collector.odin index 935acd79..65d11e99 100644 --- a/src/server/collector.odin +++ b/src/server/collector.odin @@ -999,6 +999,5 @@ replace_package_alias_node :: proc( case ^Multi_Pointer_Type: replace_package_alias(n.elem, package_map, collection) case: - log.warnf("Replace Unhandled node kind: %T", n) } } diff --git a/src/server/semantic_tokens.odin b/src/server/semantic_tokens.odin index 3e2c6f65..7fafc21e 100644 --- a/src/server/semantic_tokens.odin +++ b/src/server/semantic_tokens.odin @@ -760,8 +760,6 @@ visit_node :: proc( visit(n.body, builder, ast_context) case: - //log.errorf("unhandled semantic token node %v", n); - //panic(fmt.tprintf("Missed semantic token handling %v", n)); } }