Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/revset.py @ 26636:ff6baf32b3ba
revset: eliminate temporary reference to subset in limit() and last()
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Mon, 12 Oct 2015 17:14:47 +0900 |
parents | 56b2bcea2529 |
children | 179764469754 |
comparison
equal
deleted
inserted
replaced
26635:79d86ab65c9d | 26636:ff6baf32b3ba |
---|---|
1295 # i18n: "limit" is a keyword | 1295 # i18n: "limit" is a keyword |
1296 lim = int(getstring(l[1], _("limit requires a number"))) | 1296 lim = int(getstring(l[1], _("limit requires a number"))) |
1297 except (TypeError, ValueError): | 1297 except (TypeError, ValueError): |
1298 # i18n: "limit" is a keyword | 1298 # i18n: "limit" is a keyword |
1299 raise error.ParseError(_("limit expects a number")) | 1299 raise error.ParseError(_("limit expects a number")) |
1300 ss = subset | |
1301 os = getset(repo, fullreposet(repo), l[0]) | 1300 os = getset(repo, fullreposet(repo), l[0]) |
1302 result = [] | 1301 result = [] |
1303 it = iter(os) | 1302 it = iter(os) |
1304 for x in xrange(lim): | 1303 for x in xrange(lim): |
1305 y = next(it, None) | 1304 y = next(it, None) |
1306 if y is None: | 1305 if y is None: |
1307 break | 1306 break |
1308 elif y in ss: | 1307 elif y in subset: |
1309 result.append(y) | 1308 result.append(y) |
1310 return baseset(result) | 1309 return baseset(result) |
1311 | 1310 |
1312 def last(repo, subset, x): | 1311 def last(repo, subset, x): |
1313 """``last(set, [n])`` | 1312 """``last(set, [n])`` |
1321 # i18n: "last" is a keyword | 1320 # i18n: "last" is a keyword |
1322 lim = int(getstring(l[1], _("last requires a number"))) | 1321 lim = int(getstring(l[1], _("last requires a number"))) |
1323 except (TypeError, ValueError): | 1322 except (TypeError, ValueError): |
1324 # i18n: "last" is a keyword | 1323 # i18n: "last" is a keyword |
1325 raise error.ParseError(_("last expects a number")) | 1324 raise error.ParseError(_("last expects a number")) |
1326 ss = subset | |
1327 os = getset(repo, fullreposet(repo), l[0]) | 1325 os = getset(repo, fullreposet(repo), l[0]) |
1328 os.reverse() | 1326 os.reverse() |
1329 result = [] | 1327 result = [] |
1330 it = iter(os) | 1328 it = iter(os) |
1331 for x in xrange(lim): | 1329 for x in xrange(lim): |
1332 y = next(it, None) | 1330 y = next(it, None) |
1333 if y is None: | 1331 if y is None: |
1334 break | 1332 break |
1335 elif y in ss: | 1333 elif y in subset: |
1336 result.append(y) | 1334 result.append(y) |
1337 return baseset(result) | 1335 return baseset(result) |
1338 | 1336 |
1339 def maxrev(repo, subset, x): | 1337 def maxrev(repo, subset, x): |
1340 """``max(set)`` | 1338 """``max(set)`` |