mercurial/revset.py
changeset 25902 5214cbdc37e5
parent 25819 be29d26e2949
child 25926 996102be8b91
--- a/mercurial/revset.py	Sat Jul 18 23:02:18 2015 +0900
+++ b/mercurial/revset.py	Sat Jul 18 23:30:17 2015 +0900
@@ -178,6 +178,21 @@
     if symletters is None:
         symletters = _symletters
 
+    if program and lookup:
+        # attempt to parse old-style ranges first to deal with
+        # things like old-tag which contain query metacharacters
+        parts = program.split(':', 1)
+        if all(lookup(sym) for sym in parts if sym):
+            if parts[0]:
+                yield ('symbol', parts[0], 0)
+            if len(parts) > 1:
+                s = len(parts[0])
+                yield (':', None, s)
+                if parts[1]:
+                    yield ('symbol', parts[1], s + 1)
+            yield ('end', None, len(program))
+            return
+
     pos, l = 0, len(program)
     while pos < l:
         c = program[pos]