[get_unwrap
]: include a borrow in the suggestion if argument is not an integer literal
#10979
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.
Fixes #9909
I have to say, I don't really understand what the previous logic was trying to do, but this fixes the linked bug.
It was checking if the argument passed to
.get()
can be parsed as a usize (i.e. if it's an integer literal, probably?), and if not, it wouldn't include a borrow? I don't know how we came to that conclusion, but that logic doesn't work:Here the argument passed to it isn't an integer literal, but it should still include a borrow, because it would otherwise change the type from
&i32
toi32
.The exception is that if the parent of the
get().unwrap()
expr is a dereference or a method call or the like, we don't need an explicit borrow because it's automatically inserted by the compilerchangelog: [
get_unwrap
]: include a borrow in the suggestion if argument is not an integer literal