comparison mercurial/revset.py @ 32799:b36ec65ea583

revset: reject negative number to select first/last n members Negative 'lim' doesn't make sense here, and it makes things complicated when using list[:lim].
author Yuya Nishihara <yuya@tcha.org>
date Sat, 10 Jun 2017 18:35:11 +0900
parents 573b792872c1
children 3e6f9bff7e3f
comparison
equal deleted inserted replaced
32798:573b792872c1 32799:b36ec65ea583
1160 if 'set' not in args: 1160 if 'set' not in args:
1161 # i18n: "limit" is a keyword 1161 # i18n: "limit" is a keyword
1162 raise error.ParseError(_("limit requires one to three arguments")) 1162 raise error.ParseError(_("limit requires one to three arguments"))
1163 # i18n: "limit" is a keyword 1163 # i18n: "limit" is a keyword
1164 lim = getinteger(args.get('n'), _("limit expects a number"), default=1) 1164 lim = getinteger(args.get('n'), _("limit expects a number"), default=1)
1165 if lim < 0:
1166 raise error.ParseError(_("negative number to select"))
1165 # i18n: "limit" is a keyword 1167 # i18n: "limit" is a keyword
1166 ofs = getinteger(args.get('offset'), _("limit expects a number"), default=0) 1168 ofs = getinteger(args.get('offset'), _("limit expects a number"), default=0)
1167 if ofs < 0: 1169 if ofs < 0:
1168 raise error.ParseError(_("negative offset")) 1170 raise error.ParseError(_("negative offset"))
1169 os = getset(repo, fullreposet(repo), args['set']) 1171 os = getset(repo, fullreposet(repo), args['set'])
1190 l = getargs(x, 1, 2, _("last requires one or two arguments")) 1192 l = getargs(x, 1, 2, _("last requires one or two arguments"))
1191 lim = 1 1193 lim = 1
1192 if len(l) == 2: 1194 if len(l) == 2:
1193 # i18n: "last" is a keyword 1195 # i18n: "last" is a keyword
1194 lim = getinteger(l[1], _("last expects a number")) 1196 lim = getinteger(l[1], _("last expects a number"))
1197 if lim < 0:
1198 raise error.ParseError(_("negative number to select"))
1195 os = getset(repo, fullreposet(repo), l[0]) 1199 os = getset(repo, fullreposet(repo), l[0])
1196 os.reverse() 1200 os.reverse()
1197 result = [] 1201 result = []
1198 it = iter(os) 1202 it = iter(os)
1199 for x in xrange(lim): 1203 for x in xrange(lim):