changeset 38828:3ea6ce609747

fileset: reject 'negate' node early while transforming parsed tree That's how a 'negate' node is processed in revset.
author Yuya Nishihara <yuya@tcha.org>
date Sat, 21 Jul 2018 16:16:44 +0900
parents 48fc2a8af345
children 7e7e2b2ff284
files mercurial/fileset.py mercurial/filesetlang.py mercurial/minifileset.py
diffstat 3 files changed, 3 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/fileset.py	Sat Jul 21 16:13:30 2018 +0900
+++ b/mercurial/fileset.py	Sat Jul 21 16:16:44 2018 +0900
@@ -62,9 +62,6 @@
     ym = getmatch(mctx, y)
     return matchmod.differencematcher(xm, ym)
 
-def negatematch(mctx, x):
-    raise error.ParseError(_("can't use negate operator in this context"))
-
 def listmatch(mctx, *xs):
     raise error.ParseError(_("can't use a list in this context"),
                            hint=_('see \'hg help "filesets.x or y"\''))
@@ -436,7 +433,6 @@
     'and': andmatch,
     'or': ormatch,
     'minus': minusmatch,
-    'negate': negatematch,
     'list': listmatch,
     'not': notmatch,
     'func': func,
--- a/mercurial/filesetlang.py	Sat Jul 21 16:13:30 2018 +0900
+++ b/mercurial/filesetlang.py	Sat Jul 21 16:16:44 2018 +0900
@@ -144,7 +144,9 @@
         return (op, x[1], t)
     if op == 'group':
         return _analyze(x[1])
-    if op in {'not', 'negate'}:
+    if op == 'negate':
+        raise error.ParseError(_("can't use negate operator in this context"))
+    if op == 'not':
         t = _analyze(x[1])
         return (op, t)
     if op in {'and', 'minus'}:
--- a/mercurial/minifileset.py	Sat Jul 21 16:13:30 2018 +0900
+++ b/mercurial/minifileset.py	Sat Jul 21 16:16:44 2018 +0900
@@ -65,8 +65,6 @@
         func1 = _compile(tree[1])
         func2 = _compile(tree[2])
         return lambda n, s: func1(n, s) and not func2(n, s)
-    elif op == 'negate':
-        raise error.ParseError(_("can't use negate operator in this context"))
     elif op == 'list':
         raise error.ParseError(_("can't use a list in this context"),
                                hint=_('see \'hg help "filesets.x or y"\''))