//@ edition:2018
//@ aux-build: extern_crate.rs
#![crate_name = "foo"]

extern crate extern_crate;
//@ has foo/fn.extern_fn.html '//pre[@class="rust item-decl"]' \
//      'pub fn extern_fn<const N: usize>() -> impl Iterator<Item = [u8; N]>'
pub use extern_crate::extern_fn;
//@ has foo/struct.ExternTy.html '//pre[@class="rust item-decl"]' \
//      'pub struct ExternTy<const N: usize> {'
pub use extern_crate::ExternTy;
//@ has foo/type.TyAlias.html '//pre[@class="rust item-decl"]' \
//      'type TyAlias<const N: usize> = ExternTy<N>;'
pub use extern_crate::TyAlias;
//@ has foo/trait.WTrait.html '//pre[@class="rust item-decl"]' \
//      'pub trait WTrait<const N: usize, const M: usize>'
//@ has - '//pre[@class="rust item-decl"]' 'fn hey<const P: usize>() -> usize'
pub use extern_crate::WTrait;

//@ has foo/trait.Trait.html '//pre[@class="rust item-decl"]' \
//      'pub trait Trait<const N: usize>'
//@ has - '//*[@id="impl-Trait%3C1%3E-for-u8"]//h3[@class="code-header"]' 'impl Trait<1> for u8'
//@ has - '//*[@id="impl-Trait%3C2%3E-for-u8"]//h3[@class="code-header"]' 'impl Trait<2> for u8'
//@ has - '//*[@id="impl-Trait%3C%7B1+%2B+2%7D%3E-for-u8"]//h3[@class="code-header"]' 'impl Trait<{1 + 2}> for u8'
//@ has - '//*[@id="impl-Trait%3CN%3E-for-%5Bu8;+N%5D"]//h3[@class="code-header"]' \
//      'impl<const N: usize> Trait<N> for [u8; N]'
pub trait Trait<const N: usize> {}
impl Trait<1> for u8 {}
impl Trait<2> for u8 {}
impl Trait<{1 + 2}> for u8 {}
impl<const N: usize> Trait<N> for [u8; N] {}

//@ has foo/struct.Foo.html '//pre[@class="rust item-decl"]' \
//      'pub struct Foo<const N: usize> where u8: Trait<N>'
pub struct Foo<const N: usize> where u8: Trait<N>;
//@ has foo/struct.Bar.html '//pre[@class="rust item-decl"]' 'pub struct Bar<T, const N: usize>('
pub struct Bar<T, const N: usize>([T; N]);

//@ has foo/struct.Foo.html '//*[@id="impl-Foo%3CM%3E"]/h3[@class="code-header"]' 'impl<const M: usize> Foo<M>where u8: Trait<M>'
impl<const M: usize> Foo<M> where u8: Trait<M> {
    //@ has - '//*[@id="associatedconstant.FOO_ASSOC"]' 'pub const FOO_ASSOC: usize'
    pub const FOO_ASSOC: usize = M + 13;

    //@ has - '//*[@id="method.hey"]' 'pub fn hey<const N: usize>(&self) -> Bar<u8, N>'
    pub fn hey<const N: usize>(&self) -> Bar<u8, N> {
        Bar([0; N])
    }
}

//@ has foo/struct.Bar.html '//*[@id="impl-Bar%3Cu8,+M%3E"]/h3[@class="code-header"]' 'impl<const M: usize> Bar<u8, M>'
impl<const M: usize> Bar<u8, M> {
    //@ has - '//*[@id="method.hey"]' \
    //      'pub fn hey<const N: usize>(&self) -> Foo<N>where u8: Trait<N>'
    pub fn hey<const N: usize>(&self) -> Foo<N> where u8: Trait<N> {
        Foo
    }
}

//@ has foo/fn.test.html '//pre[@class="rust item-decl"]' \
//      'pub fn test<const N: usize>() -> impl Trait<N>where u8: Trait<N>'
pub fn test<const N: usize>() -> impl Trait<N> where u8: Trait<N> {
    2u8
}

//@ has foo/fn.a_sink.html '//pre[@class="rust item-decl"]' \
//      'pub async fn a_sink<const N: usize>(v: [u8; N]) -> impl Trait<N>'
pub async fn a_sink<const N: usize>(v: [u8; N]) -> impl Trait<N> {
    v
}

//@ has foo/fn.b_sink.html '//pre[@class="rust item-decl"]' \
//      'pub async fn b_sink<const N: usize>(_: impl Trait<N>)'
pub async fn b_sink<const N: usize>(_: impl Trait<N>) {}

//@ has foo/fn.concrete.html '//pre[@class="rust item-decl"]' \
//      'pub fn concrete() -> [u8; 22]'
pub fn concrete() -> [u8; 3 + std::mem::size_of::<u64>() << 1] {
    Default::default()
}

//@ has foo/type.Faz.html '//pre[@class="rust item-decl"]' \
//      'type Faz<const N: usize> = [u8; N];'
pub type Faz<const N: usize> = [u8; N];
//@ has foo/type.Fiz.html '//pre[@class="rust item-decl"]' \
//      'type Fiz<const N: usize> = [[u8; N]; 48];'
pub type Fiz<const N: usize> = [[u8; N]; 3 << 4];

macro_rules! define_me {
    ($t:tt<$q:tt>) => {
        pub struct $t<const $q: usize>([u8; $q]);
    }
}

//@ has foo/struct.Foz.html '//pre[@class="rust item-decl"]' \
//      'pub struct Foz<const N: usize>(/* private fields */);'
define_me!(Foz<N>);

trait Q {
    const ASSOC: usize;
}

impl<const N: usize> Q for [u8; N] {
    const ASSOC: usize = N;
}

//@ has foo/fn.q_user.html '//pre[@class="rust item-decl"]' \
//      'pub fn q_user() -> [u8; 13]'
pub fn q_user() -> [u8; <[u8; 13] as Q>::ASSOC] {
    [0; <[u8; 13] as Q>::ASSOC]
}

//@ has foo/union.Union.html '//pre[@class="rust item-decl"]' \
//      'pub union Union<const N: usize>'
pub union Union<const N: usize> {
    //@ has - //pre "pub arr: [u8; N]"
    pub arr: [u8; N],
    //@ has - //pre "pub another_arr: [(); N]"
    pub another_arr: [(); N],
}

//@ has foo/enum.Enum.html '//pre[@class="rust item-decl"]' \
//      'pub enum Enum<const N: usize>'
pub enum Enum<const N: usize> {
    //@ has - //pre "Variant([u8; N])"
    Variant([u8; N]),
    //@ has - //pre "EmptyVariant"
    EmptyVariant,
}
