Refactor and fix bugs in tree comparison algorithm
This commit is contained in:
parent
46ec0804f8
commit
9260d8163c
4 changed files with 194 additions and 139 deletions
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue