179 7 |
179 7 |
180 8 |
180 8 |
181 9 |
181 9 |
182 $ try 3::6 |
182 $ try 3::6 |
183 (dagrange |
183 (dagrange |
184 ('symbol', '3') |
184 (symbol '3') |
185 ('symbol', '6')) |
185 (symbol '6')) |
186 * set: |
186 * set: |
187 <baseset+ [3, 5, 6]> |
187 <baseset+ [3, 5, 6]> |
188 3 |
188 3 |
189 5 |
189 5 |
190 6 |
190 6 |
191 $ try '0|1|2' |
191 $ try '0|1|2' |
192 (or |
192 (or |
193 (list |
193 (list |
194 ('symbol', '0') |
194 (symbol '0') |
195 ('symbol', '1') |
195 (symbol '1') |
196 ('symbol', '2'))) |
196 (symbol '2'))) |
197 * set: |
197 * set: |
198 <baseset [0, 1, 2]> |
198 <baseset [0, 1, 2]> |
199 0 |
199 0 |
200 1 |
200 1 |
201 2 |
201 2 |
202 |
202 |
203 names that should work without quoting |
203 names that should work without quoting |
204 |
204 |
205 $ try a |
205 $ try a |
206 ('symbol', 'a') |
206 (symbol 'a') |
207 * set: |
207 * set: |
208 <baseset [0]> |
208 <baseset [0]> |
209 0 |
209 0 |
210 $ try b-a |
210 $ try b-a |
211 (minus |
211 (minus |
212 ('symbol', 'b') |
212 (symbol 'b') |
213 ('symbol', 'a')) |
213 (symbol 'a')) |
214 * set: |
214 * set: |
215 <filteredset |
215 <filteredset |
216 <baseset [1]>, |
216 <baseset [1]>, |
217 <not |
217 <not |
218 <baseset [0]>>> |
218 <baseset [0]>>> |
219 1 |
219 1 |
220 $ try _a_b_c_ |
220 $ try _a_b_c_ |
221 ('symbol', '_a_b_c_') |
221 (symbol '_a_b_c_') |
222 * set: |
222 * set: |
223 <baseset [6]> |
223 <baseset [6]> |
224 6 |
224 6 |
225 $ try _a_b_c_-a |
225 $ try _a_b_c_-a |
226 (minus |
226 (minus |
227 ('symbol', '_a_b_c_') |
227 (symbol '_a_b_c_') |
228 ('symbol', 'a')) |
228 (symbol 'a')) |
229 * set: |
229 * set: |
230 <filteredset |
230 <filteredset |
231 <baseset [6]>, |
231 <baseset [6]>, |
232 <not |
232 <not |
233 <baseset [0]>>> |
233 <baseset [0]>>> |
234 6 |
234 6 |
235 $ try .a.b.c. |
235 $ try .a.b.c. |
236 ('symbol', '.a.b.c.') |
236 (symbol '.a.b.c.') |
237 * set: |
237 * set: |
238 <baseset [7]> |
238 <baseset [7]> |
239 7 |
239 7 |
240 $ try .a.b.c.-a |
240 $ try .a.b.c.-a |
241 (minus |
241 (minus |
242 ('symbol', '.a.b.c.') |
242 (symbol '.a.b.c.') |
243 ('symbol', 'a')) |
243 (symbol 'a')) |
244 * set: |
244 * set: |
245 <filteredset |
245 <filteredset |
246 <baseset [7]>, |
246 <baseset [7]>, |
247 <not |
247 <not |
248 <baseset [0]>>> |
248 <baseset [0]>>> |
249 7 |
249 7 |
250 |
250 |
251 names that should be caught by fallback mechanism |
251 names that should be caught by fallback mechanism |
252 |
252 |
253 $ try -- '-a-b-c-' |
253 $ try -- '-a-b-c-' |
254 ('symbol', '-a-b-c-') |
254 (symbol '-a-b-c-') |
255 * set: |
255 * set: |
256 <baseset [4]> |
256 <baseset [4]> |
257 4 |
257 4 |
258 $ log -a-b-c- |
258 $ log -a-b-c- |
259 4 |
259 4 |
260 $ try '+a+b+c+' |
260 $ try '+a+b+c+' |
261 ('symbol', '+a+b+c+') |
261 (symbol '+a+b+c+') |
262 * set: |
262 * set: |
263 <baseset [3]> |
263 <baseset [3]> |
264 3 |
264 3 |
265 $ try '+a+b+c+:' |
265 $ try '+a+b+c+:' |
266 (rangepost |
266 (rangepost |
267 ('symbol', '+a+b+c+')) |
267 (symbol '+a+b+c+')) |
268 * set: |
268 * set: |
269 <spanset+ 3:10> |
269 <spanset+ 3:10> |
270 3 |
270 3 |
271 4 |
271 4 |
272 5 |
272 5 |
469 hg: parse error: extra got an unexpected keyword argument 'unknown' |
469 hg: parse error: extra got an unexpected keyword argument 'unknown' |
470 [255] |
470 [255] |
471 |
471 |
472 $ try 'foo=bar|baz' |
472 $ try 'foo=bar|baz' |
473 (keyvalue |
473 (keyvalue |
474 ('symbol', 'foo') |
474 (symbol 'foo') |
475 (or |
475 (or |
476 (list |
476 (list |
477 ('symbol', 'bar') |
477 (symbol 'bar') |
478 ('symbol', 'baz')))) |
478 (symbol 'baz')))) |
479 hg: parse error: can't use a key-value pair in this context |
479 hg: parse error: can't use a key-value pair in this context |
480 [255] |
480 [255] |
481 |
481 |
482 right-hand side should be optimized recursively |
482 right-hand side should be optimized recursively |
483 |
483 |
484 $ try --optimize 'foo=(not public())' |
484 $ try --optimize 'foo=(not public())' |
485 (keyvalue |
485 (keyvalue |
486 ('symbol', 'foo') |
486 (symbol 'foo') |
487 (group |
487 (group |
488 (not |
488 (not |
489 (func |
489 (func |
490 ('symbol', 'public') |
490 (symbol 'public') |
491 None)))) |
491 None)))) |
492 * optimized: |
492 * optimized: |
493 (keyvalue |
493 (keyvalue |
494 ('symbol', 'foo') |
494 (symbol 'foo') |
495 (func |
495 (func |
496 ('symbol', '_notpublic') |
496 (symbol '_notpublic') |
497 None)) |
497 None)) |
498 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 |
499 [255] |
499 [255] |
500 |
500 |
501 relation-subscript operator has the highest binding strength (as function call): |
501 relation-subscript operator has the highest binding strength (as function call): |
502 |
502 |
503 $ hg debugrevspec -p parsed 'tip:tip^#generations[-1]' |
503 $ hg debugrevspec -p parsed 'tip:tip^#generations[-1]' |
504 * parsed: |
504 * parsed: |
505 (range |
505 (range |
506 ('symbol', 'tip') |
506 (symbol 'tip') |
507 (relsubscript |
507 (relsubscript |
508 (parentpost |
508 (parentpost |
509 ('symbol', 'tip')) |
509 (symbol 'tip')) |
510 ('symbol', 'generations') |
510 (symbol 'generations') |
511 (negate |
511 (negate |
512 ('symbol', '1')))) |
512 (symbol '1')))) |
513 9 |
513 9 |
514 8 |
514 8 |
515 7 |
515 7 |
516 6 |
516 6 |
517 5 |
517 5 |
520 $ hg debugrevspec -p parsed --no-show-revs 'not public()#generations[0]' |
520 $ hg debugrevspec -p parsed --no-show-revs 'not public()#generations[0]' |
521 * parsed: |
521 * parsed: |
522 (not |
522 (not |
523 (relsubscript |
523 (relsubscript |
524 (func |
524 (func |
525 ('symbol', 'public') |
525 (symbol 'public') |
526 None) |
526 None) |
527 ('symbol', 'generations') |
527 (symbol 'generations') |
528 ('symbol', '0'))) |
528 (symbol '0'))) |
529 |
529 |
530 left-hand side of relation-subscript operator should be optimized recursively: |
530 left-hand side of relation-subscript operator should be optimized recursively: |
531 |
531 |
532 $ hg debugrevspec -p analyzed -p optimized --no-show-revs \ |
532 $ hg debugrevspec -p analyzed -p optimized --no-show-revs \ |
533 > '(not public())#generations[0]' |
533 > '(not public())#generations[0]' |
534 * analyzed: |
534 * analyzed: |
535 (relsubscript |
535 (relsubscript |
536 (not |
536 (not |
537 (func |
537 (func |
538 ('symbol', 'public') |
538 (symbol 'public') |
539 None)) |
539 None)) |
540 ('symbol', 'generations') |
540 (symbol 'generations') |
541 ('symbol', '0')) |
541 (symbol '0')) |
542 * optimized: |
542 * optimized: |
543 (relsubscript |
543 (relsubscript |
544 (func |
544 (func |
545 ('symbol', '_notpublic') |
545 (symbol '_notpublic') |
546 None) |
546 None) |
547 ('symbol', 'generations') |
547 (symbol 'generations') |
548 ('symbol', '0')) |
548 (symbol '0')) |
549 |
549 |
550 resolution of subscript and relation-subscript ternary operators: |
550 resolution of subscript and relation-subscript ternary operators: |
551 |
551 |
552 $ hg debugrevspec -p analyzed 'tip[0]' |
552 $ hg debugrevspec -p analyzed 'tip[0]' |
553 * analyzed: |
553 * analyzed: |
554 (subscript |
554 (subscript |
555 ('symbol', 'tip') |
555 (symbol 'tip') |
556 ('symbol', '0')) |
556 (symbol '0')) |
557 hg: parse error: can't use a subscript in this context |
557 hg: parse error: can't use a subscript in this context |
558 [255] |
558 [255] |
559 |
559 |
560 $ hg debugrevspec -p analyzed 'tip#rel[0]' |
560 $ hg debugrevspec -p analyzed 'tip#rel[0]' |
561 * analyzed: |
561 * analyzed: |
562 (relsubscript |
562 (relsubscript |
563 ('symbol', 'tip') |
563 (symbol 'tip') |
564 ('symbol', 'rel') |
564 (symbol 'rel') |
565 ('symbol', '0')) |
565 (symbol '0')) |
566 hg: parse error: unknown identifier: rel |
566 hg: parse error: unknown identifier: rel |
567 [255] |
567 [255] |
568 |
568 |
569 $ hg debugrevspec -p analyzed '(tip#rel)[0]' |
569 $ hg debugrevspec -p analyzed '(tip#rel)[0]' |
570 * analyzed: |
570 * analyzed: |
571 (subscript |
571 (subscript |
572 (relation |
572 (relation |
573 ('symbol', 'tip') |
573 (symbol 'tip') |
574 ('symbol', 'rel')) |
574 (symbol 'rel')) |
575 ('symbol', '0')) |
575 (symbol '0')) |
576 hg: parse error: can't use a subscript in this context |
576 hg: parse error: can't use a subscript in this context |
577 [255] |
577 [255] |
578 |
578 |
579 $ hg debugrevspec -p analyzed 'tip#rel[0][1]' |
579 $ hg debugrevspec -p analyzed 'tip#rel[0][1]' |
580 * analyzed: |
580 * analyzed: |
581 (subscript |
581 (subscript |
582 (relsubscript |
582 (relsubscript |
583 ('symbol', 'tip') |
583 (symbol 'tip') |
584 ('symbol', 'rel') |
584 (symbol 'rel') |
585 ('symbol', '0')) |
585 (symbol '0')) |
586 ('symbol', '1')) |
586 (symbol '1')) |
587 hg: parse error: can't use a subscript in this context |
587 hg: parse error: can't use a subscript in this context |
588 [255] |
588 [255] |
589 |
589 |
590 $ hg debugrevspec -p analyzed 'tip#rel0#rel1[1]' |
590 $ hg debugrevspec -p analyzed 'tip#rel0#rel1[1]' |
591 * analyzed: |
591 * analyzed: |
592 (relsubscript |
592 (relsubscript |
593 (relation |
593 (relation |
594 ('symbol', 'tip') |
594 (symbol 'tip') |
595 ('symbol', 'rel0')) |
595 (symbol 'rel0')) |
596 ('symbol', 'rel1') |
596 (symbol 'rel1') |
597 ('symbol', '1')) |
597 (symbol '1')) |
598 hg: parse error: unknown identifier: rel1 |
598 hg: parse error: unknown identifier: rel1 |
599 [255] |
599 [255] |
600 |
600 |
601 $ hg debugrevspec -p analyzed 'tip#rel0[0]#rel1[1]' |
601 $ hg debugrevspec -p analyzed 'tip#rel0[0]#rel1[1]' |
602 * analyzed: |
602 * analyzed: |
603 (relsubscript |
603 (relsubscript |
604 (relsubscript |
604 (relsubscript |
605 ('symbol', 'tip') |
605 (symbol 'tip') |
606 ('symbol', 'rel0') |
606 (symbol 'rel0') |
607 ('symbol', '0')) |
607 (symbol '0')) |
608 ('symbol', 'rel1') |
608 (symbol 'rel1') |
609 ('symbol', '1')) |
609 (symbol '1')) |
610 hg: parse error: unknown identifier: rel1 |
610 hg: parse error: unknown identifier: rel1 |
611 [255] |
611 [255] |
612 |
612 |
613 parse errors of relation, subscript and relation-subscript operators: |
613 parse errors of relation, subscript and relation-subscript operators: |
614 |
614 |
764 8 |
764 8 |
765 9 |
765 9 |
766 $ try -p analyzed ':1' |
766 $ try -p analyzed ':1' |
767 * analyzed: |
767 * analyzed: |
768 (rangepre |
768 (rangepre |
769 ('symbol', '1')) |
769 (symbol '1')) |
770 * set: |
770 * set: |
771 <spanset+ 0:2> |
771 <spanset+ 0:2> |
772 0 |
772 0 |
773 1 |
773 1 |
774 $ try -p analyzed ':(1|2)' |
774 $ try -p analyzed ':(1|2)' |
775 * analyzed: |
775 * analyzed: |
776 (rangepre |
776 (rangepre |
777 (or |
777 (or |
778 (list |
778 (list |
779 ('symbol', '1') |
779 (symbol '1') |
780 ('symbol', '2')))) |
780 (symbol '2')))) |
781 * set: |
781 * set: |
782 <spanset+ 0:3> |
782 <spanset+ 0:3> |
783 0 |
783 0 |
784 1 |
784 1 |
785 2 |
785 2 |
786 $ try -p analyzed ':(1&2)' |
786 $ try -p analyzed ':(1&2)' |
787 * analyzed: |
787 * analyzed: |
788 (rangepre |
788 (rangepre |
789 (and |
789 (and |
790 ('symbol', '1') |
790 (symbol '1') |
791 ('symbol', '2'))) |
791 (symbol '2'))) |
792 * set: |
792 * set: |
793 <baseset []> |
793 <baseset []> |
794 |
794 |
795 infix/suffix resolution of ^ operator (issue2884): |
795 infix/suffix resolution of ^ operator (issue2884): |
796 |
796 |
797 x^:y means (x^):y |
797 x^:y means (x^):y |
798 |
798 |
799 $ try '1^:2' |
799 $ try '1^:2' |
800 (range |
800 (range |
801 (parentpost |
801 (parentpost |
802 ('symbol', '1')) |
802 (symbol '1')) |
803 ('symbol', '2')) |
803 (symbol '2')) |
804 * set: |
804 * set: |
805 <spanset+ 0:3> |
805 <spanset+ 0:3> |
806 0 |
806 0 |
807 1 |
807 1 |
808 2 |
808 2 |
809 |
809 |
810 $ try '1^::2' |
810 $ try '1^::2' |
811 (dagrange |
811 (dagrange |
812 (parentpost |
812 (parentpost |
813 ('symbol', '1')) |
813 (symbol '1')) |
814 ('symbol', '2')) |
814 (symbol '2')) |
815 * set: |
815 * set: |
816 <baseset+ [0, 1, 2]> |
816 <baseset+ [0, 1, 2]> |
817 0 |
817 0 |
818 1 |
818 1 |
819 2 |
819 2 |
820 |
820 |
821 $ try '9^:' |
821 $ try '9^:' |
822 (rangepost |
822 (rangepost |
823 (parentpost |
823 (parentpost |
824 ('symbol', '9'))) |
824 (symbol '9'))) |
825 * set: |
825 * set: |
826 <spanset+ 8:10> |
826 <spanset+ 8:10> |
827 8 |
827 8 |
828 9 |
828 9 |
829 |
829 |
830 x^:y should be resolved before omitting group operators |
830 x^:y should be resolved before omitting group operators |
831 |
831 |
832 $ try '1^(:2)' |
832 $ try '1^(:2)' |
833 (parent |
833 (parent |
834 ('symbol', '1') |
834 (symbol '1') |
835 (group |
835 (group |
836 (rangepre |
836 (rangepre |
837 ('symbol', '2')))) |
837 (symbol '2')))) |
838 hg: parse error: ^ expects a number 0, 1, or 2 |
838 hg: parse error: ^ expects a number 0, 1, or 2 |
839 [255] |
839 [255] |
840 |
840 |
841 x^:y should be resolved recursively |
841 x^:y should be resolved recursively |
842 |
842 |
843 $ try 'sort(1^:2)' |
843 $ try 'sort(1^:2)' |
844 (func |
844 (func |
845 ('symbol', 'sort') |
845 (symbol 'sort') |
846 (range |
846 (range |
847 (parentpost |
847 (parentpost |
848 ('symbol', '1')) |
848 (symbol '1')) |
849 ('symbol', '2'))) |
849 (symbol '2'))) |
850 * set: |
850 * set: |
851 <spanset+ 0:3> |
851 <spanset+ 0:3> |
852 0 |
852 0 |
853 1 |
853 1 |
854 2 |
854 2 |
932 but not beyond the boundary of alias expansion, because the resolution should |
932 but not beyond the boundary of alias expansion, because the resolution should |
933 be made at the parsing stage |
933 be made at the parsing stage |
934 |
934 |
935 $ try '1^A' --config 'revsetalias.A=:2' |
935 $ try '1^A' --config 'revsetalias.A=:2' |
936 (parent |
936 (parent |
937 ('symbol', '1') |
937 (symbol '1') |
938 ('symbol', 'A')) |
938 (symbol 'A')) |
939 * expanded: |
939 * expanded: |
940 (parent |
940 (parent |
941 ('symbol', '1') |
941 (symbol '1') |
942 (rangepre |
942 (rangepre |
943 ('symbol', '2'))) |
943 (symbol '2'))) |
944 hg: parse error: ^ expects a number 0, 1, or 2 |
944 hg: parse error: ^ expects a number 0, 1, or 2 |
945 [255] |
945 [255] |
946 |
946 |
947 ancestor can accept 0 or more arguments |
947 ancestor can accept 0 or more arguments |
948 |
948 |
1268 9 |
1268 9 |
1269 $ log 'grep("issue\d+")' |
1269 $ log 'grep("issue\d+")' |
1270 6 |
1270 6 |
1271 $ try 'grep("(")' # invalid regular expression |
1271 $ try 'grep("(")' # invalid regular expression |
1272 (func |
1272 (func |
1273 ('symbol', 'grep') |
1273 (symbol 'grep') |
1274 ('string', '(')) |
1274 (string '(')) |
1275 hg: parse error: invalid match pattern: unbalanced parenthesis |
1275 hg: parse error: invalid match pattern: unbalanced parenthesis |
1276 [255] |
1276 [255] |
1277 $ try 'grep("\bissue\d+")' |
1277 $ try 'grep("\bissue\d+")' |
1278 (func |
1278 (func |
1279 ('symbol', 'grep') |
1279 (symbol 'grep') |
1280 ('string', '\x08issue\\d+')) |
1280 (string '\x08issue\\d+')) |
1281 * set: |
1281 * set: |
1282 <filteredset |
1282 <filteredset |
1283 <fullreposet+ 0:10>, |
1283 <fullreposet+ 0:10>, |
1284 <grep '\x08issue\\d+'>> |
1284 <grep '\x08issue\\d+'>> |
1285 $ try 'grep(r"\bissue\d+")' |
1285 $ try 'grep(r"\bissue\d+")' |
1286 (func |
1286 (func |
1287 ('symbol', 'grep') |
1287 (symbol 'grep') |
1288 ('string', '\\bissue\\d+')) |
1288 (string '\\bissue\\d+')) |
1289 * set: |
1289 * set: |
1290 <filteredset |
1290 <filteredset |
1291 <fullreposet+ 0:10>, |
1291 <fullreposet+ 0:10>, |
1292 <grep '\\bissue\\d+'>> |
1292 <grep '\\bissue\\d+'>> |
1293 6 |
1293 6 |
2048 '_intlist(a b)' should behave like 'a + b': |
2048 '_intlist(a b)' should behave like 'a + b': |
2049 |
2049 |
2050 $ trylist --optimize '2:0 & %ld' 0 1 2 |
2050 $ trylist --optimize '2:0 & %ld' 0 1 2 |
2051 (and |
2051 (and |
2052 (range |
2052 (range |
2053 ('symbol', '2') |
2053 (symbol '2') |
2054 ('symbol', '0')) |
2054 (symbol '0')) |
2055 (func |
2055 (func |
2056 ('symbol', '_intlist') |
2056 (symbol '_intlist') |
2057 ('string', '0\x001\x002'))) |
2057 (string '0\x001\x002'))) |
2058 * optimized: |
2058 * optimized: |
2059 (andsmally |
2059 (andsmally |
2060 (range |
2060 (range |
2061 ('symbol', '2') |
2061 (symbol '2') |
2062 ('symbol', '0')) |
2062 (symbol '0')) |
2063 (func |
2063 (func |
2064 ('symbol', '_intlist') |
2064 (symbol '_intlist') |
2065 ('string', '0\x001\x002'))) |
2065 (string '0\x001\x002'))) |
2066 * set: |
2066 * set: |
2067 <filteredset |
2067 <filteredset |
2068 <spanset- 0:3>, |
2068 <spanset- 0:3>, |
2069 <baseset+ [0, 1, 2]>> |
2069 <baseset+ [0, 1, 2]>> |
2070 2 |
2070 2 |
2072 0 |
2072 0 |
2073 |
2073 |
2074 $ trylist --optimize '%ld & 2:0' 0 2 1 |
2074 $ trylist --optimize '%ld & 2:0' 0 2 1 |
2075 (and |
2075 (and |
2076 (func |
2076 (func |
2077 ('symbol', '_intlist') |
2077 (symbol '_intlist') |
2078 ('string', '0\x002\x001')) |
2078 (string '0\x002\x001')) |
2079 (range |
2079 (range |
2080 ('symbol', '2') |
2080 (symbol '2') |
2081 ('symbol', '0'))) |
2081 (symbol '0'))) |
2082 * optimized: |
2082 * optimized: |
2083 (and |
2083 (and |
2084 (func |
2084 (func |
2085 ('symbol', '_intlist') |
2085 (symbol '_intlist') |
2086 ('string', '0\x002\x001')) |
2086 (string '0\x002\x001')) |
2087 (range |
2087 (range |
2088 ('symbol', '2') |
2088 (symbol '2') |
2089 ('symbol', '0'))) |
2089 (symbol '0'))) |
2090 * set: |
2090 * set: |
2091 <filteredset |
2091 <filteredset |
2092 <baseset [0, 2, 1]>, |
2092 <baseset [0, 2, 1]>, |
2093 <spanset- 0:3>> |
2093 <spanset- 0:3>> |
2094 0 |
2094 0 |
2098 '_hexlist(a b)' should behave like 'a + b': |
2098 '_hexlist(a b)' should behave like 'a + b': |
2099 |
2099 |
2100 $ trylist --optimize --bin '2:0 & %ln' `hg log -T '{node} ' -r0:2` |
2100 $ trylist --optimize --bin '2:0 & %ln' `hg log -T '{node} ' -r0:2` |
2101 (and |
2101 (and |
2102 (range |
2102 (range |
2103 ('symbol', '2') |
2103 (symbol '2') |
2104 ('symbol', '0')) |
2104 (symbol '0')) |
2105 (func |
2105 (func |
2106 ('symbol', '_hexlist') |
2106 (symbol '_hexlist') |
2107 ('string', '*'))) (glob) |
2107 (string '*'))) (glob) |
2108 * optimized: |
2108 * optimized: |
2109 (and |
2109 (and |
2110 (range |
2110 (range |
2111 ('symbol', '2') |
2111 (symbol '2') |
2112 ('symbol', '0')) |
2112 (symbol '0')) |
2113 (func |
2113 (func |
2114 ('symbol', '_hexlist') |
2114 (symbol '_hexlist') |
2115 ('string', '*'))) (glob) |
2115 (string '*'))) (glob) |
2116 * set: |
2116 * set: |
2117 <filteredset |
2117 <filteredset |
2118 <spanset- 0:3>, |
2118 <spanset- 0:3>, |
2119 <baseset [0, 1, 2]>> |
2119 <baseset [0, 1, 2]>> |
2120 2 |
2120 2 |
2186 ordering requirement should be forwarded to the nested expression |
2186 ordering requirement should be forwarded to the nested expression |
2187 |
2187 |
2188 $ try -p optimized 'present(2 + 0 + 1)' |
2188 $ try -p optimized 'present(2 + 0 + 1)' |
2189 * optimized: |
2189 * optimized: |
2190 (func |
2190 (func |
2191 ('symbol', 'present') |
2191 (symbol 'present') |
2192 (func |
2192 (func |
2193 ('symbol', '_list') |
2193 (symbol '_list') |
2194 ('string', '2\x000\x001'))) |
2194 (string '2\x000\x001'))) |
2195 * set: |
2195 * set: |
2196 <baseset [2, 0, 1]> |
2196 <baseset [2, 0, 1]> |
2197 2 |
2197 2 |
2198 0 |
2198 0 |
2199 1 |
2199 1 |
2200 |
2200 |
2201 $ try --optimize '2:0 & present(0 + 1 + 2)' |
2201 $ try --optimize '2:0 & present(0 + 1 + 2)' |
2202 (and |
2202 (and |
2203 (range |
2203 (range |
2204 ('symbol', '2') |
2204 (symbol '2') |
2205 ('symbol', '0')) |
2205 (symbol '0')) |
2206 (func |
2206 (func |
2207 ('symbol', 'present') |
2207 (symbol 'present') |
2208 (or |
2208 (or |
2209 (list |
2209 (list |
2210 ('symbol', '0') |
2210 (symbol '0') |
2211 ('symbol', '1') |
2211 (symbol '1') |
2212 ('symbol', '2'))))) |
2212 (symbol '2'))))) |
2213 * optimized: |
2213 * optimized: |
2214 (and |
2214 (and |
2215 (range |
2215 (range |
2216 ('symbol', '2') |
2216 (symbol '2') |
2217 ('symbol', '0')) |
2217 (symbol '0')) |
2218 (func |
2218 (func |
2219 ('symbol', 'present') |
2219 (symbol 'present') |
2220 (func |
2220 (func |
2221 ('symbol', '_list') |
2221 (symbol '_list') |
2222 ('string', '0\x001\x002')))) |
2222 (string '0\x001\x002')))) |
2223 * set: |
2223 * set: |
2224 <filteredset |
2224 <filteredset |
2225 <spanset- 0:3>, |
2225 <spanset- 0:3>, |
2226 <baseset [0, 1, 2]>> |
2226 <baseset [0, 1, 2]>> |
2227 2 |
2227 2 |
2305 for 'A & f(B)', 'B' should not be affected by the order of 'A': |
2305 for 'A & f(B)', 'B' should not be affected by the order of 'A': |
2306 |
2306 |
2307 $ try --optimize '2:0 & first(1 + 0 + 2)' |
2307 $ try --optimize '2:0 & first(1 + 0 + 2)' |
2308 (and |
2308 (and |
2309 (range |
2309 (range |
2310 ('symbol', '2') |
2310 (symbol '2') |
2311 ('symbol', '0')) |
2311 (symbol '0')) |
2312 (func |
2312 (func |
2313 ('symbol', 'first') |
2313 (symbol 'first') |
2314 (or |
2314 (or |
2315 (list |
2315 (list |
2316 ('symbol', '1') |
2316 (symbol '1') |
2317 ('symbol', '0') |
2317 (symbol '0') |
2318 ('symbol', '2'))))) |
2318 (symbol '2'))))) |
2319 * optimized: |
2319 * optimized: |
2320 (and |
2320 (and |
2321 (range |
2321 (range |
2322 ('symbol', '2') |
2322 (symbol '2') |
2323 ('symbol', '0')) |
2323 (symbol '0')) |
2324 (func |
2324 (func |
2325 ('symbol', 'first') |
2325 (symbol 'first') |
2326 (func |
2326 (func |
2327 ('symbol', '_list') |
2327 (symbol '_list') |
2328 ('string', '1\x000\x002')))) |
2328 (string '1\x000\x002')))) |
2329 * set: |
2329 * set: |
2330 <filteredset |
2330 <filteredset |
2331 <baseset [1]>, |
2331 <baseset [1]>, |
2332 <spanset- 0:3>> |
2332 <spanset- 0:3>> |
2333 1 |
2333 1 |
2334 |
2334 |
2335 $ try --optimize '2:0 & not last(0 + 2 + 1)' |
2335 $ try --optimize '2:0 & not last(0 + 2 + 1)' |
2336 (and |
2336 (and |
2337 (range |
2337 (range |
2338 ('symbol', '2') |
2338 (symbol '2') |
2339 ('symbol', '0')) |
2339 (symbol '0')) |
2340 (not |
2340 (not |
2341 (func |
2341 (func |
2342 ('symbol', 'last') |
2342 (symbol 'last') |
2343 (or |
2343 (or |
2344 (list |
2344 (list |
2345 ('symbol', '0') |
2345 (symbol '0') |
2346 ('symbol', '2') |
2346 (symbol '2') |
2347 ('symbol', '1')))))) |
2347 (symbol '1')))))) |
2348 * optimized: |
2348 * optimized: |
2349 (difference |
2349 (difference |
2350 (range |
2350 (range |
2351 ('symbol', '2') |
2351 (symbol '2') |
2352 ('symbol', '0')) |
2352 (symbol '0')) |
2353 (func |
2353 (func |
2354 ('symbol', 'last') |
2354 (symbol 'last') |
2355 (func |
2355 (func |
2356 ('symbol', '_list') |
2356 (symbol '_list') |
2357 ('string', '0\x002\x001')))) |
2357 (string '0\x002\x001')))) |
2358 * set: |
2358 * set: |
2359 <filteredset |
2359 <filteredset |
2360 <spanset- 0:3>, |
2360 <spanset- 0:3>, |
2361 <not |
2361 <not |
2362 <baseset [1]>>> |
2362 <baseset [1]>>> |
2404 'A & B' can be rewritten as 'flipand(B, A)' by weight. |
2404 'A & B' can be rewritten as 'flipand(B, A)' by weight. |
2405 |
2405 |
2406 $ try --optimize 'contains("glob:*") & (2 + 0 + 1)' |
2406 $ try --optimize 'contains("glob:*") & (2 + 0 + 1)' |
2407 (and |
2407 (and |
2408 (func |
2408 (func |
2409 ('symbol', 'contains') |
2409 (symbol 'contains') |
2410 ('string', 'glob:*')) |
2410 (string 'glob:*')) |
2411 (group |
2411 (group |
2412 (or |
2412 (or |
2413 (list |
2413 (list |
2414 ('symbol', '2') |
2414 (symbol '2') |
2415 ('symbol', '0') |
2415 (symbol '0') |
2416 ('symbol', '1'))))) |
2416 (symbol '1'))))) |
2417 * optimized: |
2417 * optimized: |
2418 (andsmally |
2418 (andsmally |
2419 (func |
2419 (func |
2420 ('symbol', 'contains') |
2420 (symbol 'contains') |
2421 ('string', 'glob:*')) |
2421 (string 'glob:*')) |
2422 (func |
2422 (func |
2423 ('symbol', '_list') |
2423 (symbol '_list') |
2424 ('string', '2\x000\x001'))) |
2424 (string '2\x000\x001'))) |
2425 * set: |
2425 * set: |
2426 <filteredset |
2426 <filteredset |
2427 <baseset+ [0, 1, 2]>, |
2427 <baseset+ [0, 1, 2]>, |
2428 <contains 'glob:*'>> |
2428 <contains 'glob:*'>> |
2429 0 |
2429 0 |
2434 the order appropriately: |
2434 the order appropriately: |
2435 |
2435 |
2436 $ try --optimize 'reverse(contains("glob:*")) & (0 + 2 + 1)' |
2436 $ try --optimize 'reverse(contains("glob:*")) & (0 + 2 + 1)' |
2437 (and |
2437 (and |
2438 (func |
2438 (func |
2439 ('symbol', 'reverse') |
2439 (symbol 'reverse') |
2440 (func |
2440 (func |
2441 ('symbol', 'contains') |
2441 (symbol 'contains') |
2442 ('string', 'glob:*'))) |
2442 (string 'glob:*'))) |
2443 (group |
2443 (group |
2444 (or |
2444 (or |
2445 (list |
2445 (list |
2446 ('symbol', '0') |
2446 (symbol '0') |
2447 ('symbol', '2') |
2447 (symbol '2') |
2448 ('symbol', '1'))))) |
2448 (symbol '1'))))) |
2449 * optimized: |
2449 * optimized: |
2450 (andsmally |
2450 (andsmally |
2451 (func |
2451 (func |
2452 ('symbol', 'reverse') |
2452 (symbol 'reverse') |
2453 (func |
2453 (func |
2454 ('symbol', 'contains') |
2454 (symbol 'contains') |
2455 ('string', 'glob:*'))) |
2455 (string 'glob:*'))) |
2456 (func |
2456 (func |
2457 ('symbol', '_list') |
2457 (symbol '_list') |
2458 ('string', '0\x002\x001'))) |
2458 (string '0\x002\x001'))) |
2459 * set: |
2459 * set: |
2460 <filteredset |
2460 <filteredset |
2461 <baseset- [0, 1, 2]>, |
2461 <baseset- [0, 1, 2]>, |
2462 <contains 'glob:*'>> |
2462 <contains 'glob:*'>> |
2463 2 |
2463 2 |
2835 test optimization of trivial `or` operation |
2835 test optimization of trivial `or` operation |
2836 |
2836 |
2837 $ try --optimize '0|(1)|"2"|-2|tip|null' |
2837 $ try --optimize '0|(1)|"2"|-2|tip|null' |
2838 (or |
2838 (or |
2839 (list |
2839 (list |
2840 ('symbol', '0') |
2840 (symbol '0') |
2841 (group |
2841 (group |
2842 ('symbol', '1')) |
2842 (symbol '1')) |
2843 ('string', '2') |
2843 (string '2') |
2844 (negate |
2844 (negate |
2845 ('symbol', '2')) |
2845 (symbol '2')) |
2846 ('symbol', 'tip') |
2846 (symbol 'tip') |
2847 ('symbol', 'null'))) |
2847 (symbol 'null'))) |
2848 * optimized: |
2848 * optimized: |
2849 (func |
2849 (func |
2850 ('symbol', '_list') |
2850 (symbol '_list') |
2851 ('string', '0\x001\x002\x00-2\x00tip\x00null')) |
2851 (string '0\x001\x002\x00-2\x00tip\x00null')) |
2852 * set: |
2852 * set: |
2853 <baseset [0, 1, 2, 8, 9, -1]> |
2853 <baseset [0, 1, 2, 8, 9, -1]> |
2854 0 |
2854 0 |
2855 1 |
2855 1 |
2856 2 |
2856 2 |
2997 hg: parse error: can't use a list in this context |
2997 hg: parse error: can't use a list in this context |
2998 (see hg help "revsets.x or y") |
2998 (see hg help "revsets.x or y") |
2999 [255] |
2999 [255] |
3000 $ try '0,1,2' |
3000 $ try '0,1,2' |
3001 (list |
3001 (list |
3002 ('symbol', '0') |
3002 (symbol '0') |
3003 ('symbol', '1') |
3003 (symbol '1') |
3004 ('symbol', '2')) |
3004 (symbol '2')) |
3005 hg: parse error: can't use a list in this context |
3005 hg: parse error: can't use a list in this context |
3006 (see hg help "revsets.x or y") |
3006 (see hg help "revsets.x or y") |
3007 [255] |
3007 [255] |
3008 |
3008 |
3009 test that chained `or` operations make balanced addsets |
3009 test that chained `or` operations make balanced addsets |
3010 |
3010 |
3011 $ try '0:1|1:2|2:3|3:4|4:5' |
3011 $ try '0:1|1:2|2:3|3:4|4:5' |
3012 (or |
3012 (or |
3013 (list |
3013 (list |
3014 (range |
3014 (range |
3015 ('symbol', '0') |
3015 (symbol '0') |
3016 ('symbol', '1')) |
3016 (symbol '1')) |
3017 (range |
3017 (range |
3018 ('symbol', '1') |
3018 (symbol '1') |
3019 ('symbol', '2')) |
3019 (symbol '2')) |
3020 (range |
3020 (range |
3021 ('symbol', '2') |
3021 (symbol '2') |
3022 ('symbol', '3')) |
3022 (symbol '3')) |
3023 (range |
3023 (range |
3024 ('symbol', '3') |
3024 (symbol '3') |
3025 ('symbol', '4')) |
3025 (symbol '4')) |
3026 (range |
3026 (range |
3027 ('symbol', '4') |
3027 (symbol '4') |
3028 ('symbol', '5')))) |
3028 (symbol '5')))) |
3029 * set: |
3029 * set: |
3030 <addset |
3030 <addset |
3031 <addset |
3031 <addset |
3032 <spanset+ 0:2>, |
3032 <spanset+ 0:2>, |
3033 <spanset+ 1:3>>, |
3033 <spanset+ 1:3>>, |
3075 |
3075 |
3076 check that conversion to only works |
3076 check that conversion to only works |
3077 $ try --optimize '::3 - ::1' |
3077 $ try --optimize '::3 - ::1' |
3078 (minus |
3078 (minus |
3079 (dagrangepre |
3079 (dagrangepre |
3080 ('symbol', '3')) |
3080 (symbol '3')) |
3081 (dagrangepre |
3081 (dagrangepre |
3082 ('symbol', '1'))) |
3082 (symbol '1'))) |
3083 * optimized: |
3083 * optimized: |
3084 (func |
3084 (func |
3085 ('symbol', 'only') |
3085 (symbol 'only') |
3086 (list |
3086 (list |
3087 ('symbol', '3') |
3087 (symbol '3') |
3088 ('symbol', '1'))) |
3088 (symbol '1'))) |
3089 * set: |
3089 * set: |
3090 <baseset+ [3]> |
3090 <baseset+ [3]> |
3091 3 |
3091 3 |
3092 $ try --optimize 'ancestors(1) - ancestors(3)' |
3092 $ try --optimize 'ancestors(1) - ancestors(3)' |
3093 (minus |
3093 (minus |
3094 (func |
3094 (func |
3095 ('symbol', 'ancestors') |
3095 (symbol 'ancestors') |
3096 ('symbol', '1')) |
3096 (symbol '1')) |
3097 (func |
3097 (func |
3098 ('symbol', 'ancestors') |
3098 (symbol 'ancestors') |
3099 ('symbol', '3'))) |
3099 (symbol '3'))) |
3100 * optimized: |
3100 * optimized: |
3101 (func |
3101 (func |
3102 ('symbol', 'only') |
3102 (symbol 'only') |
3103 (list |
3103 (list |
3104 ('symbol', '1') |
3104 (symbol '1') |
3105 ('symbol', '3'))) |
3105 (symbol '3'))) |
3106 * set: |
3106 * set: |
3107 <baseset+ []> |
3107 <baseset+ []> |
3108 $ try --optimize 'not ::2 and ::6' |
3108 $ try --optimize 'not ::2 and ::6' |
3109 (and |
3109 (and |
3110 (not |
3110 (not |
3111 (dagrangepre |
3111 (dagrangepre |
3112 ('symbol', '2'))) |
3112 (symbol '2'))) |
3113 (dagrangepre |
3113 (dagrangepre |
3114 ('symbol', '6'))) |
3114 (symbol '6'))) |
3115 * optimized: |
3115 * optimized: |
3116 (func |
3116 (func |
3117 ('symbol', 'only') |
3117 (symbol 'only') |
3118 (list |
3118 (list |
3119 ('symbol', '6') |
3119 (symbol '6') |
3120 ('symbol', '2'))) |
3120 (symbol '2'))) |
3121 * set: |
3121 * set: |
3122 <baseset+ [3, 4, 5, 6]> |
3122 <baseset+ [3, 4, 5, 6]> |
3123 3 |
3123 3 |
3124 4 |
3124 4 |
3125 5 |
3125 5 |
3126 6 |
3126 6 |
3127 $ try --optimize 'ancestors(6) and not ancestors(4)' |
3127 $ try --optimize 'ancestors(6) and not ancestors(4)' |
3128 (and |
3128 (and |
3129 (func |
3129 (func |
3130 ('symbol', 'ancestors') |
3130 (symbol 'ancestors') |
3131 ('symbol', '6')) |
3131 (symbol '6')) |
3132 (not |
3132 (not |
3133 (func |
3133 (func |
3134 ('symbol', 'ancestors') |
3134 (symbol 'ancestors') |
3135 ('symbol', '4')))) |
3135 (symbol '4')))) |
3136 * optimized: |
3136 * optimized: |
3137 (func |
3137 (func |
3138 ('symbol', 'only') |
3138 (symbol 'only') |
3139 (list |
3139 (list |
3140 ('symbol', '6') |
3140 (symbol '6') |
3141 ('symbol', '4'))) |
3141 (symbol '4'))) |
3142 * set: |
3142 * set: |
3143 <baseset+ [3, 5, 6]> |
3143 <baseset+ [3, 5, 6]> |
3144 3 |
3144 3 |
3145 5 |
3145 5 |
3146 6 |
3146 6 |
3148 no crash by empty group "()" while optimizing to "only()" |
3148 no crash by empty group "()" while optimizing to "only()" |
3149 |
3149 |
3150 $ try --optimize '::1 and ()' |
3150 $ try --optimize '::1 and ()' |
3151 (and |
3151 (and |
3152 (dagrangepre |
3152 (dagrangepre |
3153 ('symbol', '1')) |
3153 (symbol '1')) |
3154 (group |
3154 (group |
3155 None)) |
3155 None)) |
3156 * optimized: |
3156 * optimized: |
3157 (andsmally |
3157 (andsmally |
3158 (func |
3158 (func |
3159 ('symbol', 'ancestors') |
3159 (symbol 'ancestors') |
3160 ('symbol', '1')) |
3160 (symbol '1')) |
3161 None) |
3161 None) |
3162 hg: parse error: missing argument |
3162 hg: parse error: missing argument |
3163 [255] |
3163 [255] |
3164 |
3164 |
3165 optimization to only() works only if ancestors() takes only one argument |
3165 optimization to only() works only if ancestors() takes only one argument |
3166 |
3166 |
3167 $ hg debugrevspec -p optimized 'ancestors(6) - ancestors(4, 1)' |
3167 $ hg debugrevspec -p optimized 'ancestors(6) - ancestors(4, 1)' |
3168 * optimized: |
3168 * optimized: |
3169 (difference |
3169 (difference |
3170 (func |
3170 (func |
3171 ('symbol', 'ancestors') |
3171 (symbol 'ancestors') |
3172 ('symbol', '6')) |
3172 (symbol '6')) |
3173 (func |
3173 (func |
3174 ('symbol', 'ancestors') |
3174 (symbol 'ancestors') |
3175 (list |
3175 (list |
3176 ('symbol', '4') |
3176 (symbol '4') |
3177 ('symbol', '1')))) |
3177 (symbol '1')))) |
3178 0 |
3178 0 |
3179 1 |
3179 1 |
3180 3 |
3180 3 |
3181 5 |
3181 5 |
3182 6 |
3182 6 |
3183 $ hg debugrevspec -p optimized 'ancestors(6, 1) - ancestors(4)' |
3183 $ hg debugrevspec -p optimized 'ancestors(6, 1) - ancestors(4)' |
3184 * optimized: |
3184 * optimized: |
3185 (difference |
3185 (difference |
3186 (func |
3186 (func |
3187 ('symbol', 'ancestors') |
3187 (symbol 'ancestors') |
3188 (list |
3188 (list |
3189 ('symbol', '6') |
3189 (symbol '6') |
3190 ('symbol', '1'))) |
3190 (symbol '1'))) |
3191 (func |
3191 (func |
3192 ('symbol', 'ancestors') |
3192 (symbol 'ancestors') |
3193 ('symbol', '4'))) |
3193 (symbol '4'))) |
3194 5 |
3194 5 |
3195 6 |
3195 6 |
3196 |
3196 |
3197 optimization disabled if keyword arguments passed (because we're too lazy |
3197 optimization disabled if keyword arguments passed (because we're too lazy |
3198 to support it) |
3198 to support it) |
3199 |
3199 |
3200 $ hg debugrevspec -p optimized 'ancestors(set=6) - ancestors(set=4)' |
3200 $ hg debugrevspec -p optimized 'ancestors(set=6) - ancestors(set=4)' |
3201 * optimized: |
3201 * optimized: |
3202 (difference |
3202 (difference |
3203 (func |
3203 (func |
3204 ('symbol', 'ancestors') |
3204 (symbol 'ancestors') |
3205 (keyvalue |
3205 (keyvalue |
3206 ('symbol', 'set') |
3206 (symbol 'set') |
3207 ('symbol', '6'))) |
3207 (symbol '6'))) |
3208 (func |
3208 (func |
3209 ('symbol', 'ancestors') |
3209 (symbol 'ancestors') |
3210 (keyvalue |
3210 (keyvalue |
3211 ('symbol', 'set') |
3211 (symbol 'set') |
3212 ('symbol', '4')))) |
3212 (symbol '4')))) |
3213 3 |
3213 3 |
3214 5 |
3214 5 |
3215 6 |
3215 6 |
3216 |
3216 |
3217 invalid function call should not be optimized to only() |
3217 invalid function call should not be optimized to only() |
3490 $ echo 'd($1) = reverse(sort($1, date))' >> .hg/hgrc |
3490 $ echo 'd($1) = reverse(sort($1, date))' >> .hg/hgrc |
3491 $ echo 'rs(ARG1, ARG2) = reverse(sort(ARG1, ARG2))' >> .hg/hgrc |
3491 $ echo 'rs(ARG1, ARG2) = reverse(sort(ARG1, ARG2))' >> .hg/hgrc |
3492 $ echo 'rs4(ARG1, ARGA, ARGB, ARG2) = reverse(sort(ARG1, ARG2))' >> .hg/hgrc |
3492 $ echo 'rs4(ARG1, ARGA, ARGB, ARG2) = reverse(sort(ARG1, ARG2))' >> .hg/hgrc |
3493 |
3493 |
3494 $ try m |
3494 $ try m |
3495 ('symbol', 'm') |
3495 (symbol 'm') |
3496 * expanded: |
3496 * expanded: |
3497 (func |
3497 (func |
3498 ('symbol', 'merge') |
3498 (symbol 'merge') |
3499 None) |
3499 None) |
3500 * set: |
3500 * set: |
3501 <filteredset |
3501 <filteredset |
3502 <fullreposet+ 0:10>, |
3502 <fullreposet+ 0:10>, |
3503 <merge>> |
3503 <merge>> |
3504 6 |
3504 6 |
3505 |
3505 |
3506 $ HGPLAIN=1 |
3506 $ HGPLAIN=1 |
3507 $ export HGPLAIN |
3507 $ export HGPLAIN |
3508 $ try m |
3508 $ try m |
3509 ('symbol', 'm') |
3509 (symbol 'm') |
3510 abort: unknown revision 'm'! |
3510 abort: unknown revision 'm'! |
3511 [255] |
3511 [255] |
3512 |
3512 |
3513 $ HGPLAINEXCEPT=revsetalias |
3513 $ HGPLAINEXCEPT=revsetalias |
3514 $ export HGPLAINEXCEPT |
3514 $ export HGPLAINEXCEPT |
3515 $ try m |
3515 $ try m |
3516 ('symbol', 'm') |
3516 (symbol 'm') |
3517 * expanded: |
3517 * expanded: |
3518 (func |
3518 (func |
3519 ('symbol', 'merge') |
3519 (symbol 'merge') |
3520 None) |
3520 None) |
3521 * set: |
3521 * set: |
3522 <filteredset |
3522 <filteredset |
3523 <fullreposet+ 0:10>, |
3523 <fullreposet+ 0:10>, |
3524 <merge>> |
3524 <merge>> |
3527 $ unset HGPLAIN |
3527 $ unset HGPLAIN |
3528 $ unset HGPLAINEXCEPT |
3528 $ unset HGPLAINEXCEPT |
3529 |
3529 |
3530 $ try 'p2(.)' |
3530 $ try 'p2(.)' |
3531 (func |
3531 (func |
3532 ('symbol', 'p2') |
3532 (symbol 'p2') |
3533 ('symbol', '.')) |
3533 (symbol '.')) |
3534 * expanded: |
3534 * expanded: |
3535 (func |
3535 (func |
3536 ('symbol', 'p1') |
3536 (symbol 'p1') |
3537 ('symbol', '.')) |
3537 (symbol '.')) |
3538 * set: |
3538 * set: |
3539 <baseset+ [8]> |
3539 <baseset+ [8]> |
3540 8 |
3540 8 |
3541 |
3541 |
3542 $ HGPLAIN=1 |
3542 $ HGPLAIN=1 |
3543 $ export HGPLAIN |
3543 $ export HGPLAIN |
3544 $ try 'p2(.)' |
3544 $ try 'p2(.)' |
3545 (func |
3545 (func |
3546 ('symbol', 'p2') |
3546 (symbol 'p2') |
3547 ('symbol', '.')) |
3547 (symbol '.')) |
3548 * set: |
3548 * set: |
3549 <baseset+ []> |
3549 <baseset+ []> |
3550 |
3550 |
3551 $ HGPLAINEXCEPT=revsetalias |
3551 $ HGPLAINEXCEPT=revsetalias |
3552 $ export HGPLAINEXCEPT |
3552 $ export HGPLAINEXCEPT |
3553 $ try 'p2(.)' |
3553 $ try 'p2(.)' |
3554 (func |
3554 (func |
3555 ('symbol', 'p2') |
3555 (symbol 'p2') |
3556 ('symbol', '.')) |
3556 (symbol '.')) |
3557 * expanded: |
3557 * expanded: |
3558 (func |
3558 (func |
3559 ('symbol', 'p1') |
3559 (symbol 'p1') |
3560 ('symbol', '.')) |
3560 (symbol '.')) |
3561 * set: |
3561 * set: |
3562 <baseset+ [8]> |
3562 <baseset+ [8]> |
3563 8 |
3563 8 |
3564 |
3564 |
3565 $ unset HGPLAIN |
3565 $ unset HGPLAIN |
3566 $ unset HGPLAINEXCEPT |
3566 $ unset HGPLAINEXCEPT |
3567 |
3567 |
3568 test alias recursion |
3568 test alias recursion |
3569 |
3569 |
3570 $ try sincem |
3570 $ try sincem |
3571 ('symbol', 'sincem') |
3571 (symbol 'sincem') |
3572 * expanded: |
3572 * expanded: |
3573 (func |
3573 (func |
3574 ('symbol', 'descendants') |
3574 (symbol 'descendants') |
3575 (func |
3575 (func |
3576 ('symbol', 'merge') |
3576 (symbol 'merge') |
3577 None)) |
3577 None)) |
3578 * set: |
3578 * set: |
3579 <generatorset+> |
3579 <generatorset+> |
3580 6 |
3580 6 |
3581 7 |
3581 7 |
3583 test infinite recursion |
3583 test infinite recursion |
3584 |
3584 |
3585 $ echo 'recurse1 = recurse2' >> .hg/hgrc |
3585 $ echo 'recurse1 = recurse2' >> .hg/hgrc |
3586 $ echo 'recurse2 = recurse1' >> .hg/hgrc |
3586 $ echo 'recurse2 = recurse1' >> .hg/hgrc |
3587 $ try recurse1 |
3587 $ try recurse1 |
3588 ('symbol', 'recurse1') |
3588 (symbol 'recurse1') |
3589 hg: parse error: infinite expansion of revset alias "recurse1" detected |
3589 hg: parse error: infinite expansion of revset alias "recurse1" detected |
3590 [255] |
3590 [255] |
3591 |
3591 |
3592 $ echo 'level1($1, $2) = $1 or $2' >> .hg/hgrc |
3592 $ echo 'level1($1, $2) = $1 or $2' >> .hg/hgrc |
3593 $ echo 'level2($1, $2) = level1($2, $1)' >> .hg/hgrc |
3593 $ echo 'level2($1, $2) = level1($2, $1)' >> .hg/hgrc |
3594 $ try "level2(level1(1, 2), 3)" |
3594 $ try "level2(level1(1, 2), 3)" |
3595 (func |
3595 (func |
3596 ('symbol', 'level2') |
3596 (symbol 'level2') |
3597 (list |
3597 (list |
3598 (func |
3598 (func |
3599 ('symbol', 'level1') |
3599 (symbol 'level1') |
3600 (list |
3600 (list |
3601 ('symbol', '1') |
3601 (symbol '1') |
3602 ('symbol', '2'))) |
3602 (symbol '2'))) |
3603 ('symbol', '3'))) |
3603 (symbol '3'))) |
3604 * expanded: |
3604 * expanded: |
3605 (or |
3605 (or |
3606 (list |
3606 (list |
3607 ('symbol', '3') |
3607 (symbol '3') |
3608 (or |
3608 (or |
3609 (list |
3609 (list |
3610 ('symbol', '1') |
3610 (symbol '1') |
3611 ('symbol', '2'))))) |
3611 (symbol '2'))))) |
3612 * set: |
3612 * set: |
3613 <addset |
3613 <addset |
3614 <baseset [3]>, |
3614 <baseset [3]>, |
3615 <baseset [1, 2]>> |
3615 <baseset [1, 2]>> |
3616 3 |
3616 3 |
3686 |
3686 |
3687 $ echo 'injectparamasstring = max("$1")' >> .hg/hgrc |
3687 $ echo 'injectparamasstring = max("$1")' >> .hg/hgrc |
3688 $ echo 'callinjection($1) = descendants(injectparamasstring)' >> .hg/hgrc |
3688 $ echo 'callinjection($1) = descendants(injectparamasstring)' >> .hg/hgrc |
3689 $ try 'callinjection(2:5)' |
3689 $ try 'callinjection(2:5)' |
3690 (func |
3690 (func |
3691 ('symbol', 'callinjection') |
3691 (symbol 'callinjection') |
3692 (range |
3692 (range |
3693 ('symbol', '2') |
3693 (symbol '2') |
3694 ('symbol', '5'))) |
3694 (symbol '5'))) |
3695 * expanded: |
3695 * expanded: |
3696 (func |
3696 (func |
3697 ('symbol', 'descendants') |
3697 (symbol 'descendants') |
3698 (func |
3698 (func |
3699 ('symbol', 'max') |
3699 (symbol 'max') |
3700 ('string', '$1'))) |
3700 (string '$1'))) |
3701 abort: unknown revision '$1'! |
3701 abort: unknown revision '$1'! |
3702 [255] |
3702 [255] |
3703 |
3703 |
3704 test scope of alias expansion: 'universe' is expanded prior to 'shadowall(0)', |
3704 test scope of alias expansion: 'universe' is expanded prior to 'shadowall(0)', |
3705 but 'all()' should never be substituted to '0()'. |
3705 but 'all()' should never be substituted to '0()'. |
3706 |
3706 |
3707 $ echo 'universe = all()' >> .hg/hgrc |
3707 $ echo 'universe = all()' >> .hg/hgrc |
3708 $ echo 'shadowall(all) = all and universe' >> .hg/hgrc |
3708 $ echo 'shadowall(all) = all and universe' >> .hg/hgrc |
3709 $ try 'shadowall(0)' |
3709 $ try 'shadowall(0)' |
3710 (func |
3710 (func |
3711 ('symbol', 'shadowall') |
3711 (symbol 'shadowall') |
3712 ('symbol', '0')) |
3712 (symbol '0')) |
3713 * expanded: |
3713 * expanded: |
3714 (and |
3714 (and |
3715 ('symbol', '0') |
3715 (symbol '0') |
3716 (func |
3716 (func |
3717 ('symbol', 'all') |
3717 (symbol 'all') |
3718 None)) |
3718 None)) |
3719 * set: |
3719 * set: |
3720 <filteredset |
3720 <filteredset |
3721 <baseset [0]>, |
3721 <baseset [0]>, |
3722 <spanset+ 0:10>> |
3722 <spanset+ 0:10>> |
3724 |
3724 |
3725 test unknown reference: |
3725 test unknown reference: |
3726 |
3726 |
3727 $ try "unknownref(0)" --config 'revsetalias.unknownref($1)=$1:$2' |
3727 $ try "unknownref(0)" --config 'revsetalias.unknownref($1)=$1:$2' |
3728 (func |
3728 (func |
3729 ('symbol', 'unknownref') |
3729 (symbol 'unknownref') |
3730 ('symbol', '0')) |
3730 (symbol '0')) |
3731 abort: bad definition of revset alias "unknownref": invalid symbol '$2' |
3731 abort: bad definition of revset alias "unknownref": invalid symbol '$2' |
3732 [255] |
3732 [255] |
3733 |
3733 |
3734 $ hg debugrevspec --debug --config revsetalias.anotherbadone='branch(' "tip" |
3734 $ hg debugrevspec --debug --config revsetalias.anotherbadone='branch(' "tip" |
3735 ('symbol', 'tip') |
3735 (symbol 'tip') |
3736 warning: bad definition of revset alias "anotherbadone": at 7: not a prefix: end |
3736 warning: bad definition of revset alias "anotherbadone": at 7: not a prefix: end |
3737 * set: |
3737 * set: |
3738 <baseset [9]> |
3738 <baseset [9]> |
3739 9 |
3739 9 |
3740 |
3740 |
3741 $ try 'tip' |
3741 $ try 'tip' |
3742 ('symbol', 'tip') |
3742 (symbol 'tip') |
3743 * set: |
3743 * set: |
3744 <baseset [9]> |
3744 <baseset [9]> |
3745 9 |
3745 9 |
3746 |
3746 |
3747 $ hg debugrevspec --debug --config revsetalias.'bad name'='tip' "tip" |
3747 $ hg debugrevspec --debug --config revsetalias.'bad name'='tip' "tip" |
3748 ('symbol', 'tip') |
3748 (symbol 'tip') |
3749 warning: bad declaration of revset alias "bad name": at 4: invalid token |
3749 warning: bad declaration of revset alias "bad name": at 4: invalid token |
3750 * set: |
3750 * set: |
3751 <baseset [9]> |
3751 <baseset [9]> |
3752 9 |
3752 9 |
3753 $ echo 'strictreplacing($1, $10) = $10 or desc("$1")' >> .hg/hgrc |
3753 $ echo 'strictreplacing($1, $10) = $10 or desc("$1")' >> .hg/hgrc |
3754 $ try 'strictreplacing("foo", tip)' |
3754 $ try 'strictreplacing("foo", tip)' |
3755 (func |
3755 (func |
3756 ('symbol', 'strictreplacing') |
3756 (symbol 'strictreplacing') |
3757 (list |
3757 (list |
3758 ('string', 'foo') |
3758 (string 'foo') |
3759 ('symbol', 'tip'))) |
3759 (symbol 'tip'))) |
3760 * expanded: |
3760 * expanded: |
3761 (or |
3761 (or |
3762 (list |
3762 (list |
3763 ('symbol', 'tip') |
3763 (symbol 'tip') |
3764 (func |
3764 (func |
3765 ('symbol', 'desc') |
3765 (symbol 'desc') |
3766 ('string', '$1')))) |
3766 (string '$1')))) |
3767 * set: |
3767 * set: |
3768 <addset |
3768 <addset |
3769 <baseset [9]>, |
3769 <baseset [9]>, |
3770 <filteredset |
3770 <filteredset |
3771 <fullreposet+ 0:10>, |
3771 <fullreposet+ 0:10>, |
3772 <desc '$1'>>> |
3772 <desc '$1'>>> |
3773 9 |
3773 9 |
3774 |
3774 |
3775 $ try 'd(2:5)' |
3775 $ try 'd(2:5)' |
3776 (func |
3776 (func |
3777 ('symbol', 'd') |
3777 (symbol 'd') |
3778 (range |
3778 (range |
3779 ('symbol', '2') |
3779 (symbol '2') |
3780 ('symbol', '5'))) |
3780 (symbol '5'))) |
3781 * expanded: |
3781 * expanded: |
3782 (func |
3782 (func |
3783 ('symbol', 'reverse') |
3783 (symbol 'reverse') |
3784 (func |
3784 (func |
3785 ('symbol', 'sort') |
3785 (symbol 'sort') |
3786 (list |
3786 (list |
3787 (range |
3787 (range |
3788 ('symbol', '2') |
3788 (symbol '2') |
3789 ('symbol', '5')) |
3789 (symbol '5')) |
3790 ('symbol', 'date')))) |
3790 (symbol 'date')))) |
3791 * set: |
3791 * set: |
3792 <baseset [4, 5, 3, 2]> |
3792 <baseset [4, 5, 3, 2]> |
3793 4 |
3793 4 |
3794 5 |
3794 5 |
3795 3 |
3795 3 |
3796 2 |
3796 2 |
3797 $ try 'rs(2 or 3, date)' |
3797 $ try 'rs(2 or 3, date)' |
3798 (func |
3798 (func |
3799 ('symbol', 'rs') |
3799 (symbol 'rs') |
3800 (list |
3800 (list |
3801 (or |
3801 (or |
3802 (list |
3802 (list |
3803 ('symbol', '2') |
3803 (symbol '2') |
3804 ('symbol', '3'))) |
3804 (symbol '3'))) |
3805 ('symbol', 'date'))) |
3805 (symbol 'date'))) |
3806 * expanded: |
3806 * expanded: |
3807 (func |
3807 (func |
3808 ('symbol', 'reverse') |
3808 (symbol 'reverse') |
3809 (func |
3809 (func |
3810 ('symbol', 'sort') |
3810 (symbol 'sort') |
3811 (list |
3811 (list |
3812 (or |
3812 (or |
3813 (list |
3813 (list |
3814 ('symbol', '2') |
3814 (symbol '2') |
3815 ('symbol', '3'))) |
3815 (symbol '3'))) |
3816 ('symbol', 'date')))) |
3816 (symbol 'date')))) |
3817 * set: |
3817 * set: |
3818 <baseset [3, 2]> |
3818 <baseset [3, 2]> |
3819 3 |
3819 3 |
3820 2 |
3820 2 |
3821 $ try 'rs()' |
3821 $ try 'rs()' |
3822 (func |
3822 (func |
3823 ('symbol', 'rs') |
3823 (symbol 'rs') |
3824 None) |
3824 None) |
3825 hg: parse error: invalid number of arguments: 0 |
3825 hg: parse error: invalid number of arguments: 0 |
3826 [255] |
3826 [255] |
3827 $ try 'rs(2)' |
3827 $ try 'rs(2)' |
3828 (func |
3828 (func |
3829 ('symbol', 'rs') |
3829 (symbol 'rs') |
3830 ('symbol', '2')) |
3830 (symbol '2')) |
3831 hg: parse error: invalid number of arguments: 1 |
3831 hg: parse error: invalid number of arguments: 1 |
3832 [255] |
3832 [255] |
3833 $ try 'rs(2, data, 7)' |
3833 $ try 'rs(2, data, 7)' |
3834 (func |
3834 (func |
3835 ('symbol', 'rs') |
3835 (symbol 'rs') |
3836 (list |
3836 (list |
3837 ('symbol', '2') |
3837 (symbol '2') |
3838 ('symbol', 'data') |
3838 (symbol 'data') |
3839 ('symbol', '7'))) |
3839 (symbol '7'))) |
3840 hg: parse error: invalid number of arguments: 3 |
3840 hg: parse error: invalid number of arguments: 3 |
3841 [255] |
3841 [255] |
3842 $ try 'rs4(2 or 3, x, x, date)' |
3842 $ try 'rs4(2 or 3, x, x, date)' |
3843 (func |
3843 (func |
3844 ('symbol', 'rs4') |
3844 (symbol 'rs4') |
3845 (list |
3845 (list |
3846 (or |
3846 (or |
3847 (list |
3847 (list |
3848 ('symbol', '2') |
3848 (symbol '2') |
3849 ('symbol', '3'))) |
3849 (symbol '3'))) |
3850 ('symbol', 'x') |
3850 (symbol 'x') |
3851 ('symbol', 'x') |
3851 (symbol 'x') |
3852 ('symbol', 'date'))) |
3852 (symbol 'date'))) |
3853 * expanded: |
3853 * expanded: |
3854 (func |
3854 (func |
3855 ('symbol', 'reverse') |
3855 (symbol 'reverse') |
3856 (func |
3856 (func |
3857 ('symbol', 'sort') |
3857 (symbol 'sort') |
3858 (list |
3858 (list |
3859 (or |
3859 (or |
3860 (list |
3860 (list |
3861 ('symbol', '2') |
3861 (symbol '2') |
3862 ('symbol', '3'))) |
3862 (symbol '3'))) |
3863 ('symbol', 'date')))) |
3863 (symbol 'date')))) |
3864 * set: |
3864 * set: |
3865 <baseset [3, 2]> |
3865 <baseset [3, 2]> |
3866 3 |
3866 3 |
3867 2 |
3867 2 |
3868 |
3868 |
4063 |
4063 |
4064 $ try "278 ## '5f5' ## 1ee ## 'ce5'" |
4064 $ try "278 ## '5f5' ## 1ee ## 'ce5'" |
4065 (_concat |
4065 (_concat |
4066 (_concat |
4066 (_concat |
4067 (_concat |
4067 (_concat |
4068 ('symbol', '278') |
4068 (symbol '278') |
4069 ('string', '5f5')) |
4069 (string '5f5')) |
4070 ('symbol', '1ee')) |
4070 (symbol '1ee')) |
4071 ('string', 'ce5')) |
4071 (string 'ce5')) |
4072 * concatenated: |
4072 * concatenated: |
4073 ('string', '2785f51eece5') |
4073 (string '2785f51eece5') |
4074 * set: |
4074 * set: |
4075 <baseset [0]> |
4075 <baseset [0]> |
4076 0 |
4076 0 |
4077 |
4077 |
4078 $ echo 'cat4($1, $2, $3, $4) = $1 ## $2 ## $3 ## $4' >> .hg/hgrc |
4078 $ echo 'cat4($1, $2, $3, $4) = $1 ## $2 ## $3 ## $4' >> .hg/hgrc |
4079 $ try "cat4(278, '5f5', 1ee, 'ce5')" |
4079 $ try "cat4(278, '5f5', 1ee, 'ce5')" |
4080 (func |
4080 (func |
4081 ('symbol', 'cat4') |
4081 (symbol 'cat4') |
4082 (list |
4082 (list |
4083 ('symbol', '278') |
4083 (symbol '278') |
4084 ('string', '5f5') |
4084 (string '5f5') |
4085 ('symbol', '1ee') |
4085 (symbol '1ee') |
4086 ('string', 'ce5'))) |
4086 (string 'ce5'))) |
4087 * expanded: |
4087 * expanded: |
4088 (_concat |
4088 (_concat |
4089 (_concat |
4089 (_concat |
4090 (_concat |
4090 (_concat |
4091 ('symbol', '278') |
4091 (symbol '278') |
4092 ('string', '5f5')) |
4092 (string '5f5')) |
4093 ('symbol', '1ee')) |
4093 (symbol '1ee')) |
4094 ('string', 'ce5')) |
4094 (string 'ce5')) |
4095 * concatenated: |
4095 * concatenated: |
4096 ('string', '2785f51eece5') |
4096 (string '2785f51eece5') |
4097 * set: |
4097 * set: |
4098 <baseset [0]> |
4098 <baseset [0]> |
4099 0 |
4099 0 |
4100 |
4100 |
4101 (check concatenation in alias nesting) |
4101 (check concatenation in alias nesting) |
4368 |
4368 |
4369 $ hg debugrevspec --verify -p analyzed -p optimized 'draft() & ::(((S1+D1+P5)-D3)+S2)' |
4369 $ hg debugrevspec --verify -p analyzed -p optimized 'draft() & ::(((S1+D1+P5)-D3)+S2)' |
4370 * analyzed: |
4370 * analyzed: |
4371 (and |
4371 (and |
4372 (func |
4372 (func |
4373 ('symbol', 'draft') |
4373 (symbol 'draft') |
4374 None) |
4374 None) |
4375 (func |
4375 (func |
4376 ('symbol', 'ancestors') |
4376 (symbol 'ancestors') |
4377 (or |
4377 (or |
4378 (list |
4378 (list |
4379 (and |
4379 (and |
4380 (or |
4380 (or |
4381 (list |
4381 (list |
4382 ('symbol', 'S1') |
4382 (symbol 'S1') |
4383 ('symbol', 'D1') |
4383 (symbol 'D1') |
4384 ('symbol', 'P5'))) |
4384 (symbol 'P5'))) |
4385 (not |
4385 (not |
4386 ('symbol', 'D3'))) |
4386 (symbol 'D3'))) |
4387 ('symbol', 'S2'))))) |
4387 (symbol 'S2'))))) |
4388 * optimized: |
4388 * optimized: |
4389 (func |
4389 (func |
4390 ('symbol', '_phaseandancestors') |
4390 (symbol '_phaseandancestors') |
4391 (list |
4391 (list |
4392 ('symbol', 'draft') |
4392 (symbol 'draft') |
4393 (or |
4393 (or |
4394 (list |
4394 (list |
4395 (difference |
4395 (difference |
4396 (func |
4396 (func |
4397 ('symbol', '_list') |
4397 (symbol '_list') |
4398 ('string', 'S1\x00D1\x00P5')) |
4398 (string 'S1\x00D1\x00P5')) |
4399 ('symbol', 'D3')) |
4399 (symbol 'D3')) |
4400 ('symbol', 'S2'))))) |
4400 (symbol 'S2'))))) |
4401 $ hg debugrevspec --verify -p analyzed -p optimized 'secret() & ::9' |
4401 $ hg debugrevspec --verify -p analyzed -p optimized 'secret() & ::9' |
4402 * analyzed: |
4402 * analyzed: |
4403 (and |
4403 (and |
4404 (func |
4404 (func |
4405 ('symbol', 'secret') |
4405 (symbol 'secret') |
4406 None) |
4406 None) |
4407 (func |
4407 (func |
4408 ('symbol', 'ancestors') |
4408 (symbol 'ancestors') |
4409 ('symbol', '9'))) |
4409 (symbol '9'))) |
4410 * optimized: |
4410 * optimized: |
4411 (func |
4411 (func |
4412 ('symbol', '_phaseandancestors') |
4412 (symbol '_phaseandancestors') |
4413 (list |
4413 (list |
4414 ('symbol', 'secret') |
4414 (symbol 'secret') |
4415 ('symbol', '9'))) |
4415 (symbol '9'))) |
4416 $ hg debugrevspec --verify -p analyzed -p optimized '7 & ( (not public()) & ::(tag()) )' |
4416 $ hg debugrevspec --verify -p analyzed -p optimized '7 & ( (not public()) & ::(tag()) )' |
4417 * analyzed: |
4417 * analyzed: |
4418 (and |
4418 (and |
4419 ('symbol', '7') |
4419 (symbol '7') |
4420 (and |
4420 (and |
4421 (not |
4421 (not |
4422 (func |
4422 (func |
4423 ('symbol', 'public') |
4423 (symbol 'public') |
4424 None)) |
4424 None)) |
4425 (func |
4425 (func |
4426 ('symbol', 'ancestors') |
4426 (symbol 'ancestors') |
4427 (func |
4427 (func |
4428 ('symbol', 'tag') |
4428 (symbol 'tag') |
4429 None)))) |
4429 None)))) |
4430 * optimized: |
4430 * optimized: |
4431 (and |
4431 (and |
4432 ('symbol', '7') |
4432 (symbol '7') |
4433 (func |
4433 (func |
4434 ('symbol', '_phaseandancestors') |
4434 (symbol '_phaseandancestors') |
4435 (list |
4435 (list |
4436 ('symbol', '_notpublic') |
4436 (symbol '_notpublic') |
4437 (func |
4437 (func |
4438 ('symbol', 'tag') |
4438 (symbol 'tag') |
4439 None)))) |
4439 None)))) |
4440 $ hg debugrevspec --verify -p optimized '(not public()) & ancestors(S1+D2+P5, 1)' |
4440 $ hg debugrevspec --verify -p optimized '(not public()) & ancestors(S1+D2+P5, 1)' |
4441 * optimized: |
4441 * optimized: |
4442 (and |
4442 (and |
4443 (func |
4443 (func |
4444 ('symbol', '_notpublic') |
4444 (symbol '_notpublic') |
4445 None) |
4445 None) |
4446 (func |
4446 (func |
4447 ('symbol', 'ancestors') |
4447 (symbol 'ancestors') |
4448 (list |
4448 (list |
4449 (func |
4449 (func |
4450 ('symbol', '_list') |
4450 (symbol '_list') |
4451 ('string', 'S1\x00D2\x00P5')) |
4451 (string 'S1\x00D2\x00P5')) |
4452 ('symbol', '1')))) |
4452 (symbol '1')))) |
4453 $ hg debugrevspec --verify -p optimized '(not public()) & ancestors(S1+D2+P5, depth=1)' |
4453 $ hg debugrevspec --verify -p optimized '(not public()) & ancestors(S1+D2+P5, depth=1)' |
4454 * optimized: |
4454 * optimized: |
4455 (and |
4455 (and |
4456 (func |
4456 (func |
4457 ('symbol', '_notpublic') |
4457 (symbol '_notpublic') |
4458 None) |
4458 None) |
4459 (func |
4459 (func |
4460 ('symbol', 'ancestors') |
4460 (symbol 'ancestors') |
4461 (list |
4461 (list |
4462 (func |
4462 (func |
4463 ('symbol', '_list') |
4463 (symbol '_list') |
4464 ('string', 'S1\x00D2\x00P5')) |
4464 (string 'S1\x00D2\x00P5')) |
4465 (keyvalue |
4465 (keyvalue |
4466 ('symbol', 'depth') |
4466 (symbol 'depth') |
4467 ('symbol', '1'))))) |
4467 (symbol '1'))))) |