#5270: Change int/uint range_rev to use (hi,lo] instead of [hi,lo).#7684
Closed
pnkfelix wants to merge 3 commits intorust-lang:masterfrom
Closed
#5270: Change int/uint range_rev to use (hi,lo] instead of [hi,lo).#7684pnkfelix wants to merge 3 commits intorust-lang:masterfrom
pnkfelix wants to merge 3 commits intorust-lang:masterfrom
Conversation
… semantics. Also added unit tests of range code to test refactoring. The num-range-rev.rs test will need to be updated when the range_rev semantics change.
Contributor
Author
|
hmm, seems like the |
Contributor
Author
|
From what I can tell, the make check failures are actually reproducible on master, without my refactoring. It is just that my refactoring makes them more reliably reproducible. I spent some time tracking this down and the best I have come up with is Issue #7797, but I am not 100% certain that that is the same bug. |
bors
added a commit
that referenced
this pull request
Jul 16, 2013
…ss-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.)
flip1995
pushed a commit
to flip1995/rust
that referenced
this pull request
Oct 7, 2021
…1995 fix for issue rust-lang#7683 Fixes rust-lang#7683. For Repeat [x; y] (x is the type and y is the times to repeat) . When y > 32, the compiler will report an error: https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=7148558162685e91056e0550797ea74c Because https://github.com/rust-lang/rust/blob/6cdd42f9f8dd4e5e5ba0aa816bc4c99ab8b102f9/library/std/src/primitive_docs.rs#L538 /// Arrays of sizes from 0 to 32 (inclusive) implement [`Default`] trait /// if the element type allows it. As a stopgap, trait implementations are /// statically generated up to size 32. So here to detect this situation. changelog: [`derivable_impls`]: No longer lints when arrays bigger than 32 elements are involved
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changes int/uint range_rev to iterate over range
(hi,lo]instead of[hi,lo).Fix #5270.
Also:
range_revto account for the new semantics. (Note that pretty much all of the updates there were strict improvements to the code in question; yay!)range_step_inclusive, which does the range[hi,lo], (at least whenhi-lois a multiple of thestepparameter).|step| == 1removing 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.)