aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBradley Lewis <22850972+BradLewis@users.noreply.github.com>2025-11-10 15:23:55 -0500
committerGitHub <noreply@github.com>2025-11-10 15:23:55 -0500
commitf8a4f450e526382e8076102f6d65324cbfa5c207 (patch)
tree81953a5c53e496edacd45717c9cd6c0a5da8d2f5 /src
parent980ccd16cc9baa2a73878b7bad028a53d22bb95f (diff)
parent311d46f0cda4c1228f8859e354d866dbee0ccb47 (diff)
Merge pull request #1170 from BradLewis/fix/add-missing-exprs-clone-free
Add missing expr that should be cloned and freed
Diffstat (limited to 'src')
-rw-r--r--src/server/ast.odin10
-rw-r--r--src/server/clone.odin8
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:
}