// Test that we don't ICE when computing the drop types for

//@ ignore-compare-mode-polonius (explicit revisions)
//@ revisions: nll polonius
//@ [nll] compile-flags: -Zpolonius=off
//@ [polonius] compile-flags: -Zpolonius=next

trait Decode<'a> {
    type Decoder;
}

trait NonImplementedTrait {
    type Assoc;
}
struct NonImplementedStruct;

pub struct ADecoder<'a> {
    b: <B as Decode<'a>>::Decoder,
}
fn make_a_decoder<'a>() -> ADecoder<'a> {
    //~^ ERROR the trait bound
    //[nll]~| ERROR the trait bound
    panic!()
}

struct B;
impl<'a> Decode<'a> for B {
    type Decoder = BDecoder;
    //~^ ERROR the trait bound
}
pub struct BDecoder {
    non_implemented: <NonImplementedStruct as NonImplementedTrait>::Assoc,
    //~^ ERROR the trait bound
}

fn main() {}
