|
|
|
|
|
by vcmiraldo
1807 days ago
|
|
From you description it seems like we're just computing the standard insert-delete tree-edit-distance. These tend to be slow. This implies that the patch language only supports insertion, deletion and modification of nodes, which is a shame since refactorings, moves and duplications are also common operations in the source-code domain. Additionally, if the patch language only supports insertion, deletion and modification, the merging algorithm will perform poorly. |
|
I did look at modelling moves in an earlier prototype, but it's incredibly hard to display the result in a coherent way when there are also insertions. It was also easier to drop it when I moved to Dijkstra.
As you can see in the screenshot in the readme, it does support inserting tree nodes whilst preserving children, which covers a ton of cases.