Patchwork [4,of,5] revset: also parse x^: as (x^):

login
register
mail settings
Submitter Yuya Nishihara
Date Aug. 8, 2016, 3:25 p.m.
Message ID <ba93a75f774fbbaa07be.1470669923@mimosa>
Download mbox | patch
Permalink /patch/16201/
State Accepted
Headers show

Comments

Yuya Nishihara - Aug. 8, 2016, 3:25 p.m.
# HG changeset patch
# User Yuya Nishihara <yuya@tcha.org>
# Date 1470483468 -32400
#      Sat Aug 06 20:37:48 2016 +0900
# Node ID ba93a75f774fbbaa07bef5327e4f8c43755f42cd
# Parent  0d0857c1d633b0fc5ad8d8f3df08dc706dde8845
revset: also parse x^: as (x^):

Given x^:y is (x^):y, this seems sensible.

Patch

diff --git a/mercurial/revset.py b/mercurial/revset.py
--- a/mercurial/revset.py
+++ b/mercurial/revset.py
@@ -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:])
 
diff --git a/tests/test-revset.t b/tests/test-revset.t
--- a/tests/test-revset.t
+++ b/tests/test-revset.t
@@ -504,6 +504,15 @@  infix/suffix resolution of ^ operator (i
   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 (i
   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'