]> git.lizzy.rs Git - rust.git/commit
auto merge of #7684 : pnkfelix/rust/fsk-invert-range-rev-halfclosedness-issue5270...
authorbors <bors@rust-lang.org>
Tue, 16 Jul 2013 21:37:34 +0000 (14:37 -0700)
committerbors <bors@rust-lang.org>
Tue, 16 Jul 2013 21:37:34 +0000 (14:37 -0700)
commit53e934c2ab773eaf61da331893d176aa3e62230b
treee10d9c36f5f1eed33171e2a75381769076fa4857
parent9db190305f7562f15b5282fed508aef81cfc9689
parent3896d46c0a6b99ef166bdc29220ef6c85ad8bc8d
auto merge of #7684 : pnkfelix/rust/fsk-invert-range-rev-halfclosedness-issue5270-2ndpr, r=cmr

Changes int/uint range_rev to iterate over range `(hi,lo]` instead of `[hi,lo)`.

Fix #5270.

Also:
* Adds unit tests for int/uint range functions
* Updates the uses of `range_rev` to account for the new semantics.  (Note that pretty much all of the updates there were strict improvements to the code in question; yay!)
* Exposes new function, `range_step_inclusive`, which does the range `[hi,lo]`, (at least when `hi-lo` is a multiple of the `step` parameter).
* Special-cases when `|step| == 1` removing unnecessary bounds-check.  (I did not check whether LLVM was already performing this optimization; I figure it would be a net win to not leave that analysis to the compiler.  If reviewer objects, I can easily remove that from the refactored code.)

(This pull request is a rebased version of PR #7524, which went stale due to recent unrelated changes to num libraries.)
src/libextra/smallintmap.rs
src/libstd/trie.rs