mercurial/revsetlang.py
changeset 38625 52f19a840543
parent 37775 03d7f885d5f2
child 38783 e7aa113b14f7
--- a/mercurial/revsetlang.py	Mon Jun 18 19:41:54 2018 -0700
+++ b/mercurial/revsetlang.py	Tue Jun 26 15:26:21 2018 -0700
@@ -459,6 +459,12 @@
         f = getsymbol(x[1])
         wa, ta = _optimize(x[2])
         w = getattr(symbols.get(f), '_weight', 1)
+        m = _match('commonancestors(_)', ta)
+
+        # Optimize heads(commonancestors(_)) because we have a fast version
+        if f == 'heads' and m:
+            return w + wa, _build('_commonancestorheads(_)', m[1])
+
         return w + wa, (op, x[1], ta)
     raise ValueError('invalid operator %r' % op)