Patchwork [2,of,2] revsets: more informative syntax error message

login
register
mail settings
Submitter Ryan McElroy
Date April 14, 2015, 4:32 a.m.
Message ID <e2e2371e3b2e343224bf.1428985972@devbig105.prn2.facebook.com>
Download mbox | patch
Permalink /patch/8645/
State Accepted
Headers show

Comments

Ryan McElroy - April 14, 2015, 4:32 a.m.
# HG changeset patch
# User Ryan McElroy <rmcelroy@fb.com>
# Date 1428983585 25200
#      Mon Apr 13 20:53:05 2015 -0700
# Node ID e2e2371e3b2e343224bf44b9571904eb8a88ee44
# Parent  e92f07c0e06691df67b06488c37b8b742b667809
revsets: more informative syntax error message

I came across a case where an internal command was using a revset that I didn't
immediately pass in and it was difficult to debug what was going wrong with the
revset. This prints out the revset and informs the user that the error is with
a rebset so it should be more obvious what and where the error is.
Martin von Zweigbergk - April 14, 2015, 5:56 a.m.
On Mon, Apr 13, 2015 at 9:34 PM Ryan McElroy <rmcelroy@fb.com> wrote:

> # HG changeset patch
> # User Ryan McElroy <rmcelroy@fb.com>
> # Date 1428983585 25200
> #      Mon Apr 13 20:53:05 2015 -0700
> # Node ID e2e2371e3b2e343224bf44b9571904eb8a88ee44
> # Parent  e92f07c0e06691df67b06488c37b8b742b667809
> revsets: more informative syntax error message
>
> I came across a case where an internal command was using a revset that I
> didn't
> immediately pass in and it was difficult to debug what was going wrong
> with the
> revset. This prints out the revset and informs the user that the error is
> with
> a rebset so it should be more obvious what and where the error is.
>
> diff --git a/mercurial/revset.py b/mercurial/revset.py
> --- a/mercurial/revset.py
> +++ b/mercurial/revset.py
> @@ -241,7 +241,8 @@ def tokenize(program, lookup=None, symin
>                  yield ('symbol', sym, s)
>              pos -= 1
>          else:
> -            raise error.ParseError(_("syntax error"), pos)
> +            raise error.ParseError(_("syntax error in revset '%s'") %
> +                                   program, pos)
>

Looks like an improvement to me, thanks. Pushing to the clowncopter.


>          pos += 1
>      yield ('end', None, pos)
>
> diff --git a/tests/test-revset.t b/tests/test-revset.t
> --- a/tests/test-revset.t
> +++ b/tests/test-revset.t
> @@ -1535,7 +1535,7 @@ test in problematic encoding
>
>  test error message of bad revset
>    $ hg log -r 'foo\\'
> -  hg: parse error at 3: syntax error
> +  hg: parse error at 3: syntax error in revset 'foo\\'
>    [255]
>
>    $ cd ..
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel@selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel
>

Patch

diff --git a/mercurial/revset.py b/mercurial/revset.py
--- a/mercurial/revset.py
+++ b/mercurial/revset.py
@@ -241,7 +241,8 @@  def tokenize(program, lookup=None, symin
                 yield ('symbol', sym, s)
             pos -= 1
         else:
-            raise error.ParseError(_("syntax error"), pos)
+            raise error.ParseError(_("syntax error in revset '%s'") %
+                                   program, pos)
         pos += 1
     yield ('end', None, pos)
 
diff --git a/tests/test-revset.t b/tests/test-revset.t
--- a/tests/test-revset.t
+++ b/tests/test-revset.t
@@ -1535,7 +1535,7 @@  test in problematic encoding
 
 test error message of bad revset
   $ hg log -r 'foo\\'
-  hg: parse error at 3: syntax error
+  hg: parse error at 3: syntax error in revset 'foo\\'
   [255]
 
   $ cd ..