revset: store full detail into revsetalias.error for error source distinction
authorFUJIWARA Katsunori <foozy@lares.dti.ne.jp>
Sat, 10 Jan 2015 23:18:11 +0900
changeset 23844 ddf2172e901d
parent 23843 c4d0c3d05721
child 23845 0a7fd54d4e60
revset: store full detail into revsetalias.error for error source distinction Before this patch, any errors in the declaration of revset alias aren't detected at all, and there is no information about error source in the error message. As a part of preparation for parsing alias declarations and definitions more strictly, this patch stores full detail into "revsetalias.error" for error source distinction. This makes raising "Abort" and warning potential errors just use "revsetalias.error" without any message composing.
mercurial/revset.py
tests/test-revset.t
--- a/mercurial/revset.py	Sat Jan 10 23:18:11 2015 +0900
+++ b/mercurial/revset.py	Sat Jan 10 23:18:11 2015 +0900
@@ -2154,7 +2154,8 @@
             # Check for placeholder injection
             _checkaliasarg(self.replacement, self.args)
         except error.ParseError, inst:
-            self.error = parseerrordetail(inst)
+            self.error = _('failed to parse the definition of revset alias'
+                           ' "%s": %s') % (self.name, parseerrordetail(inst))
 
 def _getalias(aliases, tree):
     """If tree looks like an unexpanded alias, return it. Return None
@@ -2197,8 +2198,7 @@
     alias = _getalias(aliases, tree)
     if alias is not None:
         if alias.error:
-            raise util.Abort(_('failed to parse revset alias "%s": %s') %
-                             (alias.name, alias.error))
+            raise util.Abort(alias.error)
         if alias in expanding:
             raise error.ParseError(_('infinite expansion of revset alias "%s" '
                                      'detected') % alias.name)
@@ -2231,9 +2231,7 @@
         # warn about problematic (but not referred) aliases
         for name, alias in sorted(aliases.iteritems()):
             if alias.error and not alias.warned:
-                msg = _('failed to parse revset alias "%s": %s'
-                        ) % (name, alias.error)
-                showwarning(_('warning: %s\n') % (msg))
+                showwarning(_('warning: %s\n') % (alias.error))
                 alias.warned = True
     return tree
 
--- a/tests/test-revset.t	Sat Jan 10 23:18:11 2015 +0900
+++ b/tests/test-revset.t	Sat Jan 10 23:18:11 2015 +0900
@@ -985,12 +985,12 @@
     (range
       ('symbol', '2')
       ('symbol', '5')))
-  abort: failed to parse revset alias "injectparamasstring2": not a function: _aliasarg
+  abort: failed to parse the definition of revset alias "injectparamasstring2": not a function: _aliasarg
   [255]
   $ hg debugrevspec --debug --config revsetalias.anotherbadone='branch(' "tip"
   ('symbol', 'tip')
-  warning: failed to parse revset alias "anotherbadone": at 7: not a prefix: end
-  warning: failed to parse revset alias "injectparamasstring2": not a function: _aliasarg
+  warning: failed to parse the definition of revset alias "anotherbadone": at 7: not a prefix: end
+  warning: failed to parse the definition of revset alias "injectparamasstring2": not a function: _aliasarg
   9
   >>> data = file('.hg/hgrc', 'rb').read()
   >>> file('.hg/hgrc', 'wb').write(data.replace('_aliasarg', ''))