comparison mercurial/revsetlang.py @ 35592:0fd617afebc0

revsetlang: check number of arguments passed to formatspec()
author Yuya Nishihara <yuya@tcha.org>
date Sat, 01 Apr 2017 17:25:45 +0900
parents 8f1a7adb3225
children 850cd045b1df
comparison
equal deleted inserted replaced
35591:8f1a7adb3225 35592:0fd617afebc0
632 ret.append(expr[pos:q]) 632 ret.append(expr[pos:q])
633 pos = q + 1 633 pos = q + 1
634 d = expr[pos] 634 d = expr[pos]
635 if d == '%': 635 if d == '%':
636 ret.append(d) 636 ret.append(d)
637 elif d == 'l': 637 pos += 1
638 continue
639
640 try:
641 arg = next(argiter)
642 except StopIteration:
643 raise error.ParseError(_('missing argument for revspec'))
644 if d == 'l':
638 # a list of some type 645 # a list of some type
639 pos += 1 646 pos += 1
640 d = expr[pos] 647 d = expr[pos]
641 ret.append(listexp(list(next(argiter)), d)) 648 ret.append(listexp(list(arg), d))
642 else: 649 else:
643 ret.append(argtype(d, next(argiter))) 650 ret.append(argtype(d, arg))
644 pos += 1 651 pos += 1
645 652
653 try:
654 next(argiter)
655 raise error.ParseError(_('too many revspec arguments specified'))
656 except StopIteration:
657 pass
646 return ''.join(ret) 658 return ''.join(ret)
647 659
648 def prettyformat(tree): 660 def prettyformat(tree):
649 return parser.prettyformat(tree, ('string', 'symbol')) 661 return parser.prettyformat(tree, ('string', 'symbol'))
650 662