Closed
Description
Carrying over a comment from #54088:
I feel like the temporary rules are a common source of confusion. I think we should consider using a distinct error code for them, so that --explain can have some extra text to introduce the rules. Maybe good for a follow-up to this PR though.
As a specific example, consider this test:
rust/src/test/ui/nll/borrowed-temporary-error.rs
Lines 18 to 22 in 7ee7207
we give this error:
rust/src/test/ui/nll/borrowed-temporary-error.stderr
Lines 1 to 10 in 7ee7207
but I think we should say something more like this:
error[E9999]: temporary value borrowed for too long
--> $DIR/borrowed-temporary-error.rs:20:10
|
LL | &(v,)
| ^^^^ creates a temporary which is freed while still in use
LL | //~^ ERROR borrowed value does not live long enough [E0597]
LL | });
| - temporary value is freed at the end of this statement
LL | println!("{:?}", x);
| - but the borrow is later used here
Moreover, the extended error for E9999
ought to explain the temporary rules.