# HG changeset patch # User Yuya Nishihara # Date 1456736451 -32400 # Node ID 5f31d2248745a4e226ea518e733b1f18f92a35bd # Parent 6d6201fc5aaeff8fb25463551c2511f5b30f06eb parser: move _relabelaliasargs() to common rule-set class This has no doctest because it will be covered by _builddefn() introduced by the next patch. revset._relabelaliasargs() will be removed soon. diff -r 6d6201fc5aae -r 5f31d2248745 mercurial/parser.py --- a/mercurial/parser.py Mon Feb 29 17:54:03 2016 +0900 +++ b/mercurial/parser.py Mon Feb 29 18:00:51 2016 +0900 @@ -369,3 +369,20 @@ return (name, tree[:2], args, None) return (decl, None, None, _("invalid format")) + + @classmethod + def _relabelargs(cls, tree, args): + """Mark alias arguments as ``_aliasarg``""" + if not isinstance(tree, tuple): + return tree + op = tree[0] + if op != cls._symbolnode: + return (op,) + tuple(cls._relabelargs(x, args) for x in tree[1:]) + + assert len(tree) == 2 + sym = tree[1] + if sym in args: + op = '_aliasarg' + elif sym.startswith('$'): + raise error.ParseError(_("'$' not for alias arguments")) + return (op, sym) diff -r 6d6201fc5aae -r 5f31d2248745 mercurial/revset.py --- a/mercurial/revset.py Mon Feb 29 17:54:03 2016 +0900 +++ b/mercurial/revset.py Mon Feb 29 18:00:51 2016 +0900 @@ -2251,19 +2251,7 @@ return parser.simplifyinfixops(tree, ('list',)) def _relabelaliasargs(tree, args): - if not isinstance(tree, tuple): - return tree - op = tree[0] - if op != 'symbol': - return (op,) + tuple(_relabelaliasargs(x, args) for x in tree[1:]) - - assert len(tree) == 2 - sym = tree[1] - if sym in args: - op = '_aliasarg' - elif sym.startswith('$'): - raise error.ParseError(_("'$' not for alias arguments")) - return (op, sym) + return _aliasrules._relabelargs(tree, args) def _parsealiasdefn(defn, args): """Parse alias definition ``defn``