Skip to content

[NLL] "'static requirement introduced here" note missing #97256

Open
@jackh726

Description

@jackh726

In the various revisions of src/test/ui/associated-types/cache/project-fn-ret-invariant.rs, we go from

error[E0759]: `x` has lifetime `'a` but it needs to satisfy a `'static` lifetime requirement
  --> $DIR/project-fn-ret-invariant.rs:55:9
   |
LL | fn baz<'a, 'b>(x: Type<'a>) -> Type<'static> {
   |                   -------- this data with lifetime `'a`...
...
LL |     bar(foo, x)
   |         ^^^  - ...is used and required to live as long as `'static` here
   |
note: `'static` lifetime requirement introduced by the return type
  --> $DIR/project-fn-ret-invariant.rs:51:37
   |
LL | fn baz<'a, 'b>(x: Type<'a>) -> Type<'static> {
   |                                     ^^^^^^^ `'static` requirement introduced here
...
LL |     bar(foo, x)
   |     ----------- because of this returned expression

to

error: lifetime may not live long enough
  --> $DIR/project-fn-ret-invariant-nll.rs:56:5
   |
LL | fn baz<'a, 'b>(x: Type<'a>) -> Type<'static> {
   |        -- lifetime `'a` defined here
...
LL |     bar(foo, x)
   |     ^^^^^^^^^^^ returning this value requires that `'a` must outlive `'static`
   |
   = note: requirement occurs because of the type `Type<'_>`, which makes the generic argument `'_` invariant
   = note: the struct `Type<'a>` is invariant over the parameter `'a`
   = help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance

We lose the note, particularly the bit pointing to the return type (it's sort of in the note, but not exactly)

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-NLLArea: Non-lexical lifetimes (NLL)A-diagnosticsArea: Messages for errors, warnings, and lintsNLL-diagnosticsWorking towards the "diagnostic parity" goalT-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