# HG changeset patch # User Boris Feld # Date 1546575417 -3600 # Node ID 8d26026b333504cd24b627102ab9b8052d1690c0 # Parent e5b227f41e4a68b28402d90838444a1e9c4c9ad2 revert: extract "%ld" formatting in a _formatintlist function We'll have to reuse this logic in different places. diff -r e5b227f41e4a -r 8d26026b3335 mercurial/revsetlang.py --- a/mercurial/revsetlang.py Fri Jan 04 02:29:04 2019 +0100 +++ b/mercurial/revsetlang.py Fri Jan 04 05:16:57 2019 +0100 @@ -607,7 +607,7 @@ elif l == 1: return _formatargtype(t, s[0]) elif t == 'd': - return "_intlist('%s')" % "\0".join('%d' % int(a) for a in s) + return _formatintlist(s) elif t == 's': return "_list(%s)" % _quote("\0".join(s)) elif t == 'n': @@ -621,6 +621,17 @@ m = l // 2 return '(%s or %s)' % (_formatlistexp(s[:m], t), _formatlistexp(s[m:], t)) +def _formatintlist(data): + try: + l = len(data) + if l == 0: + return "_list('')" + elif l == 1: + return _formatargtype('d', data[0]) + return "_intlist('%s')" % "\0".join('%d' % int(a) for a in data) + except (TypeError, ValueError): + raise error.ParseError(_('invalid argument for revspec')) + def _formatparamexp(args, t): return ', '.join(_formatargtype(t, a) for a in args)