Skip to content

Wrong diagnostic when returning _ with a lifetime #125488

Closed
@oriongonza

Description

@oriongonza

The code

struct S<'a>(&'a ());
fn f(s: S<'_>) -> _ {
    s
}

Emits this diagnostic, which is wrong in this case.

error[E0121]: the placeholder `_` is not allowed within types on item signatures for return types
 --> src/lib.rs:2:19
  |
2 | fn f(s: S<'_>) -> _ {
  |                   ^
  |                   |
  |                   not allowed in type signatures
  |                   help: replace with the correct return type: `S<'static>`

For more information about this error, try `rustc --explain E0121`.

It should say help: replace with the correct return type: S<'_>
cc: rust-lang/rust-analyzer#16676

Metadata

Metadata

Assignees

Labels

A-diagnosticsArea: Messages for errors, warnings, and lintsA-lifetimesArea: Lifetimes / regionsD-incorrectDiagnostics: A diagnostic that is giving misleading or incorrect information.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions