// check-pass // compile-flags: -C debug_assertions=yes -Zunstable-options #[allow(dead_code)] fn problematic_function() where DefaultAlloc: FinAllok, { let e = Edge2dElement; let _ = Into::::into(e.map_reference_coords()); } impl Allocator for DefaultAlloc { type Buffer = MStorage; } impl Allocator for DefaultAlloc { type Buffer = MStorage; } impl From> for Point where DefaultAlloc: Allocator, { fn from(_: VectorN) -> Self { unimplemented!() } } impl FinAllok for DefaultAlloc where DefaultAlloc: Allocator, DefaultAlloc: Allocator { } impl FiniteElement for Edge2dElement { fn map_reference_coords(&self) -> VectorN { unimplemented!() } } type VectorN = (N, R, >::Buffer); struct DefaultAlloc; struct R0; struct R1; struct MStorage; struct Point; struct Edge2dElement; struct Ure; trait Allocator { type Buffer; } trait FinAllok: Allocator + Allocator + { } trait FiniteElement where DefaultAlloc: FinAllok, { fn map_reference_coords(&self) -> VectorN; } fn main() {}