1
Fork 0

dont discard overflow from normalizes-to goals

This commit is contained in:
lcnr 2023-12-18 08:31:00 +01:00
parent ca718ffd2d
commit 4a38442c90
6 changed files with 82 additions and 23 deletions

View file

@ -0,0 +1,25 @@
// compile-flags: -Znext-solver=coherence
// check-pass
// A regression test for trait-system-refactor-initiative#70.
trait Trait {
type Assoc;
}
struct W<T: ?Sized>(*mut T);
impl<T: ?Sized> Trait for W<W<T>>
where
W<T>: Trait,
{
type Assoc = ();
}
trait NoOverlap {}
impl<T: Trait<Assoc = u32>> NoOverlap for T {}
// `Projection(<W<_> as Trait>::Assoc, u32)` should result in error even
// though applying the impl results in overflow. This is necessary to match
// the behavior of the old solver.
impl<T: ?Sized> NoOverlap for W<T> {}
fn main() {}