diff options
| author | bors <bors@rust-lang.org> | 2022-06-03 07:27:09 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-06-03 07:27:09 +0000 |
| commit | 3a90bedb332d7d7eabfc1e98a1e3d96898579e1d (patch) | |
| tree | d18addb5c4a51f1ba4dafe54290099ece23766b2 /compiler/rustc_mir_transform/src | |
| parent | f5507aa881921f1cef42851ae976317ddb0c09ae (diff) | |
| parent | 2aa9c703ce9ce9c69d466481b2fda3268db64f3e (diff) | |
| download | rust-3a90bedb332d7d7eabfc1e98a1e3d96898579e1d.tar.gz rust-3a90bedb332d7d7eabfc1e98a1e3d96898579e1d.zip | |
Auto merge of #96296 - cjgillot:remove-label-lt-shadow, r=petrochenkov
Remove label/lifetime shadowing warnings
This PR removes some pre-1.0 shadowing warnings for labels and lifetimes.
The current behaviour of the compiler is to warn
* labels that shadow unrelated labels in the same function --> removed
```rust
'a: loop {}
'a: loop {} // STOP WARNING
```
* labels that shadow enclosing labels --> kept, but only if shadowing is hygienic
```rust
'a: loop {
'a: loop {} // KEEP WARNING
}
```
* labels that shadow lifetime --> removed
```rust
fn foo<'a>() {
'a: loop {} // STOP WARNING
}
```
* lifetimes that shadow labels --> removed
```rust
'a: loop {
let b = Box::new(|x: &i8| *x) as Box<dyn for <'a> Fn(&'a i8) -> i8>; // STOP WARNING
}
```
* lifetimes that shadow lifetimes --> kept
```rust
fn foo<'a>() {
let b = Box::new(|x: &i8| *x) as Box<dyn for <'a> Fn(&'a i8) -> i8>; // KEEP WARNING
}
```
Closes https://github.com/rust-lang/rust/issues/31745.
-----
From `@petrochenkov` in https://github.com/rust-lang/rust/pull/95781#issuecomment-1105199014
> I think we should remove these silly checks entirely.
> They were introduced long time ago in case some new language features appear and require this space.
> Now we have another mechanism for such language changes - editions, and if "lifetimes in expressions" or something like that needs to be introduced it could be introduced as an edition change.
> However, there was no plans to introduce anything like for years, so it's unlikely that even the edition mechanism will be necessary.
r? rust-lang/lang
Diffstat (limited to 'compiler/rustc_mir_transform/src')
0 files changed, 0 insertions, 0 deletions
