comparison mercurial/revset.py @ 25251:235f6490550c

revset: move validation of incomplete parsing to parse() function revset.parse() should be responsible for all parsing errors. Perhaps it wasn't because 'revset.parse' was not a real function when the validation code was added at ffcb7e4d719f.
author Yuya Nishihara <yuya@tcha.org>
date Sun, 26 Apr 2015 19:42:47 +0900
parents 57fae767c52b
children 3f1a9b44b8c2
comparison
equal deleted inserted replaced
25250:f9a29dc964a3 25251:235f6490550c
2507 else: 2507 else:
2508 return tuple(foldconcat(t) for t in tree) 2508 return tuple(foldconcat(t) for t in tree)
2509 2509
2510 def parse(spec, lookup=None): 2510 def parse(spec, lookup=None):
2511 p = parser.parser(tokenize, elements) 2511 p = parser.parser(tokenize, elements)
2512 return p.parse(spec, lookup=lookup) 2512 tree, pos = p.parse(spec, lookup=lookup)
2513 if pos != len(spec):
2514 raise error.ParseError(_("invalid token"), pos)
2515 return tree
2513 2516
2514 def posttreebuilthook(tree, repo): 2517 def posttreebuilthook(tree, repo):
2515 # hook for extensions to execute code on the optimized tree 2518 # hook for extensions to execute code on the optimized tree
2516 pass 2519 pass
2517 2520
2519 if not spec: 2522 if not spec:
2520 raise error.ParseError(_("empty query")) 2523 raise error.ParseError(_("empty query"))
2521 lookup = None 2524 lookup = None
2522 if repo: 2525 if repo:
2523 lookup = repo.__contains__ 2526 lookup = repo.__contains__
2524 tree, pos = parse(spec, lookup) 2527 tree = parse(spec, lookup)
2525 if (pos != len(spec)):
2526 raise error.ParseError(_("invalid token"), pos)
2527 if ui: 2528 if ui:
2528 tree = findaliases(ui, tree, showwarning=ui.warn) 2529 tree = findaliases(ui, tree, showwarning=ui.warn)
2529 tree = foldconcat(tree) 2530 tree = foldconcat(tree)
2530 weight, tree = optimize(tree, True) 2531 weight, tree = optimize(tree, True)
2531 posttreebuilthook(tree, repo) 2532 posttreebuilthook(tree, repo)