diff --git a/mercurial/revset.py b/mercurial/revset.py --- a/mercurial/revset.py +++ b/mercurial/revset.py @@ -631,13 +631,11 @@ in the repo (whereas we want "::x *and* ::y"). """ - # only wants the heads of the set passed in - h = heads(repo, fullreposet(repo), x, anyorder) - if not h: + startrevs = getset(repo, fullreposet(repo), x, order=anyorder) + if not startrevs: return baseset() - for r in h: + for r in startrevs: subset &= dagop.revancestors(repo, baseset([r])) - return subset @predicate('contains(pattern)', weight=100) diff --git a/tests/test-revset.t b/tests/test-revset.t --- a/tests/test-revset.t +++ b/tests/test-revset.t @@ -1069,7 +1069,6 @@ 2 4 8 - 9 test ancestor variants of empty revision