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

Jordi Gutiérrez Hermoso jordigh at octave.org
Sat May 2 04:50:58 UTC 2015


# 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.

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)
 
 def rangeset(repo, subset, x, y):
diff --git a/tests/test-revset.t b/tests/test-revset.t
--- a/tests/test-revset.t
+++ b/tests/test-revset.t
@@ -280,7 +280,7 @@ quoting needed
   hg: parse error: date requires a string
   [255]
   $ log 'date'
-  hg: parse error: can't use date here
+  abort: unknown revision 'date'!
   [255]
   $ log 'date('
   hg: parse error at 5: not a prefix: end
@@ -291,6 +291,11 @@ quoting needed
   $ log '"date"'
   abort: unknown revision 'date'!
   [255]
+  $ hg book date -r 4
+  $ log 'date'
+  4
+  $ log '"date"'
+  4
   $ log 'date(2005) and 1::'
   4
 


More information about the Mercurial-devel mailing list