On Thu, Apr 7, 2016 at 12:20 AM, Vladimir.S via swift-evolution <swift-evolution@swift.org> wrote: > But. .successor() .predecessor() methods for Int values do not follow these > rules for overflow situations. I.e. : > let i : Int8 = Int8.max > let k : Int8 = i.successor() > - is OK for current Swift compiler. We have i==127 and k==-128, no run-time > error.
This was done for performance reasons. Array's indices are Ints, and adding an overflow check here was causing significant performance issues when iterating over arrays. These methods were not designed to be used in contexts other than indices. When ints are used as indices, doing an overflow check in successor() does not prevent any mistakes, since Array's bounds are always tighter than Int.min...Int.max. These methods are going away in the new indexing model. https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20160229/011552.html Dmitri -- main(i,j){for(i=2;;i++){for(j=2;j<i;j++){if(!(i%j)){j=0;break;}}if (j){printf("%d\n",i);}}} /*Dmitri Gribenko <griboz...@gmail.com>*/ _______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution