##// END OF EJS Templates
revset: don't cache abstractsmartset min/max invocations infinitely...
Mads Kiilerich -
r30227:5ee944b9 stable
parent child Browse files
Show More
@@ -2924,23 +2924,29 b' class abstractsmartset(object):'
2924 """True if the set will iterate in topographical order"""
2924 """True if the set will iterate in topographical order"""
2925 raise NotImplementedError()
2925 raise NotImplementedError()
2926
2926
2927 @util.cachefunc
2928 def min(self):
2927 def min(self):
2929 """return the minimum element in the set"""
2928 """return the minimum element in the set"""
2930 if self.fastasc is not None:
2929 if self.fastasc is None:
2931 for r in self.fastasc():
2930 v = min(self)
2932 return r
2931 else:
2933 raise ValueError('arg is an empty sequence')
2932 for v in self.fastasc():
2934 return min(self)
2933 break
2935
2934 else:
2936 @util.cachefunc
2935 raise ValueError('arg is an empty sequence')
2936 self.min = lambda: v
2937 return v
2938
2937 def max(self):
2939 def max(self):
2938 """return the maximum element in the set"""
2940 """return the maximum element in the set"""
2939 if self.fastdesc is not None:
2941 if self.fastdesc is None:
2940 for r in self.fastdesc():
2942 return max(self)
2941 return r
2943 else:
2942 raise ValueError('arg is an empty sequence')
2944 for v in self.fastdesc():
2943 return max(self)
2945 break
2946 else:
2947 raise ValueError('arg is an empty sequence')
2948 self.max = lambda: v
2949 return v
2944
2950
2945 def first(self):
2951 def first(self):
2946 """return the first element in the set (user iteration perspective)
2952 """return the first element in the set (user iteration perspective)
General Comments 0
You need to be logged in to leave comments. Login now