diff --git a/src/runtime/parser.c b/src/runtime/parser.c index 99ecd2b4..047fca9a 100644 --- a/src/runtime/parser.c +++ b/src/runtime/parser.c @@ -571,8 +571,7 @@ static StackPopResult parser__reduce(Parser *self, StackVersion version, // delete the rest of the tree arrays. while (i + 1 < pop.slices.size) { StackSlice next_slice = pop.slices.contents[i + 1]; - if (next_slice.version != slice.version) - break; + if (next_slice.version != slice.version) break; i++; uint32_t child_count = next_slice.trees.size; diff --git a/src/runtime/stack.c b/src/runtime/stack.c index 10e9b7ee..6bb59095 100644 --- a/src/runtime/stack.c +++ b/src/runtime/stack.c @@ -303,8 +303,9 @@ inline StackPopResult stack__iter(Stack *self, StackVersion version, if (!link.tree->extra) { next_iterator->tree_count++; next_iterator->depth--; - if (!link.is_pending) + if (!link.is_pending) { next_iterator->is_pending = false; + } } array_push(&next_iterator->trees, link.tree); ts_tree_retain(link.tree); @@ -561,9 +562,8 @@ void ts_stack_force_merge(Stack *self, StackVersion version1, StackVersion versi for (uint32_t i = 0; i < head2->node->link_count; i++) { stack_node_add_link(head1->node, head2->node->links[i]); } - if (head2->push_count > head1->push_count) { - head1->push_count = head2->push_count; - } + if (head2->push_count > head1->push_count) head1->push_count = head2->push_count; + if (head2->depth > head1->depth) head1->depth = head2->depth; ts_stack_remove_version(self, version2); } diff --git a/test/runtime/stack_test.cc b/test/runtime/stack_test.cc index 03bf7091..8d1d47f5 100644 --- a/test/runtime/stack_test.cc +++ b/test/runtime/stack_test.cc @@ -390,7 +390,7 @@ describe("Stack", [&]() { StackSlice slice2 = pop.slices.contents[1]; AssertThat(slice2.version, Equals(1)); - AssertThat(slice2.trees, Equals(vector({ trees[4], trees[5], trees[6], trees[10] }))) + AssertThat(slice2.trees, Equals(vector({ trees[4], trees[5], trees[6], trees[10] }))); AssertThat(ts_stack_version_count(stack), Equals(2)); AssertThat(ts_stack_top_state(stack, 0), Equals(stateI)); @@ -441,15 +441,15 @@ describe("Stack", [&]() { StackSlice slice1 = pop.slices.contents[0]; AssertThat(slice1.version, Equals(1)); - AssertThat(slice1.trees, Equals(vector({ trees[3], trees[10] }))) + AssertThat(slice1.trees, Equals(vector({ trees[3], trees[10] }))); StackSlice slice2 = pop.slices.contents[1]; AssertThat(slice2.version, Equals(2)); - AssertThat(slice2.trees, Equals(vector({ trees[6], trees[10] }))) + AssertThat(slice2.trees, Equals(vector({ trees[6], trees[10] }))); StackSlice slice3 = pop.slices.contents[2]; AssertThat(slice3.version, Equals(3)); - AssertThat(slice3.trees, Equals(vector({ trees[9], trees[10] }))) + AssertThat(slice3.trees, Equals(vector({ trees[9], trees[10] }))); AssertThat(ts_stack_version_count(stack), Equals(4)); AssertThat(ts_stack_top_state(stack, 0), Equals(stateI));