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