Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/revset.py @ 25648:9b9877d2b229
revset: rework 'filteredset.last'
'isascending' and 'isdescending' are methods, not attributes. This led 'last()'
to misbehave on some non-ascending filtered sets.
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Mon, 22 Jun 2015 13:48:01 -0700 |
parents | 46a96dd4d976 |
children | af329a84310c |
comparison
equal
deleted
inserted
replaced
25647:46a96dd4d976 | 25648:9b9877d2b229 |
---|---|
3026 return x | 3026 return x |
3027 return None | 3027 return None |
3028 | 3028 |
3029 def last(self): | 3029 def last(self): |
3030 it = None | 3030 it = None |
3031 if self._subset.isascending: | 3031 if self.isascending(): |
3032 it = self.fastdesc | 3032 it = self.fastdesc |
3033 elif self._subset.isdescending: | 3033 elif self.isdescending(): |
3034 it = self.fastdesc | 3034 it = self.fastasc |
3035 if it is None: | 3035 if it is not None: |
3036 # slowly consume everything. This needs improvement | 3036 for x in it(): |
3037 it = lambda: reversed(list(self)) | 3037 return x |
3038 for x in it(): | 3038 return None #empty case |
3039 else: | |
3040 x = None | |
3041 for x in self: | |
3042 pass | |
3039 return x | 3043 return x |
3040 return None | |
3041 | 3044 |
3042 def __repr__(self): | 3045 def __repr__(self): |
3043 return '<%s %r>' % (type(self).__name__, self._subset) | 3046 return '<%s %r>' % (type(self).__name__, self._subset) |
3044 | 3047 |
3045 # this function will be removed, or merged to addset or orset, when | 3048 # this function will be removed, or merged to addset or orset, when |