From 24bfef49490e38dfeca3fcd637da17c641c6d6f4 Mon Sep 17 00:00:00 2001 From: Fredrik Robertsen Date: Sun, 1 Mar 2026 13:59:33 +0100 Subject: [PATCH] println and flatten are correct --- ps3/src/.gdb_history | 2 ++ ps3/src/tree.c | 9 +++++---- 2 files changed, 7 insertions(+), 4 deletions(-) create mode 100644 ps3/src/.gdb_history diff --git a/ps3/src/.gdb_history b/ps3/src/.gdb_history new file mode 100644 index 0000000..c081439 --- /dev/null +++ b/ps3/src/.gdb_history @@ -0,0 +1,2 @@ +l +exit diff --git a/ps3/src/tree.c b/ps3/src/tree.c index 996341e..ae3561b 100644 --- a/ps3/src/tree.c +++ b/ps3/src/tree.c @@ -224,11 +224,12 @@ static node_t* constant_fold_operator(node_t* node) static node_t* simplify_println_statement(node_t* node) { assert(node->type == PRINTLN_STATEMENT); - node->type = PRINT_STATEMENT; + node_t *result = node_create(PRINT_STATEMENT, 1, node->children[0]); node_t *newline = node_create(STRING_LITERAL, 0); - newline->data.string_literal = "\"\\n\""; - append_to_list_node(node, newline); - return node; + newline->data.string_literal = strdup("\"\\n\""); + append_to_list_node(node->children[0], newline); + node_finalize(node); + return result; } // Flatten all LOCAL_VARIABLE_DELCARATION nodes in the block, by converting them