diff options
| author | bors <bors@rust-lang.org> | 2023-06-21 23:57:02 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2023-06-21 23:57:02 +0000 |
| commit | 6ec23880f2a20b50156a45e91469570affe56251 (patch) | |
| tree | e5607838bb9b9e2c443b41d232fb42cab9beafe0 /compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp | |
| parent | 9fa40894103e32364fdbade539d4ecb3d40f3d7f (diff) | |
| parent | bdb2a1710774e0d77058c81fa3c7182f27565ddd (diff) | |
| download | rust-6ec23880f2a20b50156a45e91469570affe56251.tar.gz rust-6ec23880f2a20b50156a45e91469570affe56251.zip | |
Auto merge of #10979 - y21:issue9909, r=giraffate
[`get_unwrap`]: include a borrow in the suggestion if argument is not an integer literal
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:
```rs
let slice = &[1, 2];
let _r: &i32 = slice.get({ 1 }).unwrap();
// previous suggestion: slice[{ 1 }]
// the suggestion should be: &slice[{ 1 }]
```
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` to `i32`.
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 compiler
changelog: [`get_unwrap`]: include a borrow in the suggestion if argument is not an integer literal
Diffstat (limited to 'compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp')
0 files changed, 0 insertions, 0 deletions
