# HG changeset patch # User Denis Laxalde # Date 1492171766 -7200 # Node ID 55987fc8aba1470625508c384833a08a376326c8 # Parent 3e03a4b9ec8c09670a425b976a60a6b1c873a402 context: add an assertion checking linerange consistency in blockdescendants() If this assertion fails, this indicates a flaw in the algorithm. So fail fast instead of possibly producing wrong results. Also extend the target line range in test to catch a merge changeset with all its parents. diff -r 3e03a4b9ec8c -r 55987fc8aba1 mercurial/context.py --- a/mercurial/context.py Fri Apr 14 12:34:26 2017 -0700 +++ b/mercurial/context.py Fri Apr 14 14:09:26 2017 +0200 @@ -1226,6 +1226,12 @@ continue inrangep, linerange1 = _changesrange(c, p, linerange2, diffopts) inrange = inrange or inrangep + # If revision 'i' has been seen (it's a merge), we assume that its + # line range is the same independently of which parents was used + # to compute it. + assert i not in seen or seen[i][1] == linerange1, ( + 'computed line range for %s is not consistent between ' + 'ancestor branches' % c) seen[i] = c, linerange1 if inrange: yield c, linerange1 diff -r 3e03a4b9ec8c -r 55987fc8aba1 tests/test-annotate.t --- a/tests/test-annotate.t Fri Apr 14 12:34:26 2017 -0700 +++ b/tests/test-annotate.t Fri Apr 14 14:09:26 2017 +0200 @@ -606,7 +606,7 @@ $ mv baz.new baz $ hg ci -m 'baz:3->+3' created new head - $ hg log -T '{rev}: {desc}\n' -r 'followlines(baz, 3:5, startrev=16, descend=True)' --graph + $ hg log -T '{rev}: {desc}\n' -r 'followlines(baz, 2:5, startrev=16, descend=True)' --graph @ 29: baz:3->+3 : : o 26: baz:3+->3- @@ -615,10 +615,11 @@ :/ o 20: baz:4 |\ - | ~ - o 19: baz:3 - | - ~ + | o 19: baz:3 + |/ + o 18: baz:2 + |\ + ~ ~ check error cases $ hg up 23 --quiet