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()' |
|
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 |
|
|
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 |
|
|
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