diff options
Diffstat (limited to 'tests/ui/traits/next-solver/projection-discr-kind.rs')
-rw-r--r-- | tests/ui/traits/next-solver/projection-discr-kind.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/ui/traits/next-solver/projection-discr-kind.rs b/tests/ui/traits/next-solver/projection-discr-kind.rs new file mode 100644 index 000000000..bf557f863 --- /dev/null +++ b/tests/ui/traits/next-solver/projection-discr-kind.rs @@ -0,0 +1,18 @@ +// compile-flags: -Znext-solver + +// Check that `<T::Assoc as DiscriminantKind>::Discriminant` doesn't normalize +// to itself and cause overflow/ambiguity. + +trait Foo { + type Assoc; +} + +trait Bar {} +fn needs_bar(_: impl Bar) {} + +fn foo<T: Foo>(x: T::Assoc) { + needs_bar(std::mem::discriminant(&x)); + //~^ ERROR the trait bound `Discriminant<<T as Foo>::Assoc>: Bar` is not satisfied +} + +fn main() {} |