Skip to content

Commit 411944b

Browse files
committed
fix: assign after line numbers in GumTreeDiff
1 parent 99a34f4 commit 411944b

23 files changed

Lines changed: 40 additions & 34 deletions

src/main/java/org/variantsync/diffdetective/variation/diff/DiffNode.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -438,6 +438,9 @@ public void join(DiffNode<L> other, BiFunction<L, L, L> joinLabels) {
438438
diffType = DiffType.NON;
439439
label.setInnerLabel(joinLabels.apply(getLabel(), other.getLabel()));
440440

441+
setFromLine(getFromLine().withLineNumberAtTime(other.getFromLine().atTime(AFTER), AFTER));
442+
setToLine(getToLine().withLineNumberAtTime(other.getToLine().atTime(AFTER), AFTER));
443+
441444
this.stealChildrenOf(other);
442445
other.getParent(time).replaceChild(other, this, time);
443446
}

src/main/java/org/variantsync/diffdetective/variation/diff/construction/GumTreeDiff.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,9 @@ private static <L extends Label> void addUnmapped(MappingStore mappings, DiffNod
165165
// Always drop and reinsert it because it could have moved.
166166
diffNode.drop(AFTER);
167167
}
168+
169+
diffNode.setFromLine(diffNode.getFromLine().withLineNumberAtTime(afterNode.getVariationNode().getLineRange().fromInclusive(), AFTER));
170+
diffNode.setToLine(diffNode.getToLine().withLineNumberAtTime(afterNode.getVariationNode().getLineRange().toExclusive(), AFTER));
168171
}
169172
parent.addChild(diffNode, AFTER);
170173

src/test/resources/tree-diffing/createMatching/04_gumtree-hybrid_expected.lg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
v 80 NON;IF;(old: -1, diff: 0, new: -1);(old: -1, diff: 0, new: -1);True
2-
v 147 NON;ARTIFACT;(old: 1, diff: 1, new: 1);(old: 2, diff: 1, new: 2);;Line
2+
v 147 NON;ARTIFACT;(old: 1, diff: 1, new: 2);(old: 2, diff: 1, new: 3);;Line
33
v 192 ADD;IF;(old: -1, diff: 2, new: 1);(old: -1, diff: 2, new: 3);defined(A);#ifdef A
44
e 147 80 b;0,-1
55
e 192 80 a;-1,0

src/test/resources/tree-diffing/createMatching/04_gumtree_expected.lg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
v 80 NON;IF;(old: -1, diff: 0, new: -1);(old: -1, diff: 0, new: -1);True
2-
v 147 NON;ARTIFACT;(old: 1, diff: 1, new: 1);(old: 2, diff: 1, new: 2);;Line
2+
v 147 NON;ARTIFACT;(old: 1, diff: 1, new: 2);(old: 2, diff: 1, new: 3);;Line
33
v 192 ADD;IF;(old: -1, diff: 2, new: 1);(old: -1, diff: 2, new: 3);defined(A);#ifdef A
44
e 147 80 b;0,-1
55
e 192 80 a;-1,0
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
v 80 NON;IF;(old: -1, diff: 0, new: -1);(old: -1, diff: 0, new: -1);True
22
v 136 REM;IF;(old: 1, diff: 1, new: -1);(old: 3, diff: 1, new: -1);defined(A);#ifdef A
3-
v 211 NON;ARTIFACT;(old: 2, diff: 2, new: 2);(old: 3, diff: 2, new: 3);;Line
3+
v 211 NON;ARTIFACT;(old: 2, diff: 2, new: 1);(old: 3, diff: 2, new: 2);;Line
44
e 136 80 b;0,-1
55
e 211 80 a;-1,0
66
e 211 136 b;0,-1
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
v 80 NON;IF;(old: -1, diff: 0, new: -1);(old: -1, diff: 0, new: -1);True
22
v 136 REM;IF;(old: 1, diff: 1, new: -1);(old: 3, diff: 1, new: -1);defined(A);#ifdef A
3-
v 211 NON;ARTIFACT;(old: 2, diff: 2, new: 2);(old: 3, diff: 2, new: 3);;Line
3+
v 211 NON;ARTIFACT;(old: 2, diff: 2, new: 1);(old: 3, diff: 2, new: 2);;Line
44
e 136 80 b;0,-1
55
e 211 80 a;-1,0
66
e 211 136 b;0,-1

