[PATCH] revset: rework 'filteredset.last'
Augie Fackler
raf at durin42.com
Tue Jun 23 09:15:58 CDT 2015
On Mon, Jun 22, 2015 at 02:57:30PM -0700, Pierre-Yves David wrote:
> # HG changeset patch
> # User Pierre-Yves David <pierre-yves.david at fb.com>
> # Date 1435006081 25200
> # Mon Jun 22 13:48:01 2015 -0700
> # Node ID 5436ea241ec1c12294d7868de6c679d10d333060
> # Parent 7fdd1782fc4ee9da87d8af13e806dc9055db2c38
> revset: rework 'filteredset.last'
queued, thanks
>
> As 'isascending' and 'isdescending' are method, not attribute. This led 'last()'
> to misbehave on some non-ascending filtered set.
>
> diff --git a/mercurial/revset.py b/mercurial/revset.py
> --- a/mercurial/revset.py
> +++ b/mercurial/revset.py
> @@ -3022,20 +3022,22 @@ class filteredset(abstractsmartset):
> return x
> return None
>
> def last(self):
> it = None
> - if self._subset.isascending:
> + if self.isascending():
> it = self.fastdesc
> - elif self._subset.isdescending:
> - it = self.fastdesc
> - if it is None:
> - # slowly consume everything. This needs improvement
> - it = lambda: reversed(list(self))
> - for x in it():
> + elif self.isdescending():
> + it = self.fastasc
> + if it is not None:
> + for x in it():
> + return x
> + else:
> + for x in self:
> + pass
> return x
> - return None
> + return None #empty case
>
> def __repr__(self):
> return '<%s %r>' % (type(self).__name__, self._subset)
>
> # this function will be removed, or merged to addset or orset, when
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> https://selenic.com/mailman/listinfo/mercurial-devel
More information about the Mercurial-devel
mailing list