equal
deleted
inserted
replaced
480 |
480 |
481 infix/suffix resolution of ^ operator (issue2884): |
481 infix/suffix resolution of ^ operator (issue2884): |
482 |
482 |
483 x^:y means (x^):y |
483 x^:y means (x^):y |
484 |
484 |
485 $ try --optimize '1^:2' |
485 $ try '1^:2' |
486 (parent |
|
487 ('symbol', '1') |
|
488 (rangepre |
|
489 ('symbol', '2'))) |
|
490 * optimized: |
|
491 (range |
486 (range |
492 (parentpost |
487 (parentpost |
493 ('symbol', '1')) |
488 ('symbol', '1')) |
494 ('symbol', '2')) |
489 ('symbol', '2')) |
495 * set: |
490 * set: |
496 <spanset+ 0:2> |
491 <spanset+ 0:2> |
497 0 |
492 0 |
498 1 |
493 1 |
499 2 |
494 2 |
500 |
495 |
501 $ try --optimize '1^::2' |
496 $ try '1^::2' |
502 (parent |
|
503 ('symbol', '1') |
|
504 (dagrangepre |
|
505 ('symbol', '2'))) |
|
506 * optimized: |
|
507 (dagrange |
497 (dagrange |
508 (parentpost |
498 (parentpost |
509 ('symbol', '1')) |
499 ('symbol', '1')) |
510 ('symbol', '2')) |
500 ('symbol', '2')) |
511 * set: |
501 * set: |
514 1 |
504 1 |
515 2 |
505 2 |
516 |
506 |
517 x^:y should be resolved before omitting group operators |
507 x^:y should be resolved before omitting group operators |
518 |
508 |
519 $ try --optimize '1^(:2)' |
509 $ try '1^(:2)' |
520 (parent |
510 (parent |
521 ('symbol', '1') |
511 ('symbol', '1') |
522 (group |
512 (group |
523 (rangepre |
513 (rangepre |
524 ('symbol', '2')))) |
514 ('symbol', '2')))) |
525 * optimized: |
|
526 (parent |
|
527 ('symbol', '1') |
|
528 (range |
|
529 ('string', '0') |
|
530 ('symbol', '2'))) |
|
531 hg: parse error: ^ expects a number 0, 1, or 2 |
515 hg: parse error: ^ expects a number 0, 1, or 2 |
532 [255] |
516 [255] |
533 |
517 |
534 x^:y should be resolved recursively |
518 x^:y should be resolved recursively |
535 |
519 |
536 $ try --optimize 'sort(1^:2)' |
520 $ try 'sort(1^:2)' |
537 (func |
|
538 ('symbol', 'sort') |
|
539 (parent |
|
540 ('symbol', '1') |
|
541 (rangepre |
|
542 ('symbol', '2')))) |
|
543 * optimized: |
|
544 (func |
521 (func |
545 ('symbol', 'sort') |
522 ('symbol', 'sort') |
546 (range |
523 (range |
547 (parentpost |
524 (parentpost |
548 ('symbol', '1')) |
525 ('symbol', '1')) |
551 <spanset+ 0:2> |
528 <spanset+ 0:2> |
552 0 |
529 0 |
553 1 |
530 1 |
554 2 |
531 2 |
555 |
532 |
556 $ try --optimize '(3^:4)^:2' |
533 $ try '(3^:4)^:2' |
557 (parent |
|
558 (group |
|
559 (parent |
|
560 ('symbol', '3') |
|
561 (rangepre |
|
562 ('symbol', '4')))) |
|
563 (rangepre |
|
564 ('symbol', '2'))) |
|
565 * optimized: |
|
566 (range |
534 (range |
567 (parentpost |
535 (parentpost |
568 (range |
536 (group |
569 (parentpost |
537 (range |
570 ('symbol', '3')) |
538 (parentpost |
571 ('symbol', '4'))) |
539 ('symbol', '3')) |
|
540 ('symbol', '4')))) |
572 ('symbol', '2')) |
541 ('symbol', '2')) |
573 * set: |
542 * set: |
574 <spanset+ 0:2> |
543 <spanset+ 0:2> |
575 0 |
544 0 |
576 1 |
545 1 |
577 2 |
546 2 |
578 |
547 |
579 $ try --optimize '(3^::4)^::2' |
548 $ try '(3^::4)^::2' |
580 (parent |
|
581 (group |
|
582 (parent |
|
583 ('symbol', '3') |
|
584 (dagrangepre |
|
585 ('symbol', '4')))) |
|
586 (dagrangepre |
|
587 ('symbol', '2'))) |
|
588 * optimized: |
|
589 (dagrange |
549 (dagrange |
590 (parentpost |
550 (parentpost |
591 (dagrange |
551 (group |
592 (parentpost |
552 (dagrange |
593 ('symbol', '3')) |
553 (parentpost |
594 ('symbol', '4'))) |
554 ('symbol', '3')) |
|
555 ('symbol', '4')))) |
595 ('symbol', '2')) |
556 ('symbol', '2')) |
596 * set: |
557 * set: |
597 <baseset+ [0, 1, 2]> |
558 <baseset+ [0, 1, 2]> |
598 0 |
559 0 |
599 1 |
560 1 |
600 2 |
561 2 |
601 |
562 |
602 x^ in alias should also be resolved |
563 x^ in alias should also be resolved |
603 |
564 |
604 $ try --optimize 'A' --config 'revsetalias.A=1^:2' |
565 $ try 'A' --config 'revsetalias.A=1^:2' |
605 ('symbol', 'A') |
566 ('symbol', 'A') |
606 * expanded: |
567 * expanded: |
607 (parent |
|
608 ('symbol', '1') |
|
609 (rangepre |
|
610 ('symbol', '2'))) |
|
611 * optimized: |
|
612 (range |
568 (range |
613 (parentpost |
569 (parentpost |
614 ('symbol', '1')) |
570 ('symbol', '1')) |
615 ('symbol', '2')) |
571 ('symbol', '2')) |
616 * set: |
572 * set: |
617 <spanset+ 0:2> |
573 <spanset+ 0:2> |
618 0 |
574 0 |
619 1 |
575 1 |
620 2 |
576 2 |
621 |
577 |
622 $ try --optimize 'A:2' --config 'revsetalias.A=1^' |
578 $ try 'A:2' --config 'revsetalias.A=1^' |
623 (range |
579 (range |
624 ('symbol', 'A') |
580 ('symbol', 'A') |
625 ('symbol', '2')) |
581 ('symbol', '2')) |
626 * expanded: |
582 * expanded: |
627 (range |
583 (range |
628 (parentpost |
584 (parentpost |
629 ('symbol', '1')) |
585 ('symbol', '1')) |
630 ('symbol', '2')) |
586 ('symbol', '2')) |
631 * optimized: |
|
632 (range |
|
633 (parentpost |
|
634 ('symbol', '1')) |
|
635 ('symbol', '2')) |
|
636 * set: |
587 * set: |
637 <spanset+ 0:2> |
588 <spanset+ 0:2> |
638 0 |
589 0 |
639 1 |
590 1 |
640 2 |
591 2 |
641 |
592 |
642 but not beyond the boundary of alias expansion, because the resolution should |
593 but not beyond the boundary of alias expansion, because the resolution should |
643 be made at the parsing stage |
594 be made at the parsing stage |
644 |
595 |
645 $ try --optimize '1^A' --config 'revsetalias.A=:2' |
596 $ try '1^A' --config 'revsetalias.A=:2' |
646 (parent |
597 (parent |
647 ('symbol', '1') |
598 ('symbol', '1') |
648 ('symbol', 'A')) |
599 ('symbol', 'A')) |
649 * expanded: |
600 * expanded: |
650 (parent |
601 (parent |
651 ('symbol', '1') |
602 ('symbol', '1') |
652 (rangepre |
603 (rangepre |
653 ('symbol', '2'))) |
604 ('symbol', '2'))) |
654 * optimized: |
605 hg: parse error: ^ expects a number 0, 1, or 2 |
655 (range |
606 [255] |
656 (parentpost |
|
657 ('symbol', '1')) |
|
658 ('symbol', '2')) |
|
659 * set: |
|
660 <spanset+ 0:2> |
|
661 0 |
|
662 1 |
|
663 2 |
|
664 BROKEN: should be parsed as '1^(:2)' |
|
665 |
607 |
666 ancestor can accept 0 or more arguments |
608 ancestor can accept 0 or more arguments |
667 |
609 |
668 $ log 'ancestor()' |
610 $ log 'ancestor()' |
669 $ log 'ancestor(1)' |
611 $ log 'ancestor(1)' |