changeset 34011 | 1b28525e6698 |
parent 34010 | 72b5f4d53c58 |
child 34020 | 37b82485097f |
34010:72b5f4d53c58 | 34011:1b28525e6698 |
---|---|
164 $ try --optimize : |
164 $ try --optimize : |
165 (rangeall |
165 (rangeall |
166 None) |
166 None) |
167 * optimized: |
167 * optimized: |
168 (rangeall |
168 (rangeall |
169 None |
169 None) |
170 define) |
|
171 * set: |
170 * set: |
172 <spanset+ 0:10> |
171 <spanset+ 0:10> |
173 0 |
172 0 |
174 1 |
173 1 |
175 2 |
174 2 |
493 * optimized: |
492 * optimized: |
494 (keyvalue |
493 (keyvalue |
495 ('symbol', 'foo') |
494 ('symbol', 'foo') |
496 (func |
495 (func |
497 ('symbol', '_notpublic') |
496 ('symbol', '_notpublic') |
498 None |
497 None)) |
499 any)) |
|
500 hg: parse error: can't use a key-value pair in this context |
498 hg: parse error: can't use a key-value pair in this context |
501 [255] |
499 [255] |
502 |
500 |
503 relation-subscript operator has the highest binding strength (as function call): |
501 relation-subscript operator has the highest binding strength (as function call): |
504 |
502 |
536 * analyzed: |
534 * analyzed: |
537 (relsubscript |
535 (relsubscript |
538 (not |
536 (not |
539 (func |
537 (func |
540 ('symbol', 'public') |
538 ('symbol', 'public') |
541 None |
539 None)) |
542 any) |
|
543 define) |
|
544 ('symbol', 'generations') |
540 ('symbol', 'generations') |
545 ('symbol', '0') |
541 ('symbol', '0')) |
546 define) |
|
547 * optimized: |
542 * optimized: |
548 (relsubscript |
543 (relsubscript |
549 (func |
544 (func |
550 ('symbol', '_notpublic') |
545 ('symbol', '_notpublic') |
551 None |
546 None) |
552 any) |
|
553 ('symbol', 'generations') |
547 ('symbol', 'generations') |
554 ('symbol', '0') |
548 ('symbol', '0')) |
555 define) |
|
556 |
549 |
557 resolution of subscript and relation-subscript ternary operators: |
550 resolution of subscript and relation-subscript ternary operators: |
558 |
551 |
559 $ hg debugrevspec -p analyzed 'tip[0]' |
552 $ hg debugrevspec -p analyzed 'tip[0]' |
560 * analyzed: |
553 * analyzed: |
561 (subscript |
554 (subscript |
562 ('symbol', 'tip') |
555 ('symbol', 'tip') |
563 ('symbol', '0') |
556 ('symbol', '0')) |
564 define) |
|
565 hg: parse error: can't use a subscript in this context |
557 hg: parse error: can't use a subscript in this context |
566 [255] |
558 [255] |
567 |
559 |
568 $ hg debugrevspec -p analyzed 'tip#rel[0]' |
560 $ hg debugrevspec -p analyzed 'tip#rel[0]' |
569 * analyzed: |
561 * analyzed: |
570 (relsubscript |
562 (relsubscript |
571 ('symbol', 'tip') |
563 ('symbol', 'tip') |
572 ('symbol', 'rel') |
564 ('symbol', 'rel') |
573 ('symbol', '0') |
565 ('symbol', '0')) |
574 define) |
|
575 hg: parse error: unknown identifier: rel |
566 hg: parse error: unknown identifier: rel |
576 [255] |
567 [255] |
577 |
568 |
578 $ hg debugrevspec -p analyzed '(tip#rel)[0]' |
569 $ hg debugrevspec -p analyzed '(tip#rel)[0]' |
579 * analyzed: |
570 * analyzed: |
580 (subscript |
571 (subscript |
581 (relation |
572 (relation |
582 ('symbol', 'tip') |
573 ('symbol', 'tip') |
583 ('symbol', 'rel') |
574 ('symbol', 'rel')) |
584 define) |
575 ('symbol', '0')) |
585 ('symbol', '0') |
|
586 define) |
|
587 hg: parse error: can't use a subscript in this context |
576 hg: parse error: can't use a subscript in this context |
588 [255] |
577 [255] |
589 |
578 |
590 $ hg debugrevspec -p analyzed 'tip#rel[0][1]' |
579 $ hg debugrevspec -p analyzed 'tip#rel[0][1]' |
591 * analyzed: |
580 * analyzed: |
592 (subscript |
581 (subscript |
593 (relsubscript |
582 (relsubscript |
594 ('symbol', 'tip') |
583 ('symbol', 'tip') |
595 ('symbol', 'rel') |
584 ('symbol', 'rel') |
596 ('symbol', '0') |
585 ('symbol', '0')) |
597 define) |
586 ('symbol', '1')) |
598 ('symbol', '1') |
|
599 define) |
|
600 hg: parse error: can't use a subscript in this context |
587 hg: parse error: can't use a subscript in this context |
601 [255] |
588 [255] |
602 |
589 |
603 $ hg debugrevspec -p analyzed 'tip#rel0#rel1[1]' |
590 $ hg debugrevspec -p analyzed 'tip#rel0#rel1[1]' |
604 * analyzed: |
591 * analyzed: |
605 (relsubscript |
592 (relsubscript |
606 (relation |
593 (relation |
607 ('symbol', 'tip') |
594 ('symbol', 'tip') |
608 ('symbol', 'rel0') |
595 ('symbol', 'rel0')) |
609 define) |
|
610 ('symbol', 'rel1') |
596 ('symbol', 'rel1') |
611 ('symbol', '1') |
597 ('symbol', '1')) |
612 define) |
|
613 hg: parse error: unknown identifier: rel1 |
598 hg: parse error: unknown identifier: rel1 |
614 [255] |
599 [255] |
615 |
600 |
616 $ hg debugrevspec -p analyzed 'tip#rel0[0]#rel1[1]' |
601 $ hg debugrevspec -p analyzed 'tip#rel0[0]#rel1[1]' |
617 * analyzed: |
602 * analyzed: |
618 (relsubscript |
603 (relsubscript |
619 (relsubscript |
604 (relsubscript |
620 ('symbol', 'tip') |
605 ('symbol', 'tip') |
621 ('symbol', 'rel0') |
606 ('symbol', 'rel0') |
622 ('symbol', '0') |
607 ('symbol', '0')) |
623 define) |
|
624 ('symbol', 'rel1') |
608 ('symbol', 'rel1') |
625 ('symbol', '1') |
609 ('symbol', '1')) |
626 define) |
|
627 hg: parse error: unknown identifier: rel1 |
610 hg: parse error: unknown identifier: rel1 |
628 [255] |
611 [255] |
629 |
612 |
630 parse errors of relation, subscript and relation-subscript operators: |
613 parse errors of relation, subscript and relation-subscript operators: |
631 |
614 |
698 * analyzed: |
681 * analyzed: |
699 (and |
682 (and |
700 (or |
683 (or |
701 (list |
684 (list |
702 ('symbol', '0') |
685 ('symbol', '0') |
703 ('symbol', '1')) |
686 ('symbol', '1'))) |
704 define) |
|
705 (not |
687 (not |
706 ('symbol', '1') |
688 ('symbol', '1'))) |
707 follow) |
|
708 define) |
|
709 * optimized: |
689 * optimized: |
710 (difference |
690 (difference |
711 (func |
691 (func |
712 ('symbol', '_list') |
692 ('symbol', '_list') |
713 ('string', '0\x001') |
693 ('string', '0\x001')) |
714 define) |
694 ('symbol', '1')) |
715 ('symbol', '1') |
|
716 define) |
|
717 0 |
695 0 |
718 |
696 |
719 $ hg debugrevspec -p unknown '0' |
697 $ hg debugrevspec -p unknown '0' |
720 abort: invalid stage name: unknown |
698 abort: invalid stage name: unknown |
721 [255] |
699 [255] |
731 $ hg debugrevspec --verify -v -p analyzed -p optimized 'r3232() & 2' |
709 $ hg debugrevspec --verify -v -p analyzed -p optimized 'r3232() & 2' |
732 * analyzed: |
710 * analyzed: |
733 (and |
711 (and |
734 (func |
712 (func |
735 ('symbol', 'r3232') |
713 ('symbol', 'r3232') |
736 None |
714 None) |
737 define) |
715 ('symbol', '2')) |
716 * optimized: |
|
717 (flipand |
|
738 ('symbol', '2') |
718 ('symbol', '2') |
739 define) |
|
740 * optimized: |
|
741 (and |
|
742 ('symbol', '2') |
|
743 (func |
719 (func |
744 ('symbol', 'r3232') |
720 ('symbol', 'r3232') |
745 None |
721 None)) |
746 define) |
|
747 define) |
|
748 * analyzed set: |
722 * analyzed set: |
749 <baseset [2]> |
723 <baseset [2]> |
750 * optimized set: |
724 * optimized set: |
751 <baseset [2, 2]> |
725 <baseset [2, 2]> |
752 --- analyzed |
726 --- analyzed |
774 * parsed: |
748 * parsed: |
775 (rangeall |
749 (rangeall |
776 None) |
750 None) |
777 * analyzed: |
751 * analyzed: |
778 (rangeall |
752 (rangeall |
779 None |
753 None) |
780 define) |
|
781 * set: |
754 * set: |
782 <spanset+ 0:10> |
755 <spanset+ 0:10> |
783 0 |
756 0 |
784 1 |
757 1 |
785 2 |
758 2 |
791 8 |
764 8 |
792 9 |
765 9 |
793 $ try -p analyzed ':1' |
766 $ try -p analyzed ':1' |
794 * analyzed: |
767 * analyzed: |
795 (rangepre |
768 (rangepre |
796 ('symbol', '1') |
769 ('symbol', '1')) |
797 define) |
|
798 * set: |
770 * set: |
799 <spanset+ 0:2> |
771 <spanset+ 0:2> |
800 0 |
772 0 |
801 1 |
773 1 |
802 $ try -p analyzed ':(1|2)' |
774 $ try -p analyzed ':(1|2)' |
803 * analyzed: |
775 * analyzed: |
804 (rangepre |
776 (rangepre |
805 (or |
777 (or |
806 (list |
778 (list |
807 ('symbol', '1') |
779 ('symbol', '1') |
808 ('symbol', '2')) |
780 ('symbol', '2')))) |
809 define) |
|
810 define) |
|
811 * set: |
781 * set: |
812 <spanset+ 0:3> |
782 <spanset+ 0:3> |
813 0 |
783 0 |
814 1 |
784 1 |
815 2 |
785 2 |
816 $ try -p analyzed ':(1&2)' |
786 $ try -p analyzed ':(1&2)' |
817 * analyzed: |
787 * analyzed: |
818 (rangepre |
788 (rangepre |
819 (and |
789 (and |
820 ('symbol', '1') |
790 ('symbol', '1') |
821 ('symbol', '2') |
791 ('symbol', '2'))) |
822 define) |
|
823 define) |
|
824 * set: |
792 * set: |
825 <baseset []> |
793 <baseset []> |
826 |
794 |
827 infix/suffix resolution of ^ operator (issue2884): |
795 infix/suffix resolution of ^ operator (issue2884): |
828 |
796 |
1641 (func |
1609 (func |
1642 ('symbol', 'only') |
1610 ('symbol', 'only') |
1643 (difference |
1611 (difference |
1644 (range |
1612 (range |
1645 ('symbol', '8') |
1613 ('symbol', '8') |
1646 ('symbol', '9') |
1614 ('symbol', '9')) |
1647 define) |
1615 ('symbol', '8'))) |
1648 ('symbol', '8') |
|
1649 define) |
|
1650 define) |
|
1651 * set: |
1616 * set: |
1652 <baseset+ [8, 9]> |
1617 <baseset+ [8, 9]> |
1653 8 |
1618 8 |
1654 9 |
1619 9 |
1655 $ try --optimize '(9)%(5)' |
1620 $ try --optimize '(9)%(5)' |
1661 * optimized: |
1626 * optimized: |
1662 (func |
1627 (func |
1663 ('symbol', 'only') |
1628 ('symbol', 'only') |
1664 (list |
1629 (list |
1665 ('symbol', '9') |
1630 ('symbol', '9') |
1666 ('symbol', '5')) |
1631 ('symbol', '5'))) |
1667 define) |
|
1668 * set: |
1632 * set: |
1669 <baseset+ [2, 4, 8, 9]> |
1633 <baseset+ [2, 4, 8, 9]> |
1670 2 |
1634 2 |
1671 4 |
1635 4 |
1672 8 |
1636 8 |
1997 * optimized: |
1961 * optimized: |
1998 (difference |
1962 (difference |
1999 (and |
1963 (and |
2000 (range |
1964 (range |
2001 ('symbol', '3') |
1965 ('symbol', '3') |
2002 ('symbol', '0') |
1966 ('symbol', '0')) |
2003 define) |
|
2004 (range |
1967 (range |
2005 ('symbol', '0') |
1968 ('symbol', '0') |
2006 ('symbol', '3') |
1969 ('symbol', '3'))) |
2007 follow) |
|
2008 define) |
|
2009 (range |
1970 (range |
2010 ('symbol', '2') |
1971 ('symbol', '2') |
2011 ('symbol', '1') |
1972 ('symbol', '1'))) |
2012 any) |
|
2013 define) |
|
2014 * set: |
1973 * set: |
2015 <filteredset |
1974 <filteredset |
2016 <filteredset |
1975 <filteredset |
2017 <spanset- 0:4>, |
1976 <spanset- 0:4>, |
2018 <spanset+ 0:4>>, |
1977 <spanset+ 0:4>>, |
2037 ('symbol', '2'))))) |
1996 ('symbol', '2'))))) |
2038 * optimized: |
1997 * optimized: |
2039 (and |
1998 (and |
2040 (range |
1999 (range |
2041 ('symbol', '2') |
2000 ('symbol', '2') |
2042 ('symbol', '0') |
2001 ('symbol', '0')) |
2043 define) |
|
2044 (func |
2002 (func |
2045 ('symbol', '_list') |
2003 ('symbol', '_list') |
2046 ('string', '0\x001\x002') |
2004 ('string', '0\x001\x002'))) |
2047 follow) |
|
2048 define) |
|
2049 * set: |
2005 * set: |
2050 <filteredset |
2006 <filteredset |
2051 <spanset- 0:3>, |
2007 <spanset- 0:3>, |
2052 <baseset [0, 1, 2]>> |
2008 <baseset [0, 1, 2]>> |
2053 2 |
2009 2 |
2070 ('symbol', '2'))))) |
2026 ('symbol', '2'))))) |
2071 * optimized: |
2027 * optimized: |
2072 (and |
2028 (and |
2073 (range |
2029 (range |
2074 ('symbol', '2') |
2030 ('symbol', '2') |
2075 ('symbol', '0') |
2031 ('symbol', '0')) |
2076 define) |
|
2077 (or |
2032 (or |
2078 (list |
2033 (list |
2079 (range |
2034 (range |
2080 ('symbol', '0') |
2035 ('symbol', '0') |
2081 ('symbol', '1') |
2036 ('symbol', '1')) |
2082 follow) |
2037 ('symbol', '2')))) |
2083 ('symbol', '2')) |
|
2084 follow) |
|
2085 define) |
|
2086 * set: |
2038 * set: |
2087 <filteredset |
2039 <filteredset |
2088 <spanset- 0:3>, |
2040 <spanset- 0:3>, |
2089 <addset |
2041 <addset |
2090 <spanset+ 0:2>, |
2042 <spanset+ 0:2>, |
2102 ('symbol', '0')) |
2054 ('symbol', '0')) |
2103 (func |
2055 (func |
2104 ('symbol', '_intlist') |
2056 ('symbol', '_intlist') |
2105 ('string', '0\x001\x002'))) |
2057 ('string', '0\x001\x002'))) |
2106 * optimized: |
2058 * optimized: |
2107 (and |
2059 (flipand |
2108 (func |
2060 (func |
2109 ('symbol', '_intlist') |
2061 ('symbol', '_intlist') |
2110 ('string', '0\x001\x002') |
2062 ('string', '0\x001\x002')) |
2111 follow) |
|
2112 (range |
2063 (range |
2113 ('symbol', '2') |
2064 ('symbol', '2') |
2114 ('symbol', '0') |
2065 ('symbol', '0'))) |
2115 define) |
|
2116 define) |
|
2117 * set: |
2066 * set: |
2118 <filteredset |
2067 <filteredset |
2119 <spanset- 0:3>, |
2068 <spanset- 0:3>, |
2120 <baseset+ [0, 1, 2]>> |
2069 <baseset+ [0, 1, 2]>> |
2121 2 |
2070 2 |
2132 ('symbol', '0'))) |
2081 ('symbol', '0'))) |
2133 * optimized: |
2082 * optimized: |
2134 (and |
2083 (and |
2135 (func |
2084 (func |
2136 ('symbol', '_intlist') |
2085 ('symbol', '_intlist') |
2137 ('string', '0\x002\x001') |
2086 ('string', '0\x002\x001')) |
2138 define) |
|
2139 (range |
2087 (range |
2140 ('symbol', '2') |
2088 ('symbol', '2') |
2141 ('symbol', '0') |
2089 ('symbol', '0'))) |
2142 follow) |
|
2143 define) |
|
2144 * set: |
2090 * set: |
2145 <filteredset |
2091 <filteredset |
2146 <baseset [0, 2, 1]>, |
2092 <baseset [0, 2, 1]>, |
2147 <spanset- 0:3>> |
2093 <spanset- 0:3>> |
2148 0 |
2094 0 |
2161 ('string', '*'))) (glob) |
2107 ('string', '*'))) (glob) |
2162 * optimized: |
2108 * optimized: |
2163 (and |
2109 (and |
2164 (range |
2110 (range |
2165 ('symbol', '2') |
2111 ('symbol', '2') |
2166 ('symbol', '0') |
2112 ('symbol', '0')) |
2167 define) |
|
2168 (func |
2113 (func |
2169 ('symbol', '_hexlist') |
2114 ('symbol', '_hexlist') |
2170 ('string', '*') (glob) |
2115 ('string', '*'))) (glob) |
2171 follow) |
|
2172 define) |
|
2173 * set: |
2116 * set: |
2174 <filteredset |
2117 <filteredset |
2175 <spanset- 0:3>, |
2118 <spanset- 0:3>, |
2176 <baseset [0, 1, 2]>> |
2119 <baseset [0, 1, 2]>> |
2177 2 |
2120 2 |
2185 ('string', '*')) (glob) |
2128 ('string', '*')) (glob) |
2186 (range |
2129 (range |
2187 ('symbol', '2') |
2130 ('symbol', '2') |
2188 ('symbol', '0'))) |
2131 ('symbol', '0'))) |
2189 * optimized: |
2132 * optimized: |
2190 (and |
2133 (flipand |
2191 (range |
2134 (range |
2192 ('symbol', '2') |
2135 ('symbol', '2') |
2193 ('symbol', '0') |
2136 ('symbol', '0')) |
2194 follow) |
|
2195 (func |
2137 (func |
2196 ('symbol', '_hexlist') |
2138 ('symbol', '_hexlist') |
2197 ('string', '*') (glob) |
2139 ('string', '*'))) (glob) |
2198 define) |
|
2199 define) |
|
2200 * set: |
2140 * set: |
2201 <baseset [0, 2, 1]> |
2141 <baseset [0, 2, 1]> |
2202 0 |
2142 0 |
2203 2 |
2143 2 |
2204 1 |
2144 1 |
2209 $ try -p optimized '2:0 & not (0 + 1)' |
2149 $ try -p optimized '2:0 & not (0 + 1)' |
2210 * optimized: |
2150 * optimized: |
2211 (difference |
2151 (difference |
2212 (range |
2152 (range |
2213 ('symbol', '2') |
2153 ('symbol', '2') |
2214 ('symbol', '0') |
2154 ('symbol', '0')) |
2215 define) |
|
2216 (func |
2155 (func |
2217 ('symbol', '_list') |
2156 ('symbol', '_list') |
2218 ('string', '0\x001') |
2157 ('string', '0\x001'))) |
2219 any) |
|
2220 define) |
|
2221 * set: |
2158 * set: |
2222 <filteredset |
2159 <filteredset |
2223 <spanset- 0:3>, |
2160 <spanset- 0:3>, |
2224 <not |
2161 <not |
2225 <baseset [0, 1]>>> |
2162 <baseset [0, 1]>>> |
2228 $ try -p optimized '2:0 & not (0:2 & (0 + 1))' |
2165 $ try -p optimized '2:0 & not (0:2 & (0 + 1))' |
2229 * optimized: |
2166 * optimized: |
2230 (difference |
2167 (difference |
2231 (range |
2168 (range |
2232 ('symbol', '2') |
2169 ('symbol', '2') |
2233 ('symbol', '0') |
2170 ('symbol', '0')) |
2234 define) |
|
2235 (and |
2171 (and |
2236 (range |
2172 (range |
2237 ('symbol', '0') |
2173 ('symbol', '0') |
2238 ('symbol', '2') |
2174 ('symbol', '2')) |
2239 any) |
|
2240 (func |
2175 (func |
2241 ('symbol', '_list') |
2176 ('symbol', '_list') |
2242 ('string', '0\x001') |
2177 ('string', '0\x001')))) |
2243 any) |
|
2244 any) |
|
2245 define) |
|
2246 * set: |
2178 * set: |
2247 <filteredset |
2179 <filteredset |
2248 <spanset- 0:3>, |
2180 <spanset- 0:3>, |
2249 <not |
2181 <not |
2250 <baseset [0, 1]>>> |
2182 <baseset [0, 1]>>> |
2257 * optimized: |
2189 * optimized: |
2258 (func |
2190 (func |
2259 ('symbol', 'present') |
2191 ('symbol', 'present') |
2260 (func |
2192 (func |
2261 ('symbol', '_list') |
2193 ('symbol', '_list') |
2262 ('string', '2\x000\x001') |
2194 ('string', '2\x000\x001'))) |
2263 define) |
|
2264 define) |
|
2265 * set: |
2195 * set: |
2266 <baseset [2, 0, 1]> |
2196 <baseset [2, 0, 1]> |
2267 2 |
2197 2 |
2268 0 |
2198 0 |
2269 1 |
2199 1 |
2282 ('symbol', '2'))))) |
2212 ('symbol', '2'))))) |
2283 * optimized: |
2213 * optimized: |
2284 (and |
2214 (and |
2285 (range |
2215 (range |
2286 ('symbol', '2') |
2216 ('symbol', '2') |
2287 ('symbol', '0') |
2217 ('symbol', '0')) |
2288 define) |
|
2289 (func |
2218 (func |
2290 ('symbol', 'present') |
2219 ('symbol', 'present') |
2291 (func |
2220 (func |
2292 ('symbol', '_list') |
2221 ('symbol', '_list') |
2293 ('string', '0\x001\x002') |
2222 ('string', '0\x001\x002')))) |
2294 follow) |
|
2295 follow) |
|
2296 define) |
|
2297 * set: |
2223 * set: |
2298 <filteredset |
2224 <filteredset |
2299 <spanset- 0:3>, |
2225 <spanset- 0:3>, |
2300 <baseset [0, 1, 2]>> |
2226 <baseset [0, 1, 2]>> |
2301 2 |
2227 2 |
2316 None))) |
2242 None))) |
2317 * optimized: |
2243 * optimized: |
2318 (and |
2244 (and |
2319 (range |
2245 (range |
2320 ('symbol', '0') |
2246 ('symbol', '0') |
2321 ('symbol', '2') |
2247 ('symbol', '2')) |
2322 define) |
|
2323 (func |
2248 (func |
2324 ('symbol', 'reverse') |
2249 ('symbol', 'reverse') |
2325 (func |
2250 (func |
2326 ('symbol', 'all') |
2251 ('symbol', 'all') |
2327 None |
2252 None))) |
2328 define) |
|
2329 follow) |
|
2330 define) |
|
2331 * set: |
2253 * set: |
2332 <filteredset |
2254 <filteredset |
2333 <spanset+ 0:3>, |
2255 <spanset+ 0:3>, |
2334 <spanset+ 0:10>> |
2256 <spanset+ 0:10>> |
2335 0 |
2257 0 |
2353 ('symbol', 'rev'))))) |
2275 ('symbol', 'rev'))))) |
2354 * optimized: |
2276 * optimized: |
2355 (and |
2277 (and |
2356 (range |
2278 (range |
2357 ('symbol', '0') |
2279 ('symbol', '0') |
2358 ('symbol', '2') |
2280 ('symbol', '2')) |
2359 define) |
|
2360 (func |
2281 (func |
2361 ('symbol', 'sort') |
2282 ('symbol', 'sort') |
2362 (list |
2283 (list |
2363 (func |
2284 (func |
2364 ('symbol', 'all') |
2285 ('symbol', 'all') |
2365 None |
2286 None) |
2366 define) |
2287 ('string', '-rev')))) |
2367 ('string', '-rev')) |
|
2368 follow) |
|
2369 define) |
|
2370 * set: |
2288 * set: |
2371 <filteredset |
2289 <filteredset |
2372 <spanset+ 0:3>, |
2290 <spanset+ 0:3>, |
2373 <spanset+ 0:10>> |
2291 <spanset+ 0:10>> |
2374 0 |
2292 0 |
2400 ('symbol', '2'))))) |
2318 ('symbol', '2'))))) |
2401 * optimized: |
2319 * optimized: |
2402 (and |
2320 (and |
2403 (range |
2321 (range |
2404 ('symbol', '2') |
2322 ('symbol', '2') |
2405 ('symbol', '0') |
2323 ('symbol', '0')) |
2406 define) |
|
2407 (func |
2324 (func |
2408 ('symbol', 'first') |
2325 ('symbol', 'first') |
2409 (func |
2326 (func |
2410 ('symbol', '_list') |
2327 ('symbol', '_list') |
2411 ('string', '1\x000\x002') |
2328 ('string', '1\x000\x002')))) |
2412 define) |
|
2413 follow) |
|
2414 define) |
|
2415 * set: |
2329 * set: |
2416 <filteredset |
2330 <filteredset |
2417 <baseset [1]>, |
2331 <baseset [1]>, |
2418 <spanset- 0:3>> |
2332 <spanset- 0:3>> |
2419 1 |
2333 1 |
2433 ('symbol', '1')))))) |
2347 ('symbol', '1')))))) |
2434 * optimized: |
2348 * optimized: |
2435 (difference |
2349 (difference |
2436 (range |
2350 (range |
2437 ('symbol', '2') |
2351 ('symbol', '2') |
2438 ('symbol', '0') |
2352 ('symbol', '0')) |
2439 define) |
|
2440 (func |
2353 (func |
2441 ('symbol', 'last') |
2354 ('symbol', 'last') |
2442 (func |
2355 (func |
2443 ('symbol', '_list') |
2356 ('symbol', '_list') |
2444 ('string', '0\x002\x001') |
2357 ('string', '0\x002\x001')))) |
2445 define) |
|
2446 any) |
|
2447 define) |
|
2448 * set: |
2358 * set: |
2449 <filteredset |
2359 <filteredset |
2450 <spanset- 0:3>, |
2360 <spanset- 0:3>, |
2451 <not |
2361 <not |
2452 <baseset [1]>>> |
2362 <baseset [1]>>> |
2475 ('symbol', '1')))))) |
2385 ('symbol', '1')))))) |
2476 * optimized: |
2386 * optimized: |
2477 (and |
2387 (and |
2478 (range |
2388 (range |
2479 ('symbol', '2') |
2389 ('symbol', '2') |
2480 ('symbol', '0') |
2390 ('symbol', '0')) |
2481 define) |
|
2482 (range |
2391 (range |
2483 (func |
2392 (func |
2484 ('symbol', '_list') |
2393 ('symbol', '_list') |
2485 ('string', '1\x000\x002') |
2394 ('string', '1\x000\x002')) |
2486 define) |
|
2487 (func |
2395 (func |
2488 ('symbol', '_list') |
2396 ('symbol', '_list') |
2489 ('string', '0\x002\x001') |
2397 ('string', '0\x002\x001')))) |
2490 define) |
|
2491 follow) |
|
2492 define) |
|
2493 * set: |
2398 * set: |
2494 <filteredset |
2399 <filteredset |
2495 <spanset- 0:3>, |
2400 <spanset- 0:3>, |
2496 <baseset [1]>> |
2401 <baseset [1]>> |
2497 1 |
2402 1 |
2498 |
2403 |
2499 'A & B' can be rewritten as 'B & A' by weight, but that's fine as long as |
2404 'A & B' can be rewritten as 'flipand(B, A)' by weight. |
2500 the ordering rule is determined before the rewrite; in this example, |
|
2501 'B' follows the order of the initial set, which is the same order as 'A' |
|
2502 since 'A' also follows the order: |
|
2503 |
2405 |
2504 $ try --optimize 'contains("glob:*") & (2 + 0 + 1)' |
2406 $ try --optimize 'contains("glob:*") & (2 + 0 + 1)' |
2505 (and |
2407 (and |
2506 (func |
2408 (func |
2507 ('symbol', 'contains') |
2409 ('symbol', 'contains') |
2511 (list |
2413 (list |
2512 ('symbol', '2') |
2414 ('symbol', '2') |
2513 ('symbol', '0') |
2415 ('symbol', '0') |
2514 ('symbol', '1'))))) |
2416 ('symbol', '1'))))) |
2515 * optimized: |
2417 * optimized: |
2516 (and |
2418 (flipand |
2517 (func |
2419 (func |
2518 ('symbol', '_list') |
2420 ('symbol', '_list') |
2519 ('string', '2\x000\x001') |
2421 ('string', '2\x000\x001')) |
2520 follow) |
|
2521 (func |
2422 (func |
2522 ('symbol', 'contains') |
2423 ('symbol', 'contains') |
2523 ('string', 'glob:*') |
2424 ('string', 'glob:*'))) |
2524 define) |
|
2525 define) |
|
2526 * set: |
2425 * set: |
2527 <filteredset |
2426 <filteredset |
2528 <baseset+ [0, 1, 2]>, |
2427 <baseset+ [0, 1, 2]>, |
2529 <contains 'glob:*'>> |
2428 <contains 'glob:*'>> |
2530 0 |
2429 0 |
2546 (list |
2445 (list |
2547 ('symbol', '0') |
2446 ('symbol', '0') |
2548 ('symbol', '2') |
2447 ('symbol', '2') |
2549 ('symbol', '1'))))) |
2448 ('symbol', '1'))))) |
2550 * optimized: |
2449 * optimized: |
2551 (and |
2450 (flipand |
2552 (func |
2451 (func |
2553 ('symbol', '_list') |
2452 ('symbol', '_list') |
2554 ('string', '0\x002\x001') |
2453 ('string', '0\x002\x001')) |
2555 follow) |
|
2556 (func |
2454 (func |
2557 ('symbol', 'reverse') |
2455 ('symbol', 'reverse') |
2558 (func |
2456 (func |
2559 ('symbol', 'contains') |
2457 ('symbol', 'contains') |
2560 ('string', 'glob:*') |
2458 ('string', 'glob:*')))) |
2561 define) |
|
2562 define) |
|
2563 define) |
|
2564 * set: |
2459 * set: |
2565 <filteredset |
2460 <filteredset |
2566 <baseset- [0, 1, 2]>, |
2461 <baseset- [0, 1, 2]>, |
2567 <contains 'glob:*'>> |
2462 <contains 'glob:*'>> |
2568 2 |
2463 2 |
2951 ('symbol', 'tip') |
2846 ('symbol', 'tip') |
2952 ('symbol', 'null'))) |
2847 ('symbol', 'null'))) |
2953 * optimized: |
2848 * optimized: |
2954 (func |
2849 (func |
2955 ('symbol', '_list') |
2850 ('symbol', '_list') |
2956 ('string', '0\x001\x002\x00-2\x00tip\x00null') |
2851 ('string', '0\x001\x002\x00-2\x00tip\x00null')) |
2957 define) |
|
2958 * set: |
2852 * set: |
2959 <baseset [0, 1, 2, 8, 9, -1]> |
2853 <baseset [0, 1, 2, 8, 9, -1]> |
2960 0 |
2854 0 |
2961 1 |
2855 1 |
2962 2 |
2856 2 |
2975 * optimized: |
2869 * optimized: |
2976 (or |
2870 (or |
2977 (list |
2871 (list |
2978 (func |
2872 (func |
2979 ('symbol', '_list') |
2873 ('symbol', '_list') |
2980 ('string', '0\x001') |
2874 ('string', '0\x001')) |
2981 define) |
|
2982 (range |
2875 (range |
2983 ('symbol', '2') |
2876 ('symbol', '2') |
2984 ('symbol', '3') |
2877 ('symbol', '3')))) |
2985 define)) |
|
2986 define) |
|
2987 * set: |
2878 * set: |
2988 <addset |
2879 <addset |
2989 <baseset [0, 1]>, |
2880 <baseset [0, 1]>, |
2990 <spanset+ 2:4>> |
2881 <spanset+ 2:4>> |
2991 0 |
2882 0 |
3008 * optimized: |
2899 * optimized: |
3009 (or |
2900 (or |
3010 (list |
2901 (list |
3011 (range |
2902 (range |
3012 ('symbol', '0') |
2903 ('symbol', '0') |
3013 ('symbol', '1') |
2904 ('symbol', '1')) |
3014 define) |
|
3015 ('symbol', '2') |
2905 ('symbol', '2') |
3016 (range |
2906 (range |
3017 ('symbol', '3') |
2907 ('symbol', '3') |
3018 ('symbol', '4') |
2908 ('symbol', '4')) |
3019 define) |
|
3020 (func |
2909 (func |
3021 ('symbol', '_list') |
2910 ('symbol', '_list') |
3022 ('string', '5\x006') |
2911 ('string', '5\x006')))) |
3023 define)) |
|
3024 define) |
|
3025 * set: |
2912 * set: |
3026 <addset |
2913 <addset |
3027 <addset |
2914 <addset |
3028 <spanset+ 0:2>, |
2915 <spanset+ 0:2>, |
3029 <baseset [2]>>, |
2916 <baseset [2]>>, |
3046 (list |
2933 (list |
3047 ('symbol', '0') |
2934 ('symbol', '0') |
3048 ('symbol', '1') |
2935 ('symbol', '1') |
3049 ('symbol', '2') |
2936 ('symbol', '2') |
3050 ('symbol', '3') |
2937 ('symbol', '3') |
3051 ('symbol', '4')) |
2938 ('symbol', '4'))) |
3052 define) |
|
3053 * set: |
2939 * set: |
3054 <addset |
2940 <addset |
3055 <addset |
2941 <addset |
3056 <baseset [0]>, |
2942 <baseset [0]>, |
3057 <baseset [1]>>, |
2943 <baseset [1]>>, |
3167 None))) |
3053 None))) |
3168 * optimized: |
3054 * optimized: |
3169 (or |
3055 (or |
3170 (list |
3056 (list |
3171 ('symbol', '0') |
3057 ('symbol', '0') |
3172 None) |
3058 None)) |
3173 define) |
|
3174 hg: parse error: missing argument |
3059 hg: parse error: missing argument |
3175 [255] |
3060 [255] |
3176 |
3061 |
3177 test that chained `or` operations never eat up stack (issue4624) |
3062 test that chained `or` operations never eat up stack (issue4624) |
3178 (uses `0:1` instead of `0` to avoid future optimization of trivial revisions) |
3063 (uses `0:1` instead of `0` to avoid future optimization of trivial revisions) |
3198 * optimized: |
3083 * optimized: |
3199 (func |
3084 (func |
3200 ('symbol', 'only') |
3085 ('symbol', 'only') |
3201 (list |
3086 (list |
3202 ('symbol', '3') |
3087 ('symbol', '3') |
3203 ('symbol', '1')) |
3088 ('symbol', '1'))) |
3204 define) |
|
3205 * set: |
3089 * set: |
3206 <baseset+ [3]> |
3090 <baseset+ [3]> |
3207 3 |
3091 3 |
3208 $ try --optimize 'ancestors(1) - ancestors(3)' |
3092 $ try --optimize 'ancestors(1) - ancestors(3)' |
3209 (minus |
3093 (minus |
3216 * optimized: |
3100 * optimized: |
3217 (func |
3101 (func |
3218 ('symbol', 'only') |
3102 ('symbol', 'only') |
3219 (list |
3103 (list |
3220 ('symbol', '1') |
3104 ('symbol', '1') |
3221 ('symbol', '3')) |
3105 ('symbol', '3'))) |
3222 define) |
|
3223 * set: |
3106 * set: |
3224 <baseset+ []> |
3107 <baseset+ []> |
3225 $ try --optimize 'not ::2 and ::6' |
3108 $ try --optimize 'not ::2 and ::6' |
3226 (and |
3109 (and |
3227 (not |
3110 (not |
3232 * optimized: |
3115 * optimized: |
3233 (func |
3116 (func |
3234 ('symbol', 'only') |
3117 ('symbol', 'only') |
3235 (list |
3118 (list |
3236 ('symbol', '6') |
3119 ('symbol', '6') |
3237 ('symbol', '2')) |
3120 ('symbol', '2'))) |
3238 define) |
|
3239 * set: |
3121 * set: |
3240 <baseset+ [3, 4, 5, 6]> |
3122 <baseset+ [3, 4, 5, 6]> |
3241 3 |
3123 3 |
3242 4 |
3124 4 |
3243 5 |
3125 5 |
3254 * optimized: |
3136 * optimized: |
3255 (func |
3137 (func |
3256 ('symbol', 'only') |
3138 ('symbol', 'only') |
3257 (list |
3139 (list |
3258 ('symbol', '6') |
3140 ('symbol', '6') |
3259 ('symbol', '4')) |
3141 ('symbol', '4'))) |
3260 define) |
|
3261 * set: |
3142 * set: |
3262 <baseset+ [3, 5, 6]> |
3143 <baseset+ [3, 5, 6]> |
3263 3 |
3144 3 |
3264 5 |
3145 5 |
3265 6 |
3146 6 |
3271 (dagrangepre |
3152 (dagrangepre |
3272 ('symbol', '1')) |
3153 ('symbol', '1')) |
3273 (group |
3154 (group |
3274 None)) |
3155 None)) |
3275 * optimized: |
3156 * optimized: |
3276 (and |
3157 (flipand |
3277 None |
3158 None |
3278 (func |
3159 (func |
3279 ('symbol', 'ancestors') |
3160 ('symbol', 'ancestors') |
3280 ('symbol', '1') |
3161 ('symbol', '1'))) |
3281 define) |
|
3282 define) |
|
3283 hg: parse error: missing argument |
3162 hg: parse error: missing argument |
3284 [255] |
3163 [255] |
3285 |
3164 |
3286 optimization to only() works only if ancestors() takes only one argument |
3165 optimization to only() works only if ancestors() takes only one argument |
3287 |
3166 |
3288 $ hg debugrevspec -p optimized 'ancestors(6) - ancestors(4, 1)' |
3167 $ hg debugrevspec -p optimized 'ancestors(6) - ancestors(4, 1)' |
3289 * optimized: |
3168 * optimized: |
3290 (difference |
3169 (difference |
3291 (func |
3170 (func |
3292 ('symbol', 'ancestors') |
3171 ('symbol', 'ancestors') |
3293 ('symbol', '6') |
3172 ('symbol', '6')) |
3294 define) |
|
3295 (func |
3173 (func |
3296 ('symbol', 'ancestors') |
3174 ('symbol', 'ancestors') |
3297 (list |
3175 (list |
3298 ('symbol', '4') |
3176 ('symbol', '4') |
3299 ('symbol', '1')) |
3177 ('symbol', '1')))) |
3300 any) |
|
3301 define) |
|
3302 0 |
3178 0 |
3303 1 |
3179 1 |
3304 3 |
3180 3 |
3305 5 |
3181 5 |
3306 6 |
3182 6 |
3309 (difference |
3185 (difference |
3310 (func |
3186 (func |
3311 ('symbol', 'ancestors') |
3187 ('symbol', 'ancestors') |
3312 (list |
3188 (list |
3313 ('symbol', '6') |
3189 ('symbol', '6') |
3314 ('symbol', '1')) |
3190 ('symbol', '1'))) |
3315 define) |
|
3316 (func |
3191 (func |
3317 ('symbol', 'ancestors') |
3192 ('symbol', 'ancestors') |
3318 ('symbol', '4') |
3193 ('symbol', '4'))) |
3319 any) |
|
3320 define) |
|
3321 5 |
3194 5 |
3322 6 |
3195 6 |
3323 |
3196 |
3324 optimization disabled if keyword arguments passed (because we're too lazy |
3197 optimization disabled if keyword arguments passed (because we're too lazy |
3325 to support it) |
3198 to support it) |
3329 (difference |
3202 (difference |
3330 (func |
3203 (func |
3331 ('symbol', 'ancestors') |
3204 ('symbol', 'ancestors') |
3332 (keyvalue |
3205 (keyvalue |
3333 ('symbol', 'set') |
3206 ('symbol', 'set') |
3334 ('symbol', '6')) |
3207 ('symbol', '6'))) |
3335 define) |
|
3336 (func |
3208 (func |
3337 ('symbol', 'ancestors') |
3209 ('symbol', 'ancestors') |
3338 (keyvalue |
3210 (keyvalue |
3339 ('symbol', 'set') |
3211 ('symbol', 'set') |
3340 ('symbol', '4')) |
3212 ('symbol', '4')))) |
3341 any) |
|
3342 define) |
|
3343 3 |
3213 3 |
3344 5 |
3214 5 |
3345 6 |
3215 6 |
3346 |
3216 |
3347 invalid function call should not be optimized to only() |
3217 invalid function call should not be optimized to only() |