# HG changeset patch # User Yuya Nishihara # Date 2017-04-01 08:04:49 # Node ID 3a8810c1b9bc6371c1940c0ad30212bbad4f6e0e # Parent a480551bd1b4af9f3c6d142bc7901e16306308e8 revsetlang: use iterator to track current argument in formatspec() diff --git a/mercurial/revsetlang.py b/mercurial/revsetlang.py --- a/mercurial/revsetlang.py +++ b/mercurial/revsetlang.py @@ -620,9 +620,9 @@ def formatspec(expr, *args): return '(%s or %s)' % (listexp(s[:m], t), listexp(s[m:], t)) expr = pycompat.bytestr(expr) + argiter = iter(args) ret = [] pos = 0 - arg = 0 while pos < len(expr): q = expr.find('%', pos) if q < 0: @@ -634,14 +634,12 @@ def formatspec(expr, *args): if d == '%': ret.append(d) elif d in 'dsnbr': - ret.append(argtype(d, args[arg])) - arg += 1 + ret.append(argtype(d, next(argiter))) elif d == 'l': # a list of some type pos += 1 d = expr[pos] - ret.append(listexp(list(args[arg]), d)) - arg += 1 + ret.append(listexp(list(next(argiter)), d)) else: raise error.Abort(_('unexpected revspec format character %s') % d) pos += 1