# HG changeset patch # User FUJIWARA Katsunori # Date 2015-01-10 14:18:11 # Node ID ddf2172e901d6334fdd03f631146a016b4125def # Parent c4d0c3d05721452e9fac4f23933736cdf9d00c3f 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. diff --git a/mercurial/revset.py b/mercurial/revset.py --- a/mercurial/revset.py +++ b/mercurial/revset.py @@ -2154,7 +2154,8 @@ class revsetalias(object): # 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 @@ def _expandaliases(aliases, tree, expand 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 @@ def findaliases(ui, tree, showwarning=No # 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 diff --git a/tests/test-revset.t b/tests/test-revset.t --- a/tests/test-revset.t +++ b/tests/test-revset.t @@ -985,12 +985,12 @@ far away. (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', ''))