# HG changeset patch # User Yuya Nishihara # Date 2015-04-26 10:50:42 # Node ID ac381dd7a21f96d682d1d6a969f6d90c18902dd6 # Parent 235f6490550ce67e1c69a1cb9d51a9e49b292d6f fileset: move validation of incomplete parsing to parse() function fileset.parse() should be responsible for all parsing errors as well. diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -2164,7 +2164,7 @@ def debugfileset(ui, repo, expr, **opts) '''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): diff --git a/mercurial/fileset.py b/mercurial/fileset.py --- a/mercurial/fileset.py +++ b/mercurial/fileset.py @@ -81,7 +81,10 @@ def tokenize(program): 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 _intree(funcs, tree): ] 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',