# HG changeset patch # User Yuya Nishihara # Date 2018-01-13 06:13:29 # Node ID a62b08f6626bd0f838b2c77a2f1a48068852be1f # Parent 735f47b41521b272c623aec952bcff52538d5466 fileset: do not crash by unary negate operation Backported from minifileset.py. diff --git a/mercurial/fileset.py b/mercurial/fileset.py --- a/mercurial/fileset.py +++ b/mercurial/fileset.py @@ -136,6 +136,9 @@ def minusset(mctx, x, y): yl = set(getset(mctx, y)) return [f for f in xl if f not in yl] +def negateset(mctx, x): + raise error.ParseError(_("can't use negate operator in this context")) + def listset(mctx, a, b): raise error.ParseError(_("can't use a list in this context"), hint=_('see hg help "filesets.x or y"')) @@ -523,6 +526,7 @@ methods = { 'and': andset, 'or': orset, 'minus': minusset, + 'negate': negateset, 'list': listset, 'group': getset, 'not': notset, diff --git a/tests/test-fileset.t b/tests/test-fileset.t --- a/tests/test-fileset.t +++ b/tests/test-fileset.t @@ -68,6 +68,17 @@ Test invalid syntax None) hg: parse error: not a symbol [255] + $ fileset -v -- '-x' + (negate + (symbol 'x')) + hg: parse error: can't use negate operator in this context + [255] + $ fileset -v -- '-()' + (negate + (group + None)) + hg: parse error: can't use negate operator in this context + [255] Test files status