Mercurial > public > mercurial-scm > hg-stable
diff mercurial/revsetlang.py @ 35542:beb667c9880f
revset: parse x^:: as (x^):: (issue5764)
We have to make '::' a valid primary expression to parse 'x^::' as '(x)^(::)'
first, but that doesn't change the language because a prefix operator '::y'
precedes a primary '::'.
I can't think of an intuitive meaning of '::', so it's just rejected. Given
'x::y' can be considered to default to {x = roots(), y = heads()}, '::' could
be 'roots()::heads()', which seems not any useful.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sat, 30 Dec 2017 17:55:23 +0900 |
parents | dd911f95cbda |
children | 2df8d12f23bc |
line wrap: on
line diff
--- a/mercurial/revsetlang.py Fri Jan 05 21:48:29 2018 -0500 +++ b/mercurial/revsetlang.py Sat Dec 30 17:55:23 2017 +0900 @@ -27,8 +27,10 @@ "~": (18, None, None, ("ancestor", 18), None), "^": (18, None, None, ("parent", 18), "parentpost"), "-": (5, None, ("negate", 19), ("minus", 5), None), - "::": (17, None, ("dagrangepre", 17), ("dagrange", 17), "dagrangepost"), - "..": (17, None, ("dagrangepre", 17), ("dagrange", 17), "dagrangepost"), + "::": (17, "dagrangeall", ("dagrangepre", 17), ("dagrange", 17), + "dagrangepost"), + "..": (17, "dagrangeall", ("dagrangepre", 17), ("dagrange", 17), + "dagrangepost"), ":": (15, "rangeall", ("rangepre", 15), ("range", 15), "rangepost"), "not": (10, None, ("not", 10), None, None), "!": (10, None, ("not", 10), None, None), @@ -288,6 +290,8 @@ post = ('parentpost', x[1]) if x[2][0] == 'dagrangepre': return _fixops(('dagrange', post, x[2][1])) + elif x[2][0] == 'dagrangeall': + return _fixops(('dagrangepost', post)) elif x[2][0] == 'rangepre': return _fixops(('range', post, x[2][1])) elif x[2][0] == 'rangeall': @@ -313,6 +317,8 @@ return _analyze(_build('only(_, _)', *x[1:])) elif op == 'onlypost': return _analyze(_build('only(_)', x[1])) + elif op == 'dagrangeall': + raise error.ParseError(_("can't use '::' in this context")) elif op == 'dagrangepre': return _analyze(_build('ancestors(_)', x[1])) elif op == 'dagrangepost':