# HG changeset patch # User Yuya Nishihara # Date 1528535509 -32400 # Node ID 80466fd85ac916363e671bfddebaa0f455bf5f43 # Parent 07b551a4df4462c6abdd6f0f91f9e56141a9263d fileset: rewrite andset() to not use mctx.narrow() New code is less efficient than the original, but it helps porting andset() to matcher composition. This will be cleaned up later. This effectively disables the fullmatchctx magic since mctx will never be demoted to the matchctx. The fullmatchctx class will be removed later. diff -r 07b551a4df44 -r 80466fd85ac9 mercurial/fileset.py --- a/mercurial/fileset.py Sun Jun 10 20:02:53 2018 +0900 +++ b/mercurial/fileset.py Sat Jun 09 18:11:49 2018 +0900 @@ -154,7 +154,9 @@ _("pattern must be a string"))) def andset(mctx, x, y): - return getset(mctx.narrow(getset(mctx, x)), y) + xl = set(getset(mctx, x)) + yl = getset(mctx, y) + return [f for f in yl if f in xl] def orset(mctx, x, y): # needs optimizing @@ -627,8 +629,7 @@ unknown = set() return (f for f in self.subset if (f in self.ctx and f not in removed) or f in unknown) - def narrow(self, files): - return matchctx(self.ctx, self.filter(files), self._status, self._badfn) + def switch(self, ctx, status=None): subset = self.filter(_buildsubset(ctx, status)) return matchctx(ctx, subset, status, self._badfn)