diff -r aa3f63e02c3c -r 29eb4cafeeb8 mercurial/revsetlang.py --- a/mercurial/revsetlang.py Thu Mar 01 11:37:16 2018 -0500 +++ b/mercurial/revsetlang.py Tue Apr 10 16:06:52 2018 +0200 @@ -352,6 +352,9 @@ elif op == 'keyvalue': return (op, x[1], _analyze(x[2])) elif op == 'func': + f = getsymbol(x[1]) + if f == 'revset': + return _analyze(x[2]) return (op, x[1], _analyze(x[2])) raise ValueError('invalid operator %r' % op) @@ -482,6 +485,8 @@ ... ParseError: ('invalid token', 4) """ + if lookup and spec.startswith('revset(') and spec.endswith(')'): + lookup = None p = parser.parser(elements) tree, pos = p.parse(tokenize(spec, lookup=lookup, syminitletters=syminitletters))