fileset: move validation of incomplete parsing to parse() function
fileset.parse() should be responsible for all parsing errors as well.
--- a/mercurial/commands.py Sun Apr 26 19:42:47 2015 +0900
+++ b/mercurial/commands.py Sun Apr 26 19:50:42 2015 +0900
@@ -2164,7 +2164,7 @@
'''parse and apply a fileset specification'''
ctx = scmutil.revsingle(repo, opts.get('rev'), None)
if ui.verbose:
- tree = fileset.parse(expr)[0]
+ tree = fileset.parse(expr)
ui.note(tree, "\n")
for f in ctx.getfileset(expr):
--- a/mercurial/fileset.py Sun Apr 26 19:42:47 2015 +0900
+++ b/mercurial/fileset.py Sun Apr 26 19:50:42 2015 +0900
@@ -81,7 +81,10 @@
def parse(expr):
p = parser.parser(tokenize, elements)
- return p.parse(expr)
+ tree, pos = p.parse(expr)
+ if pos != len(expr):
+ raise error.ParseError(_("invalid token"), pos)
+ return tree
def getstring(x, err):
if x and (x[0] == 'string' or x[0] == 'symbol'):
@@ -491,9 +494,7 @@
]
def getfileset(ctx, expr):
- tree, pos = parse(expr)
- if (pos != len(expr)):
- raise error.ParseError(_("invalid token"), pos)
+ tree = parse(expr)
# do we need status info?
if (_intree(['modified', 'added', 'removed', 'deleted',