blob: 9b92fec952ce979c5b94fef39b960110b4b380ac [file]
//@ compile-flags: -Znext-solver
#![feature(generic_const_items, min_generic_const_args, generic_const_args)]
#![expect(incomplete_features)]
// computing the same value with different constant items but same generic arguments should fail
trait Trait1 {}
const FOO<const N: usize>: usize = N + 1;
const BAR<const N: usize>: usize = N + 1;
impl Trait1 for [(); FOO::<1>] {}
impl Trait1 for [(); BAR::<1>] {}
//~^ ERROR conflicting implementations of trait `Trait1` for type `[(); 2]`
// computing the same value with the same constant item but different generic arguments should fail
const DIV2<const N: usize>: usize = N / 2;
trait Trait2 {}
impl Trait2 for [(); DIV2::<2>] {}
impl Trait2 for [(); DIV2::<3>] {}
//~^ ERROR conflicting implementations of trait `Trait2` for type `[(); 1]`
// computing the same value with different constant items and different generic arguments should
// fail
trait Trait3 {}
const ADD1<const N: usize>: usize = N + 1;
const SUB1<const N: usize>: usize = N - 1;
impl Trait3 for [(); ADD1::<1>] {}
impl Trait3 for [(); SUB1::<3>] {}
//~^ ERROR conflicting implementations of trait `Trait3` for type `[(); 2]`
fn main() {}