##// END OF EJS Templates
revset: forward ordering requirement to argument of present()...
Yuya Nishihara -
r29943:80c86b9b default
parent child Browse files
Show More
@@ -2473,7 +2473,13 def _analyze(x, order):
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):
@@ -1485,7 +1485,23 ordering defined by it.
1485 <baseset [0, 1]>>>
1485 <baseset [0, 1]>>>
1486 2
1486 2
1487
1487
1488 'present()' should do nothing other than suppressing an error:
1488 because 'present()' does nothing other than suppressing an error, the
1489 ordering requirement should be forwarded to the nested expression
1490
1491 $ try -p optimized 'present(2 + 0 + 1)'
1492 * optimized:
1493 (func
1494 ('symbol', 'present')
1495 (func
1496 ('symbol', '_list')
1497 ('string', '2\x000\x001')
1498 define)
1499 define)
1500 * set:
1501 <baseset [2, 0, 1]>
1502 2
1503 0
1504 1
1489
1505
1490 $ try --optimize '2:0 & present(0 + 1 + 2)'
1506 $ try --optimize '2:0 & present(0 + 1 + 2)'
1491 (and
1507 (and
@@ -1510,15 +1526,16 ordering defined by it.
1510 (func
1526 (func
1511 ('symbol', '_list')
1527 ('symbol', '_list')
1512 ('string', '0\x001\x002')
1528 ('string', '0\x001\x002')
1513 define)
1529 follow)
1514 follow)
1530 follow)
1515 define)
1531 define)
1516 * set:
1532 * set:
1517 <baseset [0, 1, 2]>
1533 <filteredset
1518 0
1534 <spanset- 0:2>,
1535 <baseset [0, 1, 2]>>
1536 2
1519 1
1537 1
1520 2
1538 0
1521 BROKEN: should be '2 1 0'
1522
1539
1523 'reverse()' should take effect only if it is the outermost expression:
1540 'reverse()' should take effect only if it is the outermost expression:
1524
1541
General Comments 0
You need to be logged in to leave comments. Login now