diff options
| author | bors <bors@rust-lang.org> | 2025-06-05 19:49:30 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2025-06-05 19:49:30 +0000 |
| commit | 2f80ead27cd9588a9d11bfe8cded738a6b6107ba (patch) | |
| tree | bd013328b4bdf3b0bdb239930dcde48ae62230e9 /compiler/rustc_codegen_llvm/src | |
| parent | 9b8bf535805333508a90d539009927e848bd0a9b (diff) | |
| parent | 8b59e34a8063d0808ac5aa2e8d12c7eba16f65b9 (diff) | |
| download | rust-2f80ead27cd9588a9d11bfe8cded738a6b6107ba.tar.gz rust-2f80ead27cd9588a9d11bfe8cded738a6b6107ba.zip | |
Auto merge of #138677 - shepmaster:consistent-elided-lifetime-syntax, r=traviscross,jieyouxu
Add a new `mismatched-lifetime-syntaxes` lint
The lang-team [discussed this](https://hackmd.io/nf4ZUYd7Rp6rq-1svJZSaQ) and I attempted to [summarize](https://github.com/rust-lang/rust/pull/120808#issuecomment-2701863833) their decision. The summary-of-the-summary is:
- Using two different kinds of syntax for elided lifetimes is confusing. In rare cases, it may even [lead to unsound code](https://github.com/rust-lang/rust/issues/48686)! Some examples:
```rust
// Lint will warn about these
fn(v: ContainsLifetime) -> ContainsLifetime<'_>;
fn(&'static u8) -> &u8;
```
- Matching up references with no lifetime syntax, references with anonymous lifetime syntax, and paths with anonymous lifetime syntax is an exception to the simplest possible rule:
```rust
// Lint will not warn about these
fn(&u8) -> &'_ u8;
fn(&'_ u8) -> &u8;
fn(&u8) -> ContainsLifetime<'_>;
```
- Having a lint for consistent syntax of elided lifetimes will make the [future goal](https://github.com/rust-lang/rust/issues/91639) of warning-by-default for paths participating in elision much simpler.
---
This new lint attempts to accomplish the goal of enforcing consistent syntax. In the process, it supersedes and replaces the existing `elided-named-lifetimes` lint, which means it starts out life as warn-by-default.
Diffstat (limited to 'compiler/rustc_codegen_llvm/src')
0 files changed, 0 insertions, 0 deletions
