30 lines
652 B
Rust
30 lines
652 B
Rust
//@ compile-flags: -O -Cdebug-assertions=on
|
|
//@ build-pass
|
|
|
|
// A regression test for #151791. Computing the layout of
|
|
// `<AsOwned as ArchiveWith<'a>>::Archived` fails as the alias
|
|
// is still rigid as the where-bound in scope shadows the impl.
|
|
//
|
|
// This previously caused an incorrect error during MIR optimizations.
|
|
|
|
struct ArchivedString;
|
|
|
|
pub trait ArchiveWith<'a> {
|
|
type Archived;
|
|
}
|
|
|
|
struct AsOwned;
|
|
impl ArchiveWith<'_> for AsOwned {
|
|
type Archived = ArchivedString;
|
|
}
|
|
|
|
fn foo<'a>()
|
|
where
|
|
AsOwned: ArchiveWith<'a>,
|
|
{
|
|
let _ = unsafe { &*std::ptr::dangling::<<AsOwned as ArchiveWith<'a>>::Archived>() };
|
|
}
|
|
|
|
fn main() {
|
|
foo();
|
|
}
|