diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2024-09-30 18:25:14 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-09-30 18:25:14 +0200 |
| commit | dc1ccc526435c55c28664576270ab558ac86e506 (patch) | |
| tree | 3decb543e0466b76e959740b416fc2ac2a9f9aa3 /compiler/rustc_codegen_llvm/src/lib.rs | |
| parent | b6b43af68d9cbe6725717e169b5b878a9b688649 (diff) | |
| parent | ed5443fcdf3b4d02a89aec929cd62aa97586096f (diff) | |
| download | rust-dc1ccc526435c55c28664576270ab558ac86e506.tar.gz rust-dc1ccc526435c55c28664576270ab558ac86e506.zip | |
Rollup merge of #131035 - dingxiangfei2009:tweak-if-let-rescope-lint, r=jieyouxu
Preserve brackets around if-lets and skip while-lets
r? `@jieyouxu`
Tracked by #124085
Fresh out of #129466, we have discovered 9 crates that the lint did not successfully migrate because the span of `if let` includes the surrounding brackets `(..)` like the following, which surprised me a bit.
```rust
if (if let .. { .. } else { .. }) {
// ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// the span somehow includes the surrounding brackets
}
```
There is one crate that failed the migration because some suggestion spans cross the macro expansion boundaries. Surely there is no way to patch them with `match` rewrite. To handle this case, we will instead require all spans to be tested for admissibility as suggestion spans.
Besides, there are 4 false negative cases discovered with desugared-`while let`. We don't need to lint them, because the `else` branch surely contains exactly one statement because the drop order is not changed whatsoever in this case.
```rust
while let Some(value) = droppy().get() {
..
}
// is desugared into
loop {
if let Some(value) = droppy().get() {
..
} else {
break;
// here can be nothing observable in this block
}
}
```
I believe this is the one and only false positive that I have found. I think we have finally nailed all the corner cases this time.
Diffstat (limited to 'compiler/rustc_codegen_llvm/src/lib.rs')
0 files changed, 0 insertions, 0 deletions
