revset: also parse x^: as (x^):

Given x^:y is (x^):y, this seems sensible.
This commit is contained in:
Yuya Nishihara 2016-08-06 20:37:48 +09:00
parent 992f4bdde9
commit 1cc6421086
2 changed files with 28 additions and 0 deletions

View File

@ -2323,11 +2323,14 @@ def _fixops(x):
op = x[0]
if op == 'parent':
# x^:y means (x^) : y, not x ^ (:y)
# x^: means (x^) :, not x ^ (:)
post = ('parentpost', x[1])
if x[2][0] == 'dagrangepre':
return _fixops(('dagrange', post, x[2][1]))
elif x[2][0] == 'rangepre':
return _fixops(('range', post, x[2][1]))
elif x[2][0] == 'rangeall':
return _fixops(('rangepost', post))
return (op,) + tuple(_fixops(y) for y in x[1:])

View File

@ -504,6 +504,15 @@ infix/suffix resolution of ^ operator (issue2884):
1
2
$ try '9^:'
(rangepost
(parentpost
('symbol', '9')))
* set:
<spanset+ 8:9>
8
9
x^:y should be resolved before omitting group operators
$ try '1^(:2)'
@ -560,6 +569,22 @@ infix/suffix resolution of ^ operator (issue2884):
1
2
$ try '(9^:)^:'
(rangepost
(parentpost
(group
(rangepost
(parentpost
('symbol', '9'))))))
* set:
<spanset+ 4:9>
4
5
6
7
8
9
x^ in alias should also be resolved
$ try 'A' --config 'revsetalias.A=1^:2'