mercurial/revset.py
changeset 29943 80c86b9bb40b
parent 29935 e34cd85dc5b1
child 29944 5f56a3b9675e
equal deleted inserted replaced
29942:3664537386ab 29943:80c86b9bb40b
  2471     elif op == 'list':
  2471     elif op == 'list':
  2472         return (op,) + tuple(_analyze(y, order) for y in x[1:])
  2472         return (op,) + tuple(_analyze(y, order) for y in x[1:])
  2473     elif op == 'keyvalue':
  2473     elif op == 'keyvalue':
  2474         return (op, x[1], _analyze(x[2], order))
  2474         return (op, x[1], _analyze(x[2], order))
  2475     elif op == 'func':
  2475     elif op == 'func':
  2476         return (op, x[1], _analyze(x[2], defineorder), order)
  2476         f = getsymbol(x[1])
       
  2477         d = defineorder
       
  2478         if f == 'present':
       
  2479             # 'present(set)' is known to return the argument set with no
       
  2480             # modification, so forward the current order to its argument
       
  2481             d = order
       
  2482         return (op, x[1], _analyze(x[2], d), order)
  2477     raise ValueError('invalid operator %r' % op)
  2483     raise ValueError('invalid operator %r' % op)
  2478 
  2484 
  2479 def analyze(x, order=defineorder):
  2485 def analyze(x, order=defineorder):
  2480     """Transform raw parsed tree to evaluatable tree which can be fed to
  2486     """Transform raw parsed tree to evaluatable tree which can be fed to
  2481     optimize() or getset()
  2487     optimize() or getset()