mirror of https://github.com/rust-lang/rust
121 lines
2.8 KiB
Rust
121 lines
2.8 KiB
Rust
use std::ops::Deref;
|
|
|
|
// Cyclic deref with the parent (which is not the top parent).
|
|
pub struct A;
|
|
pub struct B;
|
|
pub struct C;
|
|
|
|
impl C {
|
|
pub fn c(&self) {}
|
|
}
|
|
|
|
//@ has recursive_deref/struct.A.html '//h3[@class="code-header"]' 'impl Deref for A'
|
|
//@ has '-' '//*[@class="impl-items"]//*[@id="method.c"]' 'pub fn c(&self)'
|
|
impl Deref for A {
|
|
type Target = B;
|
|
|
|
fn deref(&self) -> &Self::Target {
|
|
panic!()
|
|
}
|
|
}
|
|
|
|
//@ has recursive_deref/struct.B.html '//h3[@class="code-header"]' 'impl Deref for B'
|
|
//@ has '-' '//*[@class="impl-items"]//*[@id="method.c"]' 'pub fn c(&self)'
|
|
impl Deref for B {
|
|
type Target = C;
|
|
|
|
fn deref(&self) -> &Self::Target {
|
|
panic!()
|
|
}
|
|
}
|
|
|
|
//@ has recursive_deref/struct.C.html '//h3[@class="code-header"]' 'impl Deref for C'
|
|
impl Deref for C {
|
|
type Target = B;
|
|
|
|
fn deref(&self) -> &Self::Target {
|
|
panic!()
|
|
}
|
|
}
|
|
|
|
// Cyclic deref with the grand-parent (which is not the top parent).
|
|
pub struct D;
|
|
pub struct E;
|
|
pub struct F;
|
|
pub struct G;
|
|
|
|
impl G {
|
|
// There is no "self" parameter so it shouldn't be listed!
|
|
pub fn g() {}
|
|
}
|
|
|
|
//@ has recursive_deref/struct.D.html '//h3[@class="code-header"]' 'impl Deref for D'
|
|
// We also check that `G::g` method isn't rendered because there is no `self` argument.
|
|
//@ !has '-' '//*[@id="deref-methods-G"]' ''
|
|
impl Deref for D {
|
|
type Target = E;
|
|
|
|
fn deref(&self) -> &Self::Target {
|
|
panic!()
|
|
}
|
|
}
|
|
|
|
//@ has recursive_deref/struct.E.html '//h3[@class="code-header"]' 'impl Deref for E'
|
|
// We also check that `G::g` method isn't rendered because there is no `self` argument.
|
|
//@ !has '-' '//*[@id="deref-methods-G"]' ''
|
|
impl Deref for E {
|
|
type Target = F;
|
|
|
|
fn deref(&self) -> &Self::Target {
|
|
panic!()
|
|
}
|
|
}
|
|
|
|
//@ has recursive_deref/struct.F.html '//h3[@class="code-header"]' 'impl Deref for F'
|
|
// We also check that `G::g` method isn't rendered because there is no `self` argument.
|
|
//@ !has '-' '//*[@id="deref-methods-G"]' ''
|
|
impl Deref for F {
|
|
type Target = G;
|
|
|
|
fn deref(&self) -> &Self::Target {
|
|
panic!()
|
|
}
|
|
}
|
|
|
|
//@ has recursive_deref/struct.G.html '//h3[@class="code-header"]' 'impl Deref for G'
|
|
impl Deref for G {
|
|
type Target = E;
|
|
|
|
fn deref(&self) -> &Self::Target {
|
|
panic!()
|
|
}
|
|
}
|
|
|
|
// Cyclic deref with top parent.
|
|
pub struct H;
|
|
pub struct I;
|
|
|
|
impl I {
|
|
// There is no "self" parameter so it shouldn't be listed!
|
|
pub fn i() {}
|
|
}
|
|
|
|
//@ has recursive_deref/struct.H.html '//h3[@class="code-header"]' 'impl Deref for H'
|
|
//@ !has '-' '//*[@id="deref-methods-I"]' ''
|
|
impl Deref for H {
|
|
type Target = I;
|
|
|
|
fn deref(&self) -> &Self::Target {
|
|
panic!()
|
|
}
|
|
}
|
|
|
|
//@ has recursive_deref/struct.I.html '//h3[@class="code-header"]' 'impl Deref for I'
|
|
impl Deref for I {
|
|
type Target = H;
|
|
|
|
fn deref(&self) -> &Self::Target {
|
|
panic!()
|
|
}
|
|
}
|