diff options
| author | Brad Lewis <22850972+BradLewis@users.noreply.github.com> | 2025-11-10 15:19:26 -0500 |
|---|---|---|
| committer | Brad Lewis <22850972+BradLewis@users.noreply.github.com> | 2025-11-10 15:19:26 -0500 |
| commit | 311d46f0cda4c1228f8859e354d866dbee0ccb47 (patch) | |
| tree | 81953a5c53e496edacd45717c9cd6c0a5da8d2f5 /src/server | |
| parent | 980ccd16cc9baa2a73878b7bad028a53d22bb95f (diff) | |
Add missing expr that should be cloned and freed
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/ast.odin | 10 | ||||
| -rw-r--r-- | src/server/clone.odin | 8 |
2 files changed, 15 insertions, 3 deletions
diff --git a/src/server/ast.odin b/src/server/ast.odin index e44a093..5d06eb2 100644 --- a/src/server/ast.odin +++ b/src/server/ast.odin @@ -833,14 +833,18 @@ free_ast_node :: proc(node: ^ast.Node, allocator: mem.Allocator) { free_ast(n.name, allocator) free_ast(n.type, allocator) free_ast(n.bit_size, allocator) - case ^ast.Or_Else_Expr: + case ^Or_Else_Expr: free_ast(n.x, allocator) free_ast(n.y, allocator) - case ^ast.Or_Return_Expr: + case ^Or_Return_Expr: free_ast(n.expr, allocator) - case ^ast.Or_Branch_Expr: + case ^Or_Branch_Expr: free_ast(n.expr, allocator) free_ast(n.label, allocator) + case ^Matrix_Index_Expr: + free_ast(n.expr, allocator) + free_ast(n.row_index, allocator) + free_ast(n.column_index, allocator) case: panic(fmt.aprintf("free Unhandled node kind: %v", node.derived)) } diff --git a/src/server/clone.odin b/src/server/clone.odin index d62f6de..215ab42 100644 --- a/src/server/clone.odin +++ b/src/server/clone.odin @@ -303,6 +303,14 @@ clone_node :: proc(node: ^ast.Node, allocator: mem.Allocator, unique_strings: ^m append(&list, tokenizer.Token{text = strings.clone(t.text, allocator), kind = t.kind, pos = tokenizer.Pos{file = strings.clone(t.pos.file, allocator), offset = t.pos.offset, line = t.pos.line, column = t.pos.column}}) } r.list = list[:] + case ^Auto_Cast: + r.expr = clone_type(r.expr, allocator, unique_strings) + case ^Or_Return_Expr: + r.expr = clone_type(r.expr, allocator, unique_strings) + case ^Matrix_Index_Expr: + r.expr = clone_type(r.expr, allocator, unique_strings) + r.row_index = clone_type(r.row_index, allocator, unique_strings) + r.column_index = clone_type(r.column_index, allocator, unique_strings) case: } |