Rollup merge of #96615 - JohnTitor:test-54779, r=compiler-errors
Add a regression test for #54779 Closes #54779 r? `@jackh726`
This commit is contained in:
commit
281be096c1
51
src/test/ui/nll/issue-54779-anon-static-lifetime.rs
Normal file
51
src/test/ui/nll/issue-54779-anon-static-lifetime.rs
Normal file
@ -0,0 +1,51 @@
|
||||
// Regression test for #54779, checks if the diagnostics are confusing.
|
||||
|
||||
#![feature(nll)]
|
||||
|
||||
trait DebugWith<Cx: ?Sized> {
|
||||
fn debug_with<'me>(&'me self, cx: &'me Cx) -> DebugCxPair<'me, Self, Cx> {
|
||||
DebugCxPair { value: self, cx }
|
||||
}
|
||||
|
||||
fn fmt_with(&self, cx: &Cx, fmt: &mut std::fmt::Formatter<'_>) -> std::fmt::Result;
|
||||
}
|
||||
|
||||
struct DebugCxPair<'me, Value: ?Sized, Cx: ?Sized>
|
||||
where
|
||||
Value: DebugWith<Cx>,
|
||||
{
|
||||
value: &'me Value,
|
||||
cx: &'me Cx,
|
||||
}
|
||||
|
||||
trait DebugContext {}
|
||||
|
||||
struct Foo {
|
||||
bar: Bar,
|
||||
}
|
||||
|
||||
impl DebugWith<dyn DebugContext> for Foo {
|
||||
fn fmt_with(
|
||||
&self,
|
||||
cx: &dyn DebugContext,
|
||||
fmt: &mut std::fmt::Formatter<'_>,
|
||||
) -> std::fmt::Result {
|
||||
let Foo { bar } = self;
|
||||
bar.debug_with(cx); //~ ERROR: lifetime may not live long enough
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
struct Bar {}
|
||||
|
||||
impl DebugWith<dyn DebugContext> for Bar {
|
||||
fn fmt_with(
|
||||
&self,
|
||||
cx: &dyn DebugContext,
|
||||
fmt: &mut std::fmt::Formatter<'_>,
|
||||
) -> std::fmt::Result {
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {}
|
11
src/test/ui/nll/issue-54779-anon-static-lifetime.stderr
Normal file
11
src/test/ui/nll/issue-54779-anon-static-lifetime.stderr
Normal file
@ -0,0 +1,11 @@
|
||||
error: lifetime may not live long enough
|
||||
--> $DIR/issue-54779-anon-static-lifetime.rs:34:24
|
||||
|
|
||||
LL | cx: &dyn DebugContext,
|
||||
| - let's call the lifetime of this reference `'1`
|
||||
...
|
||||
LL | bar.debug_with(cx);
|
||||
| ^^ cast requires that `'1` must outlive `'static`
|
||||
|
||||
error: aborting due to previous error
|
||||
|
Loading…
x
Reference in New Issue
Block a user