Refactor and fix bugs in tree comparison algorithm

This commit is contained in:
Max Brunsfeld 2017-08-04 14:03:41 -07:00
parent 46ec0804f8
commit 9260d8163c
4 changed files with 194 additions and 139 deletions

View file

@ -192,12 +192,25 @@ static CondenseResult parser__condense_stack(Parser *self) {
j--;
break;
case ErrorComparisonPreferRight:
if (version_to_swap != STACK_VERSION_NONE) version_to_swap = j;
result |= CondenseResultMadeChange;
case ErrorComparisonPreferLeft:
if (can_merge) {
ts_stack_force_merge(self->stack, j, i);
result |= CondenseResultMadeChange;
i--;
j = i;
}
break;
case ErrorComparisonPreferLeft:
case ErrorComparisonPreferRight:
if (can_merge) {
ts_stack_remove_version(self->stack, j);
result |= CondenseResultMadeChange;
i--;
j--;
} else if (version_to_swap != STACK_VERSION_NONE) {
version_to_swap = j;
result |= CondenseResultMadeChange;
}
break;
case ErrorComparisonNone: