mercurial/revsetlang.py
changeset 38625 52f19a840543
parent 37775 03d7f885d5f2
child 38783 e7aa113b14f7
equal deleted inserted replaced
38624:5460926352ee 38625:52f19a840543
   457         return w, (op, x[1], t)
   457         return w, (op, x[1], t)
   458     elif op == 'func':
   458     elif op == 'func':
   459         f = getsymbol(x[1])
   459         f = getsymbol(x[1])
   460         wa, ta = _optimize(x[2])
   460         wa, ta = _optimize(x[2])
   461         w = getattr(symbols.get(f), '_weight', 1)
   461         w = getattr(symbols.get(f), '_weight', 1)
       
   462         m = _match('commonancestors(_)', ta)
       
   463 
       
   464         # Optimize heads(commonancestors(_)) because we have a fast version
       
   465         if f == 'heads' and m:
       
   466             return w + wa, _build('_commonancestorheads(_)', m[1])
       
   467 
   462         return w + wa, (op, x[1], ta)
   468         return w + wa, (op, x[1], ta)
   463     raise ValueError('invalid operator %r' % op)
   469     raise ValueError('invalid operator %r' % op)
   464 
   470 
   465 def optimize(tree):
   471 def optimize(tree):
   466     """Optimize evaluatable tree
   472     """Optimize evaluatable tree