blob: 9d87ff0bb938a5b25b9e34d56babd95d2d42715f [file]
#![feature(reborrow)]
use std::marker::{CoerceShared, Reborrow};
trait Trait {
type Assoc;
}
impl Trait for i32 {
type Assoc = u32;
}
type AliasMutField<'a> = &'a mut <i32 as Trait>::Assoc;
type AliasRefField<'a> = &'a u32;
struct AliasMut<'a> {
value: AliasMutField<'a>,
}
impl Reborrow for AliasMut<'_> {}
#[derive(Copy, Clone)]
struct AliasRef<'a> {
value: AliasRefField<'a>,
}
impl<'a> CoerceShared<AliasRef<'a>> for AliasMut<'a> {}
//~^ ERROR
struct InnerLifetimeMut<'a> {
value: &'a mut &'static (),
}
impl Reborrow for InnerLifetimeMut<'_> {}
#[derive(Copy, Clone)]
struct InnerLifetimeRef<'a> {
value: &'a &'a (),
}
impl<'a> CoerceShared<InnerLifetimeRef<'a>> for InnerLifetimeMut<'a> {}
fn main() {}