rust/tests/ui/issues/issue-30438-c.rs
Zhi Qi ce2ae62d68 Convert a hard-warning about named static lifetimes into lint "unused_lifetimes"
Define the `named_static_lifetimes` lint

This lint will replace the existing hard-warning.

Replace the named static lifetime hard-warning with the new lint

Update the UI tests for the `named_static_lifetimes` lint

Remove the direct dependency on `rustc_lint_defs`

fix build

Signed-off-by: Zhi Qi <qizhi@pingcap.com>

use "UNUSED_LIFETIMES" instead

Signed-off-by: Zhi Qi <qizhi@pingcap.com>

update 1 test and fix typo

Signed-off-by: Zhi Qi <qizhi@pingcap.com>

update tests

Signed-off-by: Zhi Qi <qizhi@pingcap.com>

fix tests: add extra blank line

Signed-off-by: Zhi Qi <qizhi@pingcap.com>
2023-02-22 09:44:26 +08:00

21 lines
593 B
Rust

// Simplified regression test for #30438, inspired by arielb1.
trait Trait { type Out; }
struct Test<'a> { s: &'a str }
fn silly<'y, 'z>(_s: &'y Test<'z>) -> &'y <Test<'z> as Trait>::Out where 'z: 'static {
let x = Test { s: "this cannot last" };
&x
//~^ ERROR: cannot return reference to local variable `x`
}
impl<'b> Trait for Test<'b> { type Out = Test<'b>; }
fn main() {
let orig = Test { s: "Hello World" };
let r = silly(&orig);
println!("{}", orig.s); // OK since `orig` is valid
println!("{}", r.s); // Segfault (method does not return a sane value)
}