##// END OF EJS Templates
parser: stabilize output of prettyformat() by using byte-safe repr()...
Yuya Nishihara -
r34075:7bbc4e11 default
parent child Browse files
Show More
@@ -20,6 +20,7 b' from __future__ import absolute_import'
20
20
21 from .i18n import _
21 from .i18n import _
22 from . import (
22 from . import (
23 encoding,
23 error,
24 error,
24 util,
25 util,
25 )
26 )
@@ -193,9 +194,17 b' def unescapestr(s):'
193 # mangle Python's exception into our format
194 # mangle Python's exception into our format
194 raise error.ParseError(str(e).lower())
195 raise error.ParseError(str(e).lower())
195
196
197 def _brepr(obj):
198 if isinstance(obj, bytes):
199 return b"'%s'" % util.escapestr(obj)
200 return encoding.strtolocal(repr(obj))
201
196 def _prettyformat(tree, leafnodes, level, lines):
202 def _prettyformat(tree, leafnodes, level, lines):
197 if not isinstance(tree, tuple) or tree[0] in leafnodes:
203 if not isinstance(tree, tuple):
198 lines.append((level, str(tree)))
204 lines.append((level, _brepr(tree)))
205 elif tree[0] in leafnodes:
206 rs = map(_brepr, tree[1:])
207 lines.append((level, '(%s %s)' % (tree[0], ' '.join(rs))))
199 else:
208 else:
200 lines.append((level, '(%s' % tree[0]))
209 lines.append((level, '(%s' % tree[0]))
201 for s in tree[1:]:
210 for s in tree[1:]:
@@ -219,9 +228,9 b' def simplifyinfixops(tree, targetnodes):'
219 ... ('symbol', '2')),
228 ... ('symbol', '2')),
220 ... ('symbol', '3')))
229 ... ('symbol', '3')))
221 (or
230 (or
222 ('symbol', '1')
231 (symbol '1')
223 ('symbol', '2')
232 (symbol '2')
224 ('symbol', '3'))
233 (symbol '3'))
225 >>> f(('func',
234 >>> f(('func',
226 ... ('symbol', 'p1'),
235 ... ('symbol', 'p1'),
227 ... ('or',
236 ... ('or',
@@ -246,25 +255,25 b' def simplifyinfixops(tree, targetnodes):'
246 ... ('symbol', '7'))))),
255 ... ('symbol', '7'))))),
247 ... ('symbol', '8'))))
256 ... ('symbol', '8'))))
248 (func
257 (func
249 ('symbol', 'p1')
258 (symbol 'p1')
250 (or
259 (or
251 (func
260 (func
252 ('symbol', 'sort')
261 (symbol 'sort')
253 (list
262 (list
254 (or
263 (or
255 ('symbol', '1')
264 (symbol '1')
256 ('symbol', '2')
265 (symbol '2')
257 ('symbol', '3'))
266 (symbol '3'))
258 (negate
267 (negate
259 ('symbol', 'rev'))))
268 (symbol 'rev'))))
260 (and
269 (and
261 ('symbol', '4')
270 (symbol '4')
262 (group
271 (group
263 (or
272 (or
264 ('symbol', '5')
273 (symbol '5')
265 ('symbol', '6')
274 (symbol '6')
266 ('symbol', '7'))))
275 (symbol '7'))))
267 ('symbol', '8')))
276 (symbol '8')))
268 """
277 """
269 if not isinstance(tree, tuple):
278 if not isinstance(tree, tuple):
270 return tree
279 return tree
@@ -561,8 +570,8 b' class basealiasrules(object):'
561 >>> args = ['$1', '$2', 'foo']
570 >>> args = ['$1', '$2', 'foo']
562 >>> pprint(builddefn('$1 or foo', args))
571 >>> pprint(builddefn('$1 or foo', args))
563 (or
572 (or
564 ('_aliasarg', '$1')
573 (_aliasarg '$1')
565 ('_aliasarg', 'foo'))
574 (_aliasarg 'foo'))
566 >>> try:
575 >>> try:
567 ... builddefn('$1 or $bar', args)
576 ... builddefn('$1 or $bar', args)
568 ... except error.ParseError as inst:
577 ... except error.ParseError as inst:
@@ -571,12 +580,12 b' class basealiasrules(object):'
571 >>> args = ['$1', '$10', 'foo']
580 >>> args = ['$1', '$10', 'foo']
572 >>> pprint(builddefn('$10 or baz', args))
581 >>> pprint(builddefn('$10 or baz', args))
573 (or
582 (or
574 ('_aliasarg', '$10')
583 (_aliasarg '$10')
575 ('symbol', 'baz'))
584 (symbol 'baz'))
576 >>> pprint(builddefn('"$1" or "foo"', args))
585 >>> pprint(builddefn('"$1" or "foo"', args))
577 (or
586 (or
578 ('string', '$1')
587 (string '$1')
579 ('string', 'foo'))
588 (string 'foo'))
580 """
589 """
581 tree = cls._parse(defn)
590 tree = cls._parse(defn)
582 if args:
591 if args:
@@ -194,18 +194,18 b' def _unnesttemplatelist(tree):'
194 >>> def f(tree):
194 >>> def f(tree):
195 ... print prettyformat(_unnesttemplatelist(tree))
195 ... print prettyformat(_unnesttemplatelist(tree))
196 >>> f(('template', []))
196 >>> f(('template', []))
197 ('string', '')
197 (string '')
198 >>> f(('template', [('string', 'foo')]))
198 >>> f(('template', [('string', 'foo')]))
199 ('string', 'foo')
199 (string 'foo')
200 >>> f(('template', [('string', 'foo'), ('symbol', 'rev')]))
200 >>> f(('template', [('string', 'foo'), ('symbol', 'rev')]))
201 (template
201 (template
202 ('string', 'foo')
202 (string 'foo')
203 ('symbol', 'rev'))
203 (symbol 'rev'))
204 >>> f(('template', [('symbol', 'rev')])) # template(rev) -> str
204 >>> f(('template', [('symbol', 'rev')])) # template(rev) -> str
205 (template
205 (template
206 ('symbol', 'rev'))
206 (symbol 'rev'))
207 >>> f(('template', [('template', [('string', 'foo')])]))
207 >>> f(('template', [('template', [('string', 'foo')])]))
208 ('string', 'foo')
208 (string 'foo')
209 """
209 """
210 if not isinstance(tree, tuple):
210 if not isinstance(tree, tuple):
211 return tree
211 return tree
@@ -41,62 +41,62 b' Test division:'
41 $ hg debugtemplate -r0 -v '{5 / 2} {mod(5, 2)}\n'
41 $ hg debugtemplate -r0 -v '{5 / 2} {mod(5, 2)}\n'
42 (template
42 (template
43 (/
43 (/
44 ('integer', '5')
44 (integer '5')
45 ('integer', '2'))
45 (integer '2'))
46 ('string', ' ')
46 (string ' ')
47 (func
47 (func
48 ('symbol', 'mod')
48 (symbol 'mod')
49 (list
49 (list
50 ('integer', '5')
50 (integer '5')
51 ('integer', '2')))
51 (integer '2')))
52 ('string', '\n'))
52 (string '\n'))
53 2 1
53 2 1
54 $ hg debugtemplate -r0 -v '{5 / -2} {mod(5, -2)}\n'
54 $ hg debugtemplate -r0 -v '{5 / -2} {mod(5, -2)}\n'
55 (template
55 (template
56 (/
56 (/
57 ('integer', '5')
57 (integer '5')
58 (negate
58 (negate
59 ('integer', '2')))
59 (integer '2')))
60 ('string', ' ')
60 (string ' ')
61 (func
61 (func
62 ('symbol', 'mod')
62 (symbol 'mod')
63 (list
63 (list
64 ('integer', '5')
64 (integer '5')
65 (negate
65 (negate
66 ('integer', '2'))))
66 (integer '2'))))
67 ('string', '\n'))
67 (string '\n'))
68 -3 -1
68 -3 -1
69 $ hg debugtemplate -r0 -v '{-5 / 2} {mod(-5, 2)}\n'
69 $ hg debugtemplate -r0 -v '{-5 / 2} {mod(-5, 2)}\n'
70 (template
70 (template
71 (/
71 (/
72 (negate
72 (negate
73 ('integer', '5'))
73 (integer '5'))
74 ('integer', '2'))
74 (integer '2'))
75 ('string', ' ')
75 (string ' ')
76 (func
76 (func
77 ('symbol', 'mod')
77 (symbol 'mod')
78 (list
78 (list
79 (negate
79 (negate
80 ('integer', '5'))
80 (integer '5'))
81 ('integer', '2')))
81 (integer '2')))
82 ('string', '\n'))
82 (string '\n'))
83 -3 1
83 -3 1
84 $ hg debugtemplate -r0 -v '{-5 / -2} {mod(-5, -2)}\n'
84 $ hg debugtemplate -r0 -v '{-5 / -2} {mod(-5, -2)}\n'
85 (template
85 (template
86 (/
86 (/
87 (negate
87 (negate
88 ('integer', '5'))
88 (integer '5'))
89 (negate
89 (negate
90 ('integer', '2')))
90 (integer '2')))
91 ('string', ' ')
91 (string ' ')
92 (func
92 (func
93 ('symbol', 'mod')
93 (symbol 'mod')
94 (list
94 (list
95 (negate
95 (negate
96 ('integer', '5'))
96 (integer '5'))
97 (negate
97 (negate
98 ('integer', '2'))))
98 (integer '2'))))
99 ('string', '\n'))
99 (string '\n'))
100 2 -1
100 2 -1
101
101
102 Filters bind closer than arithmetic:
102 Filters bind closer than arithmetic:
@@ -106,11 +106,11 b' Filters bind closer than arithmetic:'
106 (-
106 (-
107 (|
107 (|
108 (func
108 (func
109 ('symbol', 'revset')
109 (symbol 'revset')
110 ('string', '.'))
110 (string '.'))
111 ('symbol', 'count'))
111 (symbol 'count'))
112 ('integer', '1'))
112 (integer '1'))
113 ('string', '\n'))
113 (string '\n'))
114 0
114 0
115
115
116 But negate binds closer still:
116 But negate binds closer still:
@@ -118,20 +118,20 b' But negate binds closer still:'
118 $ hg debugtemplate -r0 -v '{1-3|stringify}\n'
118 $ hg debugtemplate -r0 -v '{1-3|stringify}\n'
119 (template
119 (template
120 (-
120 (-
121 ('integer', '1')
121 (integer '1')
122 (|
122 (|
123 ('integer', '3')
123 (integer '3')
124 ('symbol', 'stringify')))
124 (symbol 'stringify')))
125 ('string', '\n'))
125 (string '\n'))
126 hg: parse error: arithmetic only defined on integers
126 hg: parse error: arithmetic only defined on integers
127 [255]
127 [255]
128 $ hg debugtemplate -r0 -v '{-3|stringify}\n'
128 $ hg debugtemplate -r0 -v '{-3|stringify}\n'
129 (template
129 (template
130 (|
130 (|
131 (negate
131 (negate
132 ('integer', '3'))
132 (integer '3'))
133 ('symbol', 'stringify'))
133 (symbol 'stringify'))
134 ('string', '\n'))
134 (string '\n'))
135 -3
135 -3
136
136
137 Keyword arguments:
137 Keyword arguments:
@@ -139,10 +139,10 b' Keyword arguments:'
139 $ hg debugtemplate -r0 -v '{foo=bar|baz}'
139 $ hg debugtemplate -r0 -v '{foo=bar|baz}'
140 (template
140 (template
141 (keyvalue
141 (keyvalue
142 ('symbol', 'foo')
142 (symbol 'foo')
143 (|
143 (|
144 ('symbol', 'bar')
144 (symbol 'bar')
145 ('symbol', 'baz'))))
145 (symbol 'baz'))))
146 hg: parse error: can't use a key-value pair in this context
146 hg: parse error: can't use a key-value pair in this context
147 [255]
147 [255]
148
148
@@ -3174,21 +3174,21 b' Test integer literal:'
3174 $ hg debugtemplate -v '{(0)}\n'
3174 $ hg debugtemplate -v '{(0)}\n'
3175 (template
3175 (template
3176 (group
3176 (group
3177 ('integer', '0'))
3177 (integer '0'))
3178 ('string', '\n'))
3178 (string '\n'))
3179 0
3179 0
3180 $ hg debugtemplate -v '{(123)}\n'
3180 $ hg debugtemplate -v '{(123)}\n'
3181 (template
3181 (template
3182 (group
3182 (group
3183 ('integer', '123'))
3183 (integer '123'))
3184 ('string', '\n'))
3184 (string '\n'))
3185 123
3185 123
3186 $ hg debugtemplate -v '{(-4)}\n'
3186 $ hg debugtemplate -v '{(-4)}\n'
3187 (template
3187 (template
3188 (group
3188 (group
3189 (negate
3189 (negate
3190 ('integer', '4')))
3190 (integer '4')))
3191 ('string', '\n'))
3191 (string '\n'))
3192 -4
3192 -4
3193 $ hg debugtemplate '{(-)}\n'
3193 $ hg debugtemplate '{(-)}\n'
3194 hg: parse error at 3: not a prefix: )
3194 hg: parse error at 3: not a prefix: )
@@ -3201,25 +3201,25 b' top-level integer literal is interpreted'
3201
3201
3202 $ hg debugtemplate -D 1=one -v '{1}\n'
3202 $ hg debugtemplate -D 1=one -v '{1}\n'
3203 (template
3203 (template
3204 ('integer', '1')
3204 (integer '1')
3205 ('string', '\n'))
3205 (string '\n'))
3206 one
3206 one
3207 $ hg debugtemplate -D 1=one -v '{if("t", "{1}")}\n'
3207 $ hg debugtemplate -D 1=one -v '{if("t", "{1}")}\n'
3208 (template
3208 (template
3209 (func
3209 (func
3210 ('symbol', 'if')
3210 (symbol 'if')
3211 (list
3211 (list
3212 ('string', 't')
3212 (string 't')
3213 (template
3213 (template
3214 ('integer', '1'))))
3214 (integer '1'))))
3215 ('string', '\n'))
3215 (string '\n'))
3216 one
3216 one
3217 $ hg debugtemplate -D 1=one -v '{1|stringify}\n'
3217 $ hg debugtemplate -D 1=one -v '{1|stringify}\n'
3218 (template
3218 (template
3219 (|
3219 (|
3220 ('integer', '1')
3220 (integer '1')
3221 ('symbol', 'stringify'))
3221 (symbol 'stringify'))
3222 ('string', '\n'))
3222 (string '\n'))
3223 one
3223 one
3224
3224
3225 unless explicit symbol is expected:
3225 unless explicit symbol is expected:
@@ -3235,27 +3235,27 b' Test string literal:'
3235
3235
3236 $ hg debugtemplate -Ra -r0 -v '{"string with no template fragment"}\n'
3236 $ hg debugtemplate -Ra -r0 -v '{"string with no template fragment"}\n'
3237 (template
3237 (template
3238 ('string', 'string with no template fragment')
3238 (string 'string with no template fragment')
3239 ('string', '\n'))
3239 (string '\n'))
3240 string with no template fragment
3240 string with no template fragment
3241 $ hg debugtemplate -Ra -r0 -v '{"template: {rev}"}\n'
3241 $ hg debugtemplate -Ra -r0 -v '{"template: {rev}"}\n'
3242 (template
3242 (template
3243 (template
3243 (template
3244 ('string', 'template: ')
3244 (string 'template: ')
3245 ('symbol', 'rev'))
3245 (symbol 'rev'))
3246 ('string', '\n'))
3246 (string '\n'))
3247 template: 0
3247 template: 0
3248 $ hg debugtemplate -Ra -r0 -v '{r"rawstring: {rev}"}\n'
3248 $ hg debugtemplate -Ra -r0 -v '{r"rawstring: {rev}"}\n'
3249 (template
3249 (template
3250 ('string', 'rawstring: {rev}')
3250 (string 'rawstring: {rev}')
3251 ('string', '\n'))
3251 (string '\n'))
3252 rawstring: {rev}
3252 rawstring: {rev}
3253 $ hg debugtemplate -Ra -r0 -v '{files % r"rawstring: {file}"}\n'
3253 $ hg debugtemplate -Ra -r0 -v '{files % r"rawstring: {file}"}\n'
3254 (template
3254 (template
3255 (%
3255 (%
3256 ('symbol', 'files')
3256 (symbol 'files')
3257 ('string', 'rawstring: {file}'))
3257 (string 'rawstring: {file}'))
3258 ('string', '\n'))
3258 (string '\n'))
3259 rawstring: {file}
3259 rawstring: {file}
3260
3260
3261 Test string escaping:
3261 Test string escaping:
@@ -4242,49 +4242,49 b' Templater supports aliases of symbol and'
4242
4242
4243 $ hg debugtemplate -vr0 '{rn} {utcdate(date)|isodate}\n'
4243 $ hg debugtemplate -vr0 '{rn} {utcdate(date)|isodate}\n'
4244 (template
4244 (template
4245 ('symbol', 'rn')
4245 (symbol 'rn')
4246 ('string', ' ')
4246 (string ' ')
4247 (|
4247 (|
4248 (func
4248 (func
4249 ('symbol', 'utcdate')
4249 (symbol 'utcdate')
4250 ('symbol', 'date'))
4250 (symbol 'date'))
4251 ('symbol', 'isodate'))
4251 (symbol 'isodate'))
4252 ('string', '\n'))
4252 (string '\n'))
4253 * expanded:
4253 * expanded:
4254 (template
4254 (template
4255 (template
4255 (template
4256 ('symbol', 'rev')
4256 (symbol 'rev')
4257 ('string', ':')
4257 (string ':')
4258 (|
4258 (|
4259 ('symbol', 'node')
4259 (symbol 'node')
4260 ('symbol', 'short')))
4260 (symbol 'short')))
4261 ('string', ' ')
4261 (string ' ')
4262 (|
4262 (|
4263 (func
4263 (func
4264 ('symbol', 'localdate')
4264 (symbol 'localdate')
4265 (list
4265 (list
4266 ('symbol', 'date')
4266 (symbol 'date')
4267 ('string', 'UTC')))
4267 (string 'UTC')))
4268 ('symbol', 'isodate'))
4268 (symbol 'isodate'))
4269 ('string', '\n'))
4269 (string '\n'))
4270 0:1e4e1b8f71e0 1970-01-12 13:46 +0000
4270 0:1e4e1b8f71e0 1970-01-12 13:46 +0000
4271
4271
4272 $ hg debugtemplate -vr0 '{status("A", file_adds)}'
4272 $ hg debugtemplate -vr0 '{status("A", file_adds)}'
4273 (template
4273 (template
4274 (func
4274 (func
4275 ('symbol', 'status')
4275 (symbol 'status')
4276 (list
4276 (list
4277 ('string', 'A')
4277 (string 'A')
4278 ('symbol', 'file_adds'))))
4278 (symbol 'file_adds'))))
4279 * expanded:
4279 * expanded:
4280 (template
4280 (template
4281 (%
4281 (%
4282 ('symbol', 'file_adds')
4282 (symbol 'file_adds')
4283 (template
4283 (template
4284 ('string', 'A')
4284 (string 'A')
4285 ('string', ' ')
4285 (string ' ')
4286 ('symbol', 'file')
4286 (symbol 'file')
4287 ('string', '\n'))))
4287 (string '\n'))))
4288 A a
4288 A a
4289
4289
4290 A unary function alias can be called as a filter:
4290 A unary function alias can be called as a filter:
@@ -4293,20 +4293,20 b' A unary function alias can be called as '
4293 (template
4293 (template
4294 (|
4294 (|
4295 (|
4295 (|
4296 ('symbol', 'date')
4296 (symbol 'date')
4297 ('symbol', 'utcdate'))
4297 (symbol 'utcdate'))
4298 ('symbol', 'isodate'))
4298 (symbol 'isodate'))
4299 ('string', '\n'))
4299 (string '\n'))
4300 * expanded:
4300 * expanded:
4301 (template
4301 (template
4302 (|
4302 (|
4303 (func
4303 (func
4304 ('symbol', 'localdate')
4304 (symbol 'localdate')
4305 (list
4305 (list
4306 ('symbol', 'date')
4306 (symbol 'date')
4307 ('string', 'UTC')))
4307 (string 'UTC')))
4308 ('symbol', 'isodate'))
4308 (symbol 'isodate'))
4309 ('string', '\n'))
4309 (string '\n'))
4310 1970-01-12 13:46 +0000
4310 1970-01-12 13:46 +0000
4311
4311
4312 Aliases should be applied only to command arguments and templates in hgrc.
4312 Aliases should be applied only to command arguments and templates in hgrc.
@@ -4341,7 +4341,7 b' Unparsable alias:'
4341
4341
4342 $ hg debugtemplate --config templatealias.bad='x(' -v '{bad}'
4342 $ hg debugtemplate --config templatealias.bad='x(' -v '{bad}'
4343 (template
4343 (template
4344 ('symbol', 'bad'))
4344 (symbol 'bad'))
4345 abort: bad definition of template alias "bad": at 2: not a prefix: end
4345 abort: bad definition of template alias "bad": at 2: not a prefix: end
4346 [255]
4346 [255]
4347 $ hg log --config templatealias.bad='x(' -T '{bad}'
4347 $ hg log --config templatealias.bad='x(' -T '{bad}'
@@ -17,20 +17,20 b''
17 Test operators and basic patterns
17 Test operators and basic patterns
18
18
19 $ fileset -v a1
19 $ fileset -v a1
20 ('symbol', 'a1')
20 (symbol 'a1')
21 a1
21 a1
22 $ fileset -v 'a*'
22 $ fileset -v 'a*'
23 ('symbol', 'a*')
23 (symbol 'a*')
24 a1
24 a1
25 a2
25 a2
26 $ fileset -v '"re:a\d"'
26 $ fileset -v '"re:a\d"'
27 ('string', 're:a\\d')
27 (string 're:a\\d')
28 a1
28 a1
29 a2
29 a2
30 $ fileset -v 'a1 or a2'
30 $ fileset -v 'a1 or a2'
31 (or
31 (or
32 ('symbol', 'a1')
32 (symbol 'a1')
33 ('symbol', 'a2'))
33 (symbol 'a2'))
34 a1
34 a1
35 a2
35 a2
36 $ fileset 'a1 | a2'
36 $ fileset 'a1 | a2'
@@ -1463,11 +1463,11 b' glog always reorders nodes which explain'
1463 (or
1463 (or
1464 (list
1464 (list
1465 (func
1465 (func
1466 ('symbol', 'user')
1466 (symbol 'user')
1467 ('string', 'test'))
1467 (string 'test'))
1468 (func
1468 (func
1469 ('symbol', 'user')
1469 (symbol 'user')
1470 ('string', 'not-a-user'))))))
1470 (string 'not-a-user'))))))
1471 $ testlog -b not-a-branch
1471 $ testlog -b not-a-branch
1472 abort: unknown revision 'not-a-branch'!
1472 abort: unknown revision 'not-a-branch'!
1473 abort: unknown revision 'not-a-branch'!
1473 abort: unknown revision 'not-a-branch'!
@@ -1479,14 +1479,14 b' glog always reorders nodes which explain'
1479 (or
1479 (or
1480 (list
1480 (list
1481 (func
1481 (func
1482 ('symbol', 'branch')
1482 (symbol 'branch')
1483 ('string', 'default'))
1483 (string 'default'))
1484 (func
1484 (func
1485 ('symbol', 'branch')
1485 (symbol 'branch')
1486 ('string', 'branch'))
1486 (string 'branch'))
1487 (func
1487 (func
1488 ('symbol', 'branch')
1488 (symbol 'branch')
1489 ('string', 'branch'))))))
1489 (string 'branch'))))))
1490 $ testlog -k expand -k merge
1490 $ testlog -k expand -k merge
1491 []
1491 []
1492 (group
1492 (group
@@ -1494,30 +1494,30 b' glog always reorders nodes which explain'
1494 (or
1494 (or
1495 (list
1495 (list
1496 (func
1496 (func
1497 ('symbol', 'keyword')
1497 (symbol 'keyword')
1498 ('string', 'expand'))
1498 (string 'expand'))
1499 (func
1499 (func
1500 ('symbol', 'keyword')
1500 (symbol 'keyword')
1501 ('string', 'merge'))))))
1501 (string 'merge'))))))
1502 $ testlog --only-merges
1502 $ testlog --only-merges
1503 []
1503 []
1504 (group
1504 (group
1505 (func
1505 (func
1506 ('symbol', 'merge')
1506 (symbol 'merge')
1507 None))
1507 None))
1508 $ testlog --no-merges
1508 $ testlog --no-merges
1509 []
1509 []
1510 (group
1510 (group
1511 (not
1511 (not
1512 (func
1512 (func
1513 ('symbol', 'merge')
1513 (symbol 'merge')
1514 None)))
1514 None)))
1515 $ testlog --date '2 0 to 4 0'
1515 $ testlog --date '2 0 to 4 0'
1516 []
1516 []
1517 (group
1517 (group
1518 (func
1518 (func
1519 ('symbol', 'date')
1519 (symbol 'date')
1520 ('string', '2 0 to 4 0')))
1520 (string '2 0 to 4 0')))
1521 $ hg log -G -d 'brace ) in a date'
1521 $ hg log -G -d 'brace ) in a date'
1522 hg: parse error: invalid date: 'brace ) in a date'
1522 hg: parse error: invalid date: 'brace ) in a date'
1523 [255]
1523 [255]
@@ -1530,18 +1530,18 b' glog always reorders nodes which explain'
1530 (group
1530 (group
1531 (or
1531 (or
1532 (list
1532 (list
1533 ('string', '31')
1533 (string '31')
1534 (func
1534 (func
1535 ('symbol', 'ancestors')
1535 (symbol 'ancestors')
1536 ('string', '31'))))))
1536 (string '31'))))))
1537 (not
1537 (not
1538 (group
1538 (group
1539 (or
1539 (or
1540 (list
1540 (list
1541 ('string', '32')
1541 (string '32')
1542 (func
1542 (func
1543 ('symbol', 'ancestors')
1543 (symbol 'ancestors')
1544 ('string', '32')))))))))
1544 (string '32')))))))))
1545
1545
1546 Dedicated repo for --follow and paths filtering. The g is crafted to
1546 Dedicated repo for --follow and paths filtering. The g is crafted to
1547 have 2 filelog topological heads in a linear changeset graph.
1547 have 2 filelog topological heads in a linear changeset graph.
@@ -1591,8 +1591,8 b' have 2 filelog topological heads in a li'
1591 (group
1591 (group
1592 (group
1592 (group
1593 (func
1593 (func
1594 ('symbol', 'filelog')
1594 (symbol 'filelog')
1595 ('string', 'a'))))
1595 (string 'a'))))
1596 $ testlog a b
1596 $ testlog a b
1597 []
1597 []
1598 (group
1598 (group
@@ -1600,11 +1600,11 b' have 2 filelog topological heads in a li'
1600 (or
1600 (or
1601 (list
1601 (list
1602 (func
1602 (func
1603 ('symbol', 'filelog')
1603 (symbol 'filelog')
1604 ('string', 'a'))
1604 (string 'a'))
1605 (func
1605 (func
1606 ('symbol', 'filelog')
1606 (symbol 'filelog')
1607 ('string', 'b'))))))
1607 (string 'b'))))))
1608
1608
1609 Test falling back to slow path for non-existing files
1609 Test falling back to slow path for non-existing files
1610
1610
@@ -1612,12 +1612,12 b' Test falling back to slow path for non-e'
1612 []
1612 []
1613 (group
1613 (group
1614 (func
1614 (func
1615 ('symbol', '_matchfiles')
1615 (symbol '_matchfiles')
1616 (list
1616 (list
1617 ('string', 'r:')
1617 (string 'r:')
1618 ('string', 'd:relpath')
1618 (string 'd:relpath')
1619 ('string', 'p:a')
1619 (string 'p:a')
1620 ('string', 'p:c'))))
1620 (string 'p:c'))))
1621
1621
1622 Test multiple --include/--exclude/paths
1622 Test multiple --include/--exclude/paths
1623
1623
@@ -1625,16 +1625,16 b' Test multiple --include/--exclude/paths'
1625 []
1625 []
1626 (group
1626 (group
1627 (func
1627 (func
1628 ('symbol', '_matchfiles')
1628 (symbol '_matchfiles')
1629 (list
1629 (list
1630 ('string', 'r:')
1630 (string 'r:')
1631 ('string', 'd:relpath')
1631 (string 'd:relpath')
1632 ('string', 'p:a')
1632 (string 'p:a')
1633 ('string', 'p:e')
1633 (string 'p:e')
1634 ('string', 'i:a')
1634 (string 'i:a')
1635 ('string', 'i:e')
1635 (string 'i:e')
1636 ('string', 'x:b')
1636 (string 'x:b')
1637 ('string', 'x:e'))))
1637 (string 'x:e'))))
1638
1638
1639 Test glob expansion of pats
1639 Test glob expansion of pats
1640
1640
@@ -1649,8 +1649,8 b' Test glob expansion of pats'
1649 (group
1649 (group
1650 (group
1650 (group
1651 (func
1651 (func
1652 ('symbol', 'filelog')
1652 (symbol 'filelog')
1653 ('string', 'aa'))))
1653 (string 'aa'))))
1654
1654
1655 Test --follow on a non-existent directory
1655 Test --follow on a non-existent directory
1656
1656
@@ -1667,14 +1667,14 b' Test --follow on a directory'
1667 (group
1667 (group
1668 (and
1668 (and
1669 (func
1669 (func
1670 ('symbol', 'ancestors')
1670 (symbol 'ancestors')
1671 ('symbol', '.'))
1671 (symbol '.'))
1672 (func
1672 (func
1673 ('symbol', '_matchfiles')
1673 (symbol '_matchfiles')
1674 (list
1674 (list
1675 ('string', 'r:')
1675 (string 'r:')
1676 ('string', 'd:relpath')
1676 (string 'd:relpath')
1677 ('string', 'p:dir')))))
1677 (string 'p:dir')))))
1678 $ hg up -q tip
1678 $ hg up -q tip
1679
1679
1680 Test --follow on file not in parent revision
1680 Test --follow on file not in parent revision
@@ -1691,14 +1691,14 b' Test --follow and patterns'
1691 (group
1691 (group
1692 (and
1692 (and
1693 (func
1693 (func
1694 ('symbol', 'ancestors')
1694 (symbol 'ancestors')
1695 ('symbol', '.'))
1695 (symbol '.'))
1696 (func
1696 (func
1697 ('symbol', '_matchfiles')
1697 (symbol '_matchfiles')
1698 (list
1698 (list
1699 ('string', 'r:')
1699 (string 'r:')
1700 ('string', 'd:relpath')
1700 (string 'd:relpath')
1701 ('string', 'p:glob:*')))))
1701 (string 'p:glob:*')))))
1702
1702
1703 Test --follow on a single rename
1703 Test --follow on a single rename
1704
1704
@@ -1708,8 +1708,8 b' Test --follow on a single rename'
1708 (group
1708 (group
1709 (group
1709 (group
1710 (func
1710 (func
1711 ('symbol', 'follow')
1711 (symbol 'follow')
1712 ('string', 'a'))))
1712 (string 'a'))))
1713
1713
1714 Test --follow and multiple renames
1714 Test --follow and multiple renames
1715
1715
@@ -1719,8 +1719,8 b' Test --follow and multiple renames'
1719 (group
1719 (group
1720 (group
1720 (group
1721 (func
1721 (func
1722 ('symbol', 'follow')
1722 (symbol 'follow')
1723 ('string', 'e'))))
1723 (string 'e'))))
1724
1724
1725 Test --follow and multiple filelog heads
1725 Test --follow and multiple filelog heads
1726
1726
@@ -1730,8 +1730,8 b' Test --follow and multiple filelog heads'
1730 (group
1730 (group
1731 (group
1731 (group
1732 (func
1732 (func
1733 ('symbol', 'follow')
1733 (symbol 'follow')
1734 ('string', 'g'))))
1734 (string 'g'))))
1735 $ cat log.nodes
1735 $ cat log.nodes
1736 nodetag 2
1736 nodetag 2
1737 nodetag 1
1737 nodetag 1
@@ -1742,8 +1742,8 b' Test --follow and multiple filelog heads'
1742 (group
1742 (group
1743 (group
1743 (group
1744 (func
1744 (func
1745 ('symbol', 'follow')
1745 (symbol 'follow')
1746 ('string', 'g'))))
1746 (string 'g'))))
1747 $ cat log.nodes
1747 $ cat log.nodes
1748 nodetag 3
1748 nodetag 3
1749 nodetag 2
1749 nodetag 2
@@ -1758,11 +1758,11 b' Test --follow and multiple files'
1758 (or
1758 (or
1759 (list
1759 (list
1760 (func
1760 (func
1761 ('symbol', 'follow')
1761 (symbol 'follow')
1762 ('string', 'g'))
1762 (string 'g'))
1763 (func
1763 (func
1764 ('symbol', 'follow')
1764 (symbol 'follow')
1765 ('string', 'e'))))))
1765 (string 'e'))))))
1766 $ cat log.nodes
1766 $ cat log.nodes
1767 nodetag 4
1767 nodetag 4
1768 nodetag 3
1768 nodetag 3
@@ -1792,10 +1792,10 b' Test --follow-first'
1792 []
1792 []
1793 (group
1793 (group
1794 (func
1794 (func
1795 ('symbol', '_firstancestors')
1795 (symbol '_firstancestors')
1796 (func
1796 (func
1797 ('symbol', 'rev')
1797 (symbol 'rev')
1798 ('symbol', '6'))))
1798 (symbol '6'))))
1799
1799
1800 Cannot compare with log --follow-first FILE as it never worked
1800 Cannot compare with log --follow-first FILE as it never worked
1801
1801
@@ -1804,8 +1804,8 b' Cannot compare with log --follow-first F'
1804 (group
1804 (group
1805 (group
1805 (group
1806 (func
1806 (func
1807 ('symbol', '_followfirst')
1807 (symbol '_followfirst')
1808 ('string', 'e'))))
1808 (string 'e'))))
1809 $ hg log -G --follow-first e --template '{rev} {desc|firstline}\n'
1809 $ hg log -G --follow-first e --template '{rev} {desc|firstline}\n'
1810 @ 6 merge 5 and 4
1810 @ 6 merge 5 and 4
1811 |\
1811 |\
@@ -1839,20 +1839,20 b' Test "set:..." and parent revision'
1839 []
1839 []
1840 (group
1840 (group
1841 (func
1841 (func
1842 ('symbol', '_matchfiles')
1842 (symbol '_matchfiles')
1843 (list
1843 (list
1844 ('string', 'r:')
1844 (string 'r:')
1845 ('string', 'd:relpath')
1845 (string 'd:relpath')
1846 ('string', 'p:set:copied()'))))
1846 (string 'p:set:copied()'))))
1847 $ testlog --include "set:copied()"
1847 $ testlog --include "set:copied()"
1848 []
1848 []
1849 (group
1849 (group
1850 (func
1850 (func
1851 ('symbol', '_matchfiles')
1851 (symbol '_matchfiles')
1852 (list
1852 (list
1853 ('string', 'r:')
1853 (string 'r:')
1854 ('string', 'd:relpath')
1854 (string 'd:relpath')
1855 ('string', 'i:set:copied()'))))
1855 (string 'i:set:copied()'))))
1856 $ testlog -r "sort(file('set:copied()'), -rev)"
1856 $ testlog -r "sort(file('set:copied()'), -rev)"
1857 ["sort(file('set:copied()'), -rev)"]
1857 ["sort(file('set:copied()'), -rev)"]
1858 []
1858 []
@@ -1866,24 +1866,24 b' Test --removed'
1866 []
1866 []
1867 (group
1867 (group
1868 (func
1868 (func
1869 ('symbol', '_matchfiles')
1869 (symbol '_matchfiles')
1870 (list
1870 (list
1871 ('string', 'r:')
1871 (string 'r:')
1872 ('string', 'd:relpath')
1872 (string 'd:relpath')
1873 ('string', 'p:a'))))
1873 (string 'p:a'))))
1874 $ testlog --removed --follow a
1874 $ testlog --removed --follow a
1875 []
1875 []
1876 (group
1876 (group
1877 (and
1877 (and
1878 (func
1878 (func
1879 ('symbol', 'ancestors')
1879 (symbol 'ancestors')
1880 ('symbol', '.'))
1880 (symbol '.'))
1881 (func
1881 (func
1882 ('symbol', '_matchfiles')
1882 (symbol '_matchfiles')
1883 (list
1883 (list
1884 ('string', 'r:')
1884 (string 'r:')
1885 ('string', 'd:relpath')
1885 (string 'd:relpath')
1886 ('string', 'p:a')))))
1886 (string 'p:a')))))
1887
1887
1888 Test --patch and --stat with --follow and --follow-first
1888 Test --patch and --stat with --follow and --follow-first
1889
1889
@@ -2209,10 +2209,10 b' changessincelatesttag with no prior tag'
2209 ['6', '8', '5', '7', '4']
2209 ['6', '8', '5', '7', '4']
2210 (group
2210 (group
2211 (func
2211 (func
2212 ('symbol', 'descendants')
2212 (symbol 'descendants')
2213 (func
2213 (func
2214 ('symbol', 'rev')
2214 (symbol 'rev')
2215 ('symbol', '6'))))
2215 (symbol '6'))))
2216
2216
2217 Test --follow-first and forward --rev
2217 Test --follow-first and forward --rev
2218
2218
@@ -2220,10 +2220,10 b' Test --follow-first and forward --rev'
2220 ['6', '8', '5', '7', '4']
2220 ['6', '8', '5', '7', '4']
2221 (group
2221 (group
2222 (func
2222 (func
2223 ('symbol', '_firstdescendants')
2223 (symbol '_firstdescendants')
2224 (func
2224 (func
2225 ('symbol', 'rev')
2225 (symbol 'rev')
2226 ('symbol', '6'))))
2226 (symbol '6'))))
2227 --- log.nodes * (glob)
2227 --- log.nodes * (glob)
2228 +++ glog.nodes * (glob)
2228 +++ glog.nodes * (glob)
2229 @@ -1,3 +1,3 @@
2229 @@ -1,3 +1,3 @@
@@ -2238,10 +2238,10 b' Test --follow and backward --rev'
2238 ['6', '5', '7', '8', '4']
2238 ['6', '5', '7', '8', '4']
2239 (group
2239 (group
2240 (func
2240 (func
2241 ('symbol', 'ancestors')
2241 (symbol 'ancestors')
2242 (func
2242 (func
2243 ('symbol', 'rev')
2243 (symbol 'rev')
2244 ('symbol', '6'))))
2244 (symbol '6'))))
2245
2245
2246 Test --follow-first and backward --rev
2246 Test --follow-first and backward --rev
2247
2247
@@ -2249,10 +2249,10 b' Test --follow-first and backward --rev'
2249 ['6', '5', '7', '8', '4']
2249 ['6', '5', '7', '8', '4']
2250 (group
2250 (group
2251 (func
2251 (func
2252 ('symbol', '_firstancestors')
2252 (symbol '_firstancestors')
2253 (func
2253 (func
2254 ('symbol', 'rev')
2254 (symbol 'rev')
2255 ('symbol', '6'))))
2255 (symbol '6'))))
2256
2256
2257 Test --follow with --rev of graphlog extension
2257 Test --follow with --rev of graphlog extension
2258
2258
@@ -2270,25 +2270,25 b' Test subdir'
2270 []
2270 []
2271 (group
2271 (group
2272 (func
2272 (func
2273 ('symbol', '_matchfiles')
2273 (symbol '_matchfiles')
2274 (list
2274 (list
2275 ('string', 'r:')
2275 (string 'r:')
2276 ('string', 'd:relpath')
2276 (string 'd:relpath')
2277 ('string', 'p:.'))))
2277 (string 'p:.'))))
2278 $ testlog ../b
2278 $ testlog ../b
2279 []
2279 []
2280 (group
2280 (group
2281 (group
2281 (group
2282 (func
2282 (func
2283 ('symbol', 'filelog')
2283 (symbol 'filelog')
2284 ('string', '../b'))))
2284 (string '../b'))))
2285 $ testlog -f ../b
2285 $ testlog -f ../b
2286 []
2286 []
2287 (group
2287 (group
2288 (group
2288 (group
2289 (func
2289 (func
2290 ('symbol', 'follow')
2290 (symbol 'follow')
2291 ('string', 'b'))))
2291 (string 'b'))))
2292 $ cd ..
2292 $ cd ..
2293
2293
2294 Test --hidden
2294 Test --hidden
@@ -14,19 +14,19 b''
14
14
15 $ try 'p1()'
15 $ try 'p1()'
16 (func
16 (func
17 ('symbol', 'p1')
17 (symbol 'p1')
18 None)
18 None)
19 * set:
19 * set:
20 <baseset []>
20 <baseset []>
21 $ try 'p2()'
21 $ try 'p2()'
22 (func
22 (func
23 ('symbol', 'p2')
23 (symbol 'p2')
24 None)
24 None)
25 * set:
25 * set:
26 <baseset []>
26 <baseset []>
27 $ try 'parents()'
27 $ try 'parents()'
28 (func
28 (func
29 ('symbol', 'parents')
29 (symbol 'parents')
30 None)
30 None)
31 * set:
31 * set:
32 <baseset+ []>
32 <baseset+ []>
This diff has been collapsed as it changes many lines, (1164 lines changed) Show them Hide them
@@ -155,8 +155,8 b' trivial'
155
155
156 $ try 0:1
156 $ try 0:1
157 (range
157 (range
158 ('symbol', '0')
158 (symbol '0')
159 ('symbol', '1'))
159 (symbol '1'))
160 * set:
160 * set:
161 <spanset+ 0:2>
161 <spanset+ 0:2>
162 0
162 0
@@ -181,8 +181,8 b' trivial'
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
@@ -191,9 +191,9 b' trivial'
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
@@ -203,14 +203,14 b' trivial'
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]>,
@@ -218,14 +218,14 b' names that should work without quoting'
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]>,
@@ -233,14 +233,14 b' names that should work without quoting'
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]>,
@@ -251,20 +251,20 b' names that should work without quoting'
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
@@ -276,7 +276,7 b' names that should be caught by fallback '
276 9
276 9
277 $ try ':+a+b+c+'
277 $ try ':+a+b+c+'
278 (rangepre
278 (rangepre
279 ('symbol', '+a+b+c+'))
279 (symbol '+a+b+c+'))
280 * set:
280 * set:
281 <spanset+ 0:4>
281 <spanset+ 0:4>
282 0
282 0
@@ -285,8 +285,8 b' names that should be caught by fallback '
285 3
285 3
286 $ try -- '-a-b-c-:+a+b+c+'
286 $ try -- '-a-b-c-:+a+b+c+'
287 (range
287 (range
288 ('symbol', '-a-b-c-')
288 (symbol '-a-b-c-')
289 ('symbol', '+a+b+c+'))
289 (symbol '+a+b+c+'))
290 * set:
290 * set:
291 <spanset- 3:5>
291 <spanset- 3:5>
292 4
292 4
@@ -300,15 +300,15 b' names that should be caught by fallback '
300 (minus
300 (minus
301 (minus
301 (minus
302 (negate
302 (negate
303 ('symbol', 'a'))
303 (symbol 'a'))
304 ('symbol', 'b'))
304 (symbol 'b'))
305 ('symbol', 'c'))
305 (symbol 'c'))
306 (negate
306 (negate
307 ('symbol', 'a')))
307 (symbol 'a')))
308 abort: unknown revision '-a'!
308 abort: unknown revision '-a'!
309 [255]
309 [255]
310 $ try Γ©
310 $ try Γ©
311 ('symbol', '\xc3\xa9')
311 (symbol '\xc3\xa9')
312 * set:
312 * set:
313 <baseset [9]>
313 <baseset [9]>
314 9
314 9
@@ -324,8 +324,8 b' quoting needed'
324
324
325 $ try '"-a-b-c-"-a'
325 $ try '"-a-b-c-"-a'
326 (minus
326 (minus
327 ('string', '-a-b-c-')
327 (string '-a-b-c-')
328 ('symbol', 'a'))
328 (symbol 'a'))
329 * set:
329 * set:
330 <filteredset
330 <filteredset
331 <baseset [4]>,
331 <baseset [4]>,
@@ -345,9 +345,9 b' quoting needed'
345 (or
345 (or
346 (list
346 (list
347 (and
347 (and
348 ('symbol', '1')
348 (symbol '1')
349 ('symbol', '2'))
349 (symbol '2'))
350 ('symbol', '3')))
350 (symbol '3')))
351 * set:
351 * set:
352 <addset
352 <addset
353 <baseset []>,
353 <baseset []>,
@@ -356,10 +356,10 b' quoting needed'
356 $ try '1|2&3'
356 $ try '1|2&3'
357 (or
357 (or
358 (list
358 (list
359 ('symbol', '1')
359 (symbol '1')
360 (and
360 (and
361 ('symbol', '2')
361 (symbol '2')
362 ('symbol', '3'))))
362 (symbol '3'))))
363 * set:
363 * set:
364 <addset
364 <addset
365 <baseset [1]>,
365 <baseset [1]>,
@@ -368,20 +368,20 b' quoting needed'
368 $ try '1&2&3' # associativity
368 $ try '1&2&3' # associativity
369 (and
369 (and
370 (and
370 (and
371 ('symbol', '1')
371 (symbol '1')
372 ('symbol', '2'))
372 (symbol '2'))
373 ('symbol', '3'))
373 (symbol '3'))
374 * set:
374 * set:
375 <baseset []>
375 <baseset []>
376 $ try '1|(2|3)'
376 $ try '1|(2|3)'
377 (or
377 (or
378 (list
378 (list
379 ('symbol', '1')
379 (symbol '1')
380 (group
380 (group
381 (or
381 (or
382 (list
382 (list
383 ('symbol', '2')
383 (symbol '2')
384 ('symbol', '3'))))))
384 (symbol '3'))))))
385 * set:
385 * set:
386 <addset
386 <addset
387 <baseset [1]>,
387 <baseset [1]>,
@@ -471,11 +471,11 b' keyword arguments'
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
@@ -483,17 +483,17 b' keyword arguments'
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]
@@ -503,13 +503,13 b' relation-subscript operator has the high'
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
@@ -522,10 +522,10 b' relation-subscript operator has the high'
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
@@ -535,34 +535,34 b' left-hand side of relation-subscript ope'
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
@@ -570,9 +570,9 b' resolution of subscript and relation-sub'
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
@@ -580,10 +580,10 b' resolution of subscript and relation-sub'
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
@@ -591,10 +591,10 b' resolution of subscript and relation-sub'
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
@@ -602,11 +602,11 b' resolution of subscript and relation-sub'
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
@@ -675,23 +675,23 b' parsed tree at stages:'
675 (group
675 (group
676 (or
676 (or
677 (list
677 (list
678 ('symbol', '0')
678 (symbol '0')
679 ('symbol', '1'))))
679 (symbol '1'))))
680 ('symbol', '1'))
680 (symbol '1'))
681 * analyzed:
681 * analyzed:
682 (and
682 (and
683 (or
683 (or
684 (list
684 (list
685 ('symbol', '0')
685 (symbol '0')
686 ('symbol', '1')))
686 (symbol '1')))
687 (not
687 (not
688 ('symbol', '1')))
688 (symbol '1')))
689 * optimized:
689 * optimized:
690 (difference
690 (difference
691 (func
691 (func
692 ('symbol', '_list')
692 (symbol '_list')
693 ('string', '0\x001'))
693 (string '0\x001'))
694 ('symbol', '1'))
694 (symbol '1'))
695 0
695 0
696
696
697 $ hg debugrevspec -p unknown '0'
697 $ hg debugrevspec -p unknown '0'
@@ -710,15 +710,15 b' verify optimized tree:'
710 * analyzed:
710 * analyzed:
711 (and
711 (and
712 (func
712 (func
713 ('symbol', 'r3232')
713 (symbol 'r3232')
714 None)
714 None)
715 ('symbol', '2'))
715 (symbol '2'))
716 * optimized:
716 * optimized:
717 (andsmally
717 (andsmally
718 (func
718 (func
719 ('symbol', 'r3232')
719 (symbol 'r3232')
720 None)
720 None)
721 ('symbol', '2'))
721 (symbol '2'))
722 * analyzed set:
722 * analyzed set:
723 <baseset [2]>
723 <baseset [2]>
724 * optimized set:
724 * optimized set:
@@ -766,7 +766,7 b' may be hidden (issue5385)'
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
@@ -776,8 +776,8 b' may be hidden (issue5385)'
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
@@ -787,8 +787,8 b' may be hidden (issue5385)'
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
@@ -799,8 +799,8 b' infix/suffix resolution of ^ operator (i'
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
@@ -810,8 +810,8 b' infix/suffix resolution of ^ operator (i'
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
@@ -821,7 +821,7 b' infix/suffix resolution of ^ operator (i'
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
@@ -831,10 +831,10 b' infix/suffix resolution of ^ operator (i'
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
@@ -842,11 +842,11 b' infix/suffix resolution of ^ operator (i'
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
@@ -859,9 +859,9 b' infix/suffix resolution of ^ operator (i'
859 (group
859 (group
860 (range
860 (range
861 (parentpost
861 (parentpost
862 ('symbol', '3'))
862 (symbol '3'))
863 ('symbol', '4'))))
863 (symbol '4'))))
864 ('symbol', '2'))
864 (symbol '2'))
865 * set:
865 * set:
866 <spanset+ 0:3>
866 <spanset+ 0:3>
867 0
867 0
@@ -874,9 +874,9 b' infix/suffix resolution of ^ operator (i'
874 (group
874 (group
875 (dagrange
875 (dagrange
876 (parentpost
876 (parentpost
877 ('symbol', '3'))
877 (symbol '3'))
878 ('symbol', '4'))))
878 (symbol '4'))))
879 ('symbol', '2'))
879 (symbol '2'))
880 * set:
880 * set:
881 <baseset+ [0, 1, 2]>
881 <baseset+ [0, 1, 2]>
882 0
882 0
@@ -889,7 +889,7 b' infix/suffix resolution of ^ operator (i'
889 (group
889 (group
890 (rangepost
890 (rangepost
891 (parentpost
891 (parentpost
892 ('symbol', '9'))))))
892 (symbol '9'))))))
893 * set:
893 * set:
894 <spanset+ 4:10>
894 <spanset+ 4:10>
895 4
895 4
@@ -902,12 +902,12 b' infix/suffix resolution of ^ operator (i'
902 x^ in alias should also be resolved
902 x^ in alias should also be resolved
903
903
904 $ try 'A' --config 'revsetalias.A=1^:2'
904 $ try 'A' --config 'revsetalias.A=1^:2'
905 ('symbol', 'A')
905 (symbol 'A')
906 * expanded:
906 * expanded:
907 (range
907 (range
908 (parentpost
908 (parentpost
909 ('symbol', '1'))
909 (symbol '1'))
910 ('symbol', '2'))
910 (symbol '2'))
911 * set:
911 * set:
912 <spanset+ 0:3>
912 <spanset+ 0:3>
913 0
913 0
@@ -916,13 +916,13 b' infix/suffix resolution of ^ operator (i'
916
916
917 $ try 'A:2' --config 'revsetalias.A=1^'
917 $ try 'A:2' --config 'revsetalias.A=1^'
918 (range
918 (range
919 ('symbol', 'A')
919 (symbol 'A')
920 ('symbol', '2'))
920 (symbol '2'))
921 * expanded:
921 * expanded:
922 (range
922 (range
923 (parentpost
923 (parentpost
924 ('symbol', '1'))
924 (symbol '1'))
925 ('symbol', '2'))
925 (symbol '2'))
926 * set:
926 * set:
927 <spanset+ 0:3>
927 <spanset+ 0:3>
928 0
928 0
@@ -934,13 +934,13 b' infix/suffix resolution of ^ operator (i'
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
@@ -1168,11 +1168,11 b' test ancestors/descendants relation subs'
1168 * parsed:
1168 * parsed:
1169 (relsubscript
1169 (relsubscript
1170 (func
1170 (func
1171 ('symbol', 'roots')
1171 (symbol 'roots')
1172 (rangeall
1172 (rangeall
1173 None))
1173 None))
1174 ('symbol', 'g')
1174 (symbol 'g')
1175 ('symbol', '2'))
1175 (symbol '2'))
1176 2
1176 2
1177 3
1177 3
1178
1178
@@ -1270,22 +1270,22 b' test author'
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>,
@@ -1602,17 +1602,17 b" Test operand of '%' is optimized recursi"
1602 (onlypost
1602 (onlypost
1603 (minus
1603 (minus
1604 (range
1604 (range
1605 ('symbol', '8')
1605 (symbol '8')
1606 ('symbol', '9'))
1606 (symbol '9'))
1607 ('symbol', '8')))
1607 (symbol '8')))
1608 * optimized:
1608 * optimized:
1609 (func
1609 (func
1610 ('symbol', 'only')
1610 (symbol 'only')
1611 (difference
1611 (difference
1612 (range
1612 (range
1613 ('symbol', '8')
1613 (symbol '8')
1614 ('symbol', '9'))
1614 (symbol '9'))
1615 ('symbol', '8')))
1615 (symbol '8')))
1616 * set:
1616 * set:
1617 <baseset+ [8, 9]>
1617 <baseset+ [8, 9]>
1618 8
1618 8
@@ -1620,15 +1620,15 b" Test operand of '%' is optimized recursi"
1620 $ try --optimize '(9)%(5)'
1620 $ try --optimize '(9)%(5)'
1621 (only
1621 (only
1622 (group
1622 (group
1623 ('symbol', '9'))
1623 (symbol '9'))
1624 (group
1624 (group
1625 ('symbol', '5')))
1625 (symbol '5')))
1626 * optimized:
1626 * optimized:
1627 (func
1627 (func
1628 ('symbol', 'only')
1628 (symbol 'only')
1629 (list
1629 (list
1630 ('symbol', '9')
1630 (symbol '9')
1631 ('symbol', '5')))
1631 (symbol '5')))
1632 * set:
1632 * set:
1633 <baseset+ [2, 4, 8, 9]>
1633 <baseset+ [2, 4, 8, 9]>
1634 2
1634 2
@@ -1962,14 +1962,14 b' ordering defined by it.'
1962 (difference
1962 (difference
1963 (and
1963 (and
1964 (range
1964 (range
1965 ('symbol', '3')
1965 (symbol '3')
1966 ('symbol', '0'))
1966 (symbol '0'))
1967 (range
1967 (range
1968 ('symbol', '0')
1968 (symbol '0')
1969 ('symbol', '3')))
1969 (symbol '3')))
1970 (range
1970 (range
1971 ('symbol', '2')
1971 (symbol '2')
1972 ('symbol', '1')))
1972 (symbol '1')))
1973 * set:
1973 * set:
1974 <filteredset
1974 <filteredset
1975 <filteredset
1975 <filteredset
@@ -1986,22 +1986,22 b' ordering defined by it.'
1986 $ try --optimize '2:0 & (0 + 1 + 2)'
1986 $ try --optimize '2:0 & (0 + 1 + 2)'
1987 (and
1987 (and
1988 (range
1988 (range
1989 ('symbol', '2')
1989 (symbol '2')
1990 ('symbol', '0'))
1990 (symbol '0'))
1991 (group
1991 (group
1992 (or
1992 (or
1993 (list
1993 (list
1994 ('symbol', '0')
1994 (symbol '0')
1995 ('symbol', '1')
1995 (symbol '1')
1996 ('symbol', '2')))))
1996 (symbol '2')))))
1997 * optimized:
1997 * optimized:
1998 (and
1998 (and
1999 (range
1999 (range
2000 ('symbol', '2')
2000 (symbol '2')
2001 ('symbol', '0'))
2001 (symbol '0'))
2002 (func
2002 (func
2003 ('symbol', '_list')
2003 (symbol '_list')
2004 ('string', '0\x001\x002')))
2004 (string '0\x001\x002')))
2005 * set:
2005 * set:
2006 <filteredset
2006 <filteredset
2007 <spanset- 0:3>,
2007 <spanset- 0:3>,
@@ -2015,26 +2015,26 b' ordering defined by it.'
2015 $ try --optimize '2:0 & (0:1 + 2)'
2015 $ try --optimize '2:0 & (0:1 + 2)'
2016 (and
2016 (and
2017 (range
2017 (range
2018 ('symbol', '2')
2018 (symbol '2')
2019 ('symbol', '0'))
2019 (symbol '0'))
2020 (group
2020 (group
2021 (or
2021 (or
2022 (list
2022 (list
2023 (range
2023 (range
2024 ('symbol', '0')
2024 (symbol '0')
2025 ('symbol', '1'))
2025 (symbol '1'))
2026 ('symbol', '2')))))
2026 (symbol '2')))))
2027 * optimized:
2027 * optimized:
2028 (and
2028 (and
2029 (range
2029 (range
2030 ('symbol', '2')
2030 (symbol '2')
2031 ('symbol', '0'))
2031 (symbol '0'))
2032 (or
2032 (or
2033 (list
2033 (list
2034 (range
2034 (range
2035 ('symbol', '0')
2035 (symbol '0')
2036 ('symbol', '1'))
2036 (symbol '1'))
2037 ('symbol', '2'))))
2037 (symbol '2'))))
2038 * set:
2038 * set:
2039 <filteredset
2039 <filteredset
2040 <spanset- 0:3>,
2040 <spanset- 0:3>,
@@ -2050,19 +2050,19 b' ordering defined by it.'
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>,
@@ -2074,19 +2074,19 b' ordering defined by it.'
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]>,
@@ -2100,19 +2100,19 b' ordering defined by it.'
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>,
@@ -2124,19 +2124,19 b' ordering defined by it.'
2124 $ trylist --optimize --bin '%ln & 2:0' `hg log -T '{node} ' -r0+2+1`
2124 $ trylist --optimize --bin '%ln & 2:0' `hg log -T '{node} ' -r0+2+1`
2125 (and
2125 (and
2126 (func
2126 (func
2127 ('symbol', '_hexlist')
2127 (symbol '_hexlist')
2128 ('string', '*')) (glob)
2128 (string '*')) (glob)
2129 (range
2129 (range
2130 ('symbol', '2')
2130 (symbol '2')
2131 ('symbol', '0')))
2131 (symbol '0')))
2132 * optimized:
2132 * optimized:
2133 (andsmally
2133 (andsmally
2134 (func
2134 (func
2135 ('symbol', '_hexlist')
2135 (symbol '_hexlist')
2136 ('string', '*')) (glob)
2136 (string '*')) (glob)
2137 (range
2137 (range
2138 ('symbol', '2')
2138 (symbol '2')
2139 ('symbol', '0')))
2139 (symbol '0')))
2140 * set:
2140 * set:
2141 <baseset [0, 2, 1]>
2141 <baseset [0, 2, 1]>
2142 0
2142 0
@@ -2150,11 +2150,11 b' ordering defined by it.'
2150 * optimized:
2150 * optimized:
2151 (difference
2151 (difference
2152 (range
2152 (range
2153 ('symbol', '2')
2153 (symbol '2')
2154 ('symbol', '0'))
2154 (symbol '0'))
2155 (func
2155 (func
2156 ('symbol', '_list')
2156 (symbol '_list')
2157 ('string', '0\x001')))
2157 (string '0\x001')))
2158 * set:
2158 * set:
2159 <filteredset
2159 <filteredset
2160 <spanset- 0:3>,
2160 <spanset- 0:3>,
@@ -2166,15 +2166,15 b' ordering defined by it.'
2166 * optimized:
2166 * optimized:
2167 (difference
2167 (difference
2168 (range
2168 (range
2169 ('symbol', '2')
2169 (symbol '2')
2170 ('symbol', '0'))
2170 (symbol '0'))
2171 (and
2171 (and
2172 (range
2172 (range
2173 ('symbol', '0')
2173 (symbol '0')
2174 ('symbol', '2'))
2174 (symbol '2'))
2175 (func
2175 (func
2176 ('symbol', '_list')
2176 (symbol '_list')
2177 ('string', '0\x001'))))
2177 (string '0\x001'))))
2178 * set:
2178 * set:
2179 <filteredset
2179 <filteredset
2180 <spanset- 0:3>,
2180 <spanset- 0:3>,
@@ -2188,10 +2188,10 b' ordering defined by it.'
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
@@ -2201,25 +2201,25 b' ordering defined by it.'
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>,
@@ -2233,22 +2233,22 b' ordering defined by it.'
2233 $ try --optimize '0:2 & reverse(all())'
2233 $ try --optimize '0:2 & reverse(all())'
2234 (and
2234 (and
2235 (range
2235 (range
2236 ('symbol', '0')
2236 (symbol '0')
2237 ('symbol', '2'))
2237 (symbol '2'))
2238 (func
2238 (func
2239 ('symbol', 'reverse')
2239 (symbol 'reverse')
2240 (func
2240 (func
2241 ('symbol', 'all')
2241 (symbol 'all')
2242 None)))
2242 None)))
2243 * optimized:
2243 * optimized:
2244 (and
2244 (and
2245 (range
2245 (range
2246 ('symbol', '0')
2246 (symbol '0')
2247 ('symbol', '2'))
2247 (symbol '2'))
2248 (func
2248 (func
2249 ('symbol', 'reverse')
2249 (symbol 'reverse')
2250 (func
2250 (func
2251 ('symbol', 'all')
2251 (symbol 'all')
2252 None)))
2252 None)))
2253 * set:
2253 * set:
2254 <filteredset
2254 <filteredset
@@ -2263,28 +2263,28 b' ordering defined by it.'
2263 $ try --optimize '0:2 & sort(all(), -rev)'
2263 $ try --optimize '0:2 & sort(all(), -rev)'
2264 (and
2264 (and
2265 (range
2265 (range
2266 ('symbol', '0')
2266 (symbol '0')
2267 ('symbol', '2'))
2267 (symbol '2'))
2268 (func
2268 (func
2269 ('symbol', 'sort')
2269 (symbol 'sort')
2270 (list
2270 (list
2271 (func
2271 (func
2272 ('symbol', 'all')
2272 (symbol 'all')
2273 None)
2273 None)
2274 (negate
2274 (negate
2275 ('symbol', 'rev')))))
2275 (symbol 'rev')))))
2276 * optimized:
2276 * optimized:
2277 (and
2277 (and
2278 (range
2278 (range
2279 ('symbol', '0')
2279 (symbol '0')
2280 ('symbol', '2'))
2280 (symbol '2'))
2281 (func
2281 (func
2282 ('symbol', 'sort')
2282 (symbol 'sort')
2283 (list
2283 (list
2284 (func
2284 (func
2285 ('symbol', 'all')
2285 (symbol 'all')
2286 None)
2286 None)
2287 ('string', '-rev'))))
2287 (string '-rev'))))
2288 * set:
2288 * set:
2289 <filteredset
2289 <filteredset
2290 <spanset+ 0:3>,
2290 <spanset+ 0:3>,
@@ -2307,25 +2307,25 b' ordering defined by it.'
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]>,
@@ -2335,26 +2335,26 b' ordering defined by it.'
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>,
@@ -2368,33 +2368,33 b' ordering defined by it.'
2368 $ try --optimize '2:0 & (1 + 0 + 2):(0 + 2 + 1)'
2368 $ try --optimize '2:0 & (1 + 0 + 2):(0 + 2 + 1)'
2369 (and
2369 (and
2370 (range
2370 (range
2371 ('symbol', '2')
2371 (symbol '2')
2372 ('symbol', '0'))
2372 (symbol '0'))
2373 (range
2373 (range
2374 (group
2374 (group
2375 (or
2375 (or
2376 (list
2376 (list
2377 ('symbol', '1')
2377 (symbol '1')
2378 ('symbol', '0')
2378 (symbol '0')
2379 ('symbol', '2'))))
2379 (symbol '2'))))
2380 (group
2380 (group
2381 (or
2381 (or
2382 (list
2382 (list
2383 ('symbol', '0')
2383 (symbol '0')
2384 ('symbol', '2')
2384 (symbol '2')
2385 ('symbol', '1'))))))
2385 (symbol '1'))))))
2386 * optimized:
2386 * optimized:
2387 (and
2387 (and
2388 (range
2388 (range
2389 ('symbol', '2')
2389 (symbol '2')
2390 ('symbol', '0'))
2390 (symbol '0'))
2391 (range
2391 (range
2392 (func
2392 (func
2393 ('symbol', '_list')
2393 (symbol '_list')
2394 ('string', '1\x000\x002'))
2394 (string '1\x000\x002'))
2395 (func
2395 (func
2396 ('symbol', '_list')
2396 (symbol '_list')
2397 ('string', '0\x002\x001'))))
2397 (string '0\x002\x001'))))
2398 * set:
2398 * set:
2399 <filteredset
2399 <filteredset
2400 <spanset- 0:3>,
2400 <spanset- 0:3>,
@@ -2406,22 +2406,22 b' ordering defined by it.'
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]>,
@@ -2436,26 +2436,26 b' ordering defined by it.'
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]>,
@@ -2791,13 +2791,13 b' test that `or` operation skips duplicate'
2791 (or
2791 (or
2792 (list
2792 (list
2793 (func
2793 (func
2794 ('symbol', 'reverse')
2794 (symbol 'reverse')
2795 (dagrange
2795 (dagrange
2796 ('symbol', '1')
2796 (symbol '1')
2797 ('symbol', '5')))
2797 (symbol '5')))
2798 (func
2798 (func
2799 ('symbol', 'ancestors')
2799 (symbol 'ancestors')
2800 ('symbol', '4'))))
2800 (symbol '4'))))
2801 * set:
2801 * set:
2802 <addset
2802 <addset
2803 <baseset- [1, 3, 5]>,
2803 <baseset- [1, 3, 5]>,
@@ -2810,17 +2810,17 b' test that `or` operation skips duplicate'
2810 4
2810 4
2811 $ try 'sort(ancestors(4) or reverse(1::5))'
2811 $ try 'sort(ancestors(4) or reverse(1::5))'
2812 (func
2812 (func
2813 ('symbol', 'sort')
2813 (symbol 'sort')
2814 (or
2814 (or
2815 (list
2815 (list
2816 (func
2816 (func
2817 ('symbol', 'ancestors')
2817 (symbol 'ancestors')
2818 ('symbol', '4'))
2818 (symbol '4'))
2819 (func
2819 (func
2820 ('symbol', 'reverse')
2820 (symbol 'reverse')
2821 (dagrange
2821 (dagrange
2822 ('symbol', '1')
2822 (symbol '1')
2823 ('symbol', '5'))))))
2823 (symbol '5'))))))
2824 * set:
2824 * set:
2825 <addset+
2825 <addset+
2826 <generatorset+>,
2826 <generatorset+>,
@@ -2837,18 +2837,18 b' test optimization of trivial `or` operat'
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
@@ -2861,20 +2861,20 b' test optimization of trivial `or` operat'
2861 $ try --optimize '0|1|2:3'
2861 $ try --optimize '0|1|2:3'
2862 (or
2862 (or
2863 (list
2863 (list
2864 ('symbol', '0')
2864 (symbol '0')
2865 ('symbol', '1')
2865 (symbol '1')
2866 (range
2866 (range
2867 ('symbol', '2')
2867 (symbol '2')
2868 ('symbol', '3'))))
2868 (symbol '3'))))
2869 * optimized:
2869 * optimized:
2870 (or
2870 (or
2871 (list
2871 (list
2872 (func
2872 (func
2873 ('symbol', '_list')
2873 (symbol '_list')
2874 ('string', '0\x001'))
2874 (string '0\x001'))
2875 (range
2875 (range
2876 ('symbol', '2')
2876 (symbol '2')
2877 ('symbol', '3'))))
2877 (symbol '3'))))
2878 * set:
2878 * set:
2879 <addset
2879 <addset
2880 <baseset [0, 1]>,
2880 <baseset [0, 1]>,
@@ -2888,27 +2888,27 b' test optimization of trivial `or` operat'
2888 (or
2888 (or
2889 (list
2889 (list
2890 (range
2890 (range
2891 ('symbol', '0')
2891 (symbol '0')
2892 ('symbol', '1'))
2892 (symbol '1'))
2893 ('symbol', '2')
2893 (symbol '2')
2894 (range
2894 (range
2895 ('symbol', '3')
2895 (symbol '3')
2896 ('symbol', '4'))
2896 (symbol '4'))
2897 ('symbol', '5')
2897 (symbol '5')
2898 ('symbol', '6')))
2898 (symbol '6')))
2899 * optimized:
2899 * optimized:
2900 (or
2900 (or
2901 (list
2901 (list
2902 (range
2902 (range
2903 ('symbol', '0')
2903 (symbol '0')
2904 ('symbol', '1'))
2904 (symbol '1'))
2905 ('symbol', '2')
2905 (symbol '2')
2906 (range
2906 (range
2907 ('symbol', '3')
2907 (symbol '3')
2908 ('symbol', '4'))
2908 (symbol '4'))
2909 (func
2909 (func
2910 ('symbol', '_list')
2910 (symbol '_list')
2911 ('string', '5\x006'))))
2911 (string '5\x006'))))
2912 * set:
2912 * set:
2913 <addset
2913 <addset
2914 <addset
2914 <addset
@@ -2931,11 +2931,11 b' unoptimized `or` looks like this'
2931 * analyzed:
2931 * analyzed:
2932 (or
2932 (or
2933 (list
2933 (list
2934 ('symbol', '0')
2934 (symbol '0')
2935 ('symbol', '1')
2935 (symbol '1')
2936 ('symbol', '2')
2936 (symbol '2')
2937 ('symbol', '3')
2937 (symbol '3')
2938 ('symbol', '4')))
2938 (symbol '4')))
2939 * set:
2939 * set:
2940 <addset
2940 <addset
2941 <addset
2941 <addset
@@ -2999,9 +2999,9 b" test ',' in `_list`"
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]
@@ -3012,20 +3012,20 b' test that chained `or` operations make b'
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
@@ -3048,13 +3048,13 b' no crash by empty group "()" while optim'
3048 $ try --optimize '0|()'
3048 $ try --optimize '0|()'
3049 (or
3049 (or
3050 (list
3050 (list
3051 ('symbol', '0')
3051 (symbol '0')
3052 (group
3052 (group
3053 None)))
3053 None)))
3054 * optimized:
3054 * optimized:
3055 (or
3055 (or
3056 (list
3056 (list
3057 ('symbol', '0')
3057 (symbol '0')
3058 None))
3058 None))
3059 hg: parse error: missing argument
3059 hg: parse error: missing argument
3060 [255]
3060 [255]
@@ -3077,47 +3077,47 b' 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
@@ -3127,18 +3127,18 b' check that conversion to only works'
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
@@ -3150,14 +3150,14 b' no crash by empty group "()" while optim'
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]
@@ -3168,13 +3168,13 b' optimization to only() works only if anc'
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
@@ -3184,13 +3184,13 b' optimization to only() works only if anc'
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
@@ -3201,15 +3201,15 b' to support it)'
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
@@ -3492,10 +3492,10 b' aliases:'
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
@@ -3506,17 +3506,17 b' aliases:'
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
@@ -3529,12 +3529,12 b' aliases:'
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
@@ -3543,8 +3543,8 b' aliases:'
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
@@ -3552,12 +3552,12 b' aliases:'
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
@@ -3568,12 +3568,12 b' aliases:'
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+>
@@ -3585,7 +3585,7 b' test infinite recursion'
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
@@ -3593,22 +3593,22 b' test infinite recursion'
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]>,
@@ -3624,16 +3624,16 b' test nesting and variable passing'
3624 $ echo 'nested3($1) = max($1)' >> .hg/hgrc
3624 $ echo 'nested3($1) = max($1)' >> .hg/hgrc
3625 $ try 'nested(2:5)'
3625 $ try 'nested(2:5)'
3626 (func
3626 (func
3627 ('symbol', 'nested')
3627 (symbol 'nested')
3628 (range
3628 (range
3629 ('symbol', '2')
3629 (symbol '2')
3630 ('symbol', '5')))
3630 (symbol '5')))
3631 * expanded:
3631 * expanded:
3632 (func
3632 (func
3633 ('symbol', 'max')
3633 (symbol 'max')
3634 (range
3634 (range
3635 ('symbol', '2')
3635 (symbol '2')
3636 ('symbol', '5')))
3636 (symbol '5')))
3637 * set:
3637 * set:
3638 <baseset
3638 <baseset
3639 <max
3639 <max
@@ -3646,29 +3646,29 b' test chained `or` operations are flatten'
3646 $ echo 'chainedorops($1, $2, $3) = $1|$2|$3' >> .hg/hgrc
3646 $ echo 'chainedorops($1, $2, $3) = $1|$2|$3' >> .hg/hgrc
3647 $ try 'chainedorops(0:1, 1:2, 2:3)'
3647 $ try 'chainedorops(0:1, 1:2, 2:3)'
3648 (func
3648 (func
3649 ('symbol', 'chainedorops')
3649 (symbol 'chainedorops')
3650 (list
3650 (list
3651 (range
3651 (range
3652 ('symbol', '0')
3652 (symbol '0')
3653 ('symbol', '1'))
3653 (symbol '1'))
3654 (range
3654 (range
3655 ('symbol', '1')
3655 (symbol '1')
3656 ('symbol', '2'))
3656 (symbol '2'))
3657 (range
3657 (range
3658 ('symbol', '2')
3658 (symbol '2')
3659 ('symbol', '3'))))
3659 (symbol '3'))))
3660 * expanded:
3660 * expanded:
3661 (or
3661 (or
3662 (list
3662 (list
3663 (range
3663 (range
3664 ('symbol', '0')
3664 (symbol '0')
3665 ('symbol', '1'))
3665 (symbol '1'))
3666 (range
3666 (range
3667 ('symbol', '1')
3667 (symbol '1')
3668 ('symbol', '2'))
3668 (symbol '2'))
3669 (range
3669 (range
3670 ('symbol', '2')
3670 (symbol '2')
3671 ('symbol', '3'))))
3671 (symbol '3'))))
3672 * set:
3672 * set:
3673 <addset
3673 <addset
3674 <spanset+ 0:2>,
3674 <spanset+ 0:2>,
@@ -3688,16 +3688,16 b' far away.'
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
@@ -3708,13 +3708,13 b" but 'all()' should never be substituted "
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
@@ -3726,26 +3726,26 b' 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]>
@@ -3753,17 +3753,17 b' test unknown reference:'
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]>,
@@ -3774,20 +3774,20 b' test unknown reference:'
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
@@ -3796,71 +3796,71 b' test unknown reference:'
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
@@ -3927,16 +3927,16 b' issue2549 - correct optimizations'
3927 $ try 'limit(1 or 2 or 3, 2) and not 2'
3927 $ try 'limit(1 or 2 or 3, 2) and not 2'
3928 (and
3928 (and
3929 (func
3929 (func
3930 ('symbol', 'limit')
3930 (symbol 'limit')
3931 (list
3931 (list
3932 (or
3932 (or
3933 (list
3933 (list
3934 ('symbol', '1')
3934 (symbol '1')
3935 ('symbol', '2')
3935 (symbol '2')
3936 ('symbol', '3')))
3936 (symbol '3')))
3937 ('symbol', '2')))
3937 (symbol '2')))
3938 (not
3938 (not
3939 ('symbol', '2')))
3939 (symbol '2')))
3940 * set:
3940 * set:
3941 <filteredset
3941 <filteredset
3942 <baseset [1, 2]>,
3942 <baseset [1, 2]>,
@@ -3946,13 +3946,13 b' issue2549 - correct optimizations'
3946 $ try 'max(1 or 2) and not 2'
3946 $ try 'max(1 or 2) and not 2'
3947 (and
3947 (and
3948 (func
3948 (func
3949 ('symbol', 'max')
3949 (symbol 'max')
3950 (or
3950 (or
3951 (list
3951 (list
3952 ('symbol', '1')
3952 (symbol '1')
3953 ('symbol', '2'))))
3953 (symbol '2'))))
3954 (not
3954 (not
3955 ('symbol', '2')))
3955 (symbol '2')))
3956 * set:
3956 * set:
3957 <filteredset
3957 <filteredset
3958 <baseset
3958 <baseset
@@ -3964,13 +3964,13 b' issue2549 - correct optimizations'
3964 $ try 'min(1 or 2) and not 1'
3964 $ try 'min(1 or 2) and not 1'
3965 (and
3965 (and
3966 (func
3966 (func
3967 ('symbol', 'min')
3967 (symbol 'min')
3968 (or
3968 (or
3969 (list
3969 (list
3970 ('symbol', '1')
3970 (symbol '1')
3971 ('symbol', '2'))))
3971 (symbol '2'))))
3972 (not
3972 (not
3973 ('symbol', '1')))
3973 (symbol '1')))
3974 * set:
3974 * set:
3975 <filteredset
3975 <filteredset
3976 <baseset
3976 <baseset
@@ -3982,15 +3982,15 b' issue2549 - correct optimizations'
3982 $ try 'last(1 or 2, 1) and not 2'
3982 $ try 'last(1 or 2, 1) and not 2'
3983 (and
3983 (and
3984 (func
3984 (func
3985 ('symbol', 'last')
3985 (symbol 'last')
3986 (list
3986 (list
3987 (or
3987 (or
3988 (list
3988 (list
3989 ('symbol', '1')
3989 (symbol '1')
3990 ('symbol', '2')))
3990 (symbol '2')))
3991 ('symbol', '1')))
3991 (symbol '1')))
3992 (not
3992 (not
3993 ('symbol', '2')))
3993 (symbol '2')))
3994 * set:
3994 * set:
3995 <filteredset
3995 <filteredset
3996 <baseset [2]>,
3996 <baseset [2]>,
@@ -4065,12 +4065,12 b' tests for concatenation of strings/symbo'
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
@@ -4078,22 +4078,22 b' tests for concatenation of strings/symbo'
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
@@ -4370,98 +4370,98 b' Test `draft() & ::x` optimization'
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')))))
General Comments 0
You need to be logged in to leave comments. Login now