[PATCH] revset: don't error out if tokens parse as existing symbols

Yuya Nishihara yuya at tcha.org
Sat May 2 05:51:58 CDT 2015


On Sat, 02 May 2015 00:50:58 -0400, Jordi GutiƩrrez Hermoso wrote:
> # HG changeset patch
> # User Jordi GutiƩrrez Hermoso <jordigh at octave.org>
> # Date 1430352121 14400
> #      Wed Apr 29 20:02:01 2015 -0400
> # Node ID c2616419662f8696d0f14bb418d171667aa3da49
> # Parent  e9edd53770fb77a9787a3e6592a3bf0a29c1bd80
> revset: don't error out if tokens parse as existing symbols
> 
> It makes perfect sense for tokens to parse as existing revset symbols
> (revset functions), and doesn't break anything, since parsing symbols
> as functions works correctly in the presence of parens. For example,
> if "only" is a bookmark, this used to error out,
> 
>    hg log -r "only(only, @)"
> 
> which shouldn't, as the inner "only" is unambiguously not a function.

This patch will help to remove old-style parser at some time.

> diff --git a/mercurial/revset.py b/mercurial/revset.py
> --- a/mercurial/revset.py
> +++ b/mercurial/revset.py
> @@ -335,8 +335,6 @@ def stringset(repo, subset, x):
>      return baseset()
>  
>  def symbolset(repo, subset, x):
> -    if x in symbols:
> -        raise error.ParseError(_("can't use %s here") % x)
>      return stringset(repo, subset, x)

I think symbolset() can be removed. fileset.py has no such function and
both 'string' and 'symbol' are mapped to stringset().

> @@ -291,6 +291,11 @@ quoting needed
>    $ log '"date"'
>    abort: unknown revision 'date'!
>    [255]
> +  $ hg book date -r 4
> +  $ log 'date'
> +  4

It doesn't test the revset function because old-style revision can be caught
by scmutil.revrange().

Regards,


More information about the Mercurial-devel mailing list