mercurial/revset.py
changeset 29943 80c86b9bb40b
parent 29935 e34cd85dc5b1
child 29944 5f56a3b9675e
--- a/mercurial/revset.py	Wed Sep 14 11:39:47 2016 -0500
+++ b/mercurial/revset.py	Wed Jun 01 20:54:04 2016 +0900
@@ -2473,7 +2473,13 @@
     elif op == 'keyvalue':
         return (op, x[1], _analyze(x[2], order))
     elif op == 'func':
-        return (op, x[1], _analyze(x[2], defineorder), order)
+        f = getsymbol(x[1])
+        d = defineorder
+        if f == 'present':
+            # 'present(set)' is known to return the argument set with no
+            # modification, so forward the current order to its argument
+            d = order
+        return (op, x[1], _analyze(x[2], d), order)
     raise ValueError('invalid operator %r' % op)
 
 def analyze(x, order=defineorder):