src/test/resources/tree-diffing/createMatching/06_gumtree-hybrid_expected.lg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
v 80 NON;IF;(old: -1, diff: 0, new: -1);(old: -1, diff: 0, new: -1);True
22
v 136 REM;IF;(old: 1, diff: 1, new: -1);(old: 4, diff: 1, new: -1);defined(A);#ifdef A
33
v 211 NON;ARTIFACT;(old: 2, diff: 2, new: 2);(old: 3, diff: 2, new: 3);;Line A
4-
v 275 NON;ARTIFACT;(old: 3, diff: 3, new: 3);(old: 4, diff: 3, new: 4);;Line B
4+
v 275 NON;ARTIFACT;(old: 3, diff: 3, new: 4);(old: 4, diff: 3, new: 5);;Line B
55
v 320 ADD;IF;(old: -1, diff: 4, new: 1);(old: -1, diff: 4, new: 3);defined(A);#ifdef A
66
v 386 ADD;ELIF;(old: -1, diff: 5, new: 3);(old: -1, diff: 5, new: 5);B;#elif B
77
e 136 80 b;0,-1

src/test/resources/tree-diffing/createMatching/06_gumtree_expected.lg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
v 80 NON;IF;(old: -1, diff: 0, new: -1);(old: -1, diff: 0, new: -1);True
22
v 136 REM;IF;(old: 1, diff: 1, new: -1);(old: 4, diff: 1, new: -1);defined(A);#ifdef A
33
v 211 NON;ARTIFACT;(old: 2, diff: 2, new: 2);(old: 3, diff: 2, new: 3);;Line A
4-
v 275 NON;ARTIFACT;(old: 3, diff: 3, new: 3);(old: 4, diff: 3, new: 4);;Line B
4+
v 275 NON;ARTIFACT;(old: 3, diff: 3, new: 4);(old: 4, diff: 3, new: 5);;Line B
55
v 320 ADD;IF;(old: -1, diff: 4, new: 1);(old: -1, diff: 4, new: 3);defined(A);#ifdef A
66
v 386 ADD;ELIF;(old: -1, diff: 5, new: 3);(old: -1, diff: 5, new: 5);B;#elif B
77
e 136 80 b;0,-1

src/test/resources/tree-diffing/createMatching/07_longestCommonSequence_expected.lg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
v 80 NON;IF;(old: -1, diff: 0, new: -1);(old: -1, diff: 0, new: -1);True
2-
v 144 NON;IF;(old: 1, diff: 1, new: 1);(old: 5, diff: 1, new: 5);defined(CONFIG_A);#ifdef CONFIG_A
2+
v 144 NON;IF;(old: 1, diff: 1, new: 2);(old: 5, diff: 1, new: 4);defined(CONFIG_A);#ifdef CONFIG_A
33
v 200 REM;IF;(old: 2, diff: 2, new: -1);(old: 4, diff: 2, new: -1);defined(CONFIG_B);#ifdef CONFIG_B
44
v 275 NON;ARTIFACT;(old: 3, diff: 3, new: 3);(old: 4, diff: 3, new: 4);;Line
55
v 320 ADD;IF;(old: -1, diff: 4, new: 1);(old: -1, diff: 4, new: 5);defined(CONFIG_B);#ifdef CONFIG_B

src/test/resources/tree-diffing/createMatching/08_longestCommonSequence_expected.lg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
v 80 NON;IF;(old: -1, diff: 0, new: -1);(old: -1, diff: 0, new: -1);True
2-
v 144 NON;IF;(old: 1, diff: 1, new: 1);(old: 5, diff: 1, new: 5);defined(A);#ifdef A
2+
v 144 NON;IF;(old: 1, diff: 1, new: 2);(old: 5, diff: 1, new: 4);defined(A);#ifdef A
33
v 200 REM;IF;(old: 2, diff: 2, new: -1);(old: 4, diff: 2, new: -1);defined(B);#ifdef B
44
v 275 NON;ARTIFACT;(old: 3, diff: 3, new: 3);(old: 4, diff: 3, new: 4);;Line
55
v 320 ADD;IF;(old: -1, diff: 4, new: 1);(old: -1, diff: 4, new: 5);defined(B);#ifdef B

0 commit comments

Comments
 (0)