Check for overflow in assemble_candidates_after_normalizing_self_ty

This commit is contained in:
Michael Goulet 2023-03-27 21:48:43 +00:00
parent bf57e8ada6
commit ef5f773bff
6 changed files with 105 additions and 18 deletions

View file

@ -0,0 +1,19 @@
// compile-flags: -Ztrait-solver=next
trait Foo1 {
type Assoc1;
}
trait Foo2 {
type Assoc2;
}
trait Bar {}
fn needs_bar<S: Bar>() {}
fn test<T: Foo1<Assoc1 = <T as Foo2>::Assoc2> + Foo2<Assoc2 = <T as Foo1>::Assoc1>>() {
needs_bar::<T::Assoc1>();
//~^ ERROR type annotations needed
}
fn main() {}

View file

@ -0,0 +1,9 @@
error[E0282]: type annotations needed
--> $DIR/recursive-self-normalization-2.rs:15:5
|
LL | needs_bar::<T::Assoc1>();
| ^^^^^^^^^^^^^^^^^^^^^^ cannot infer type of the type parameter `S` declared on the function `needs_bar`
error: aborting due to previous error
For more information about this error, try `rustc --explain E0282`.

View file

@ -0,0 +1,15 @@
// compile-flags: -Ztrait-solver=next
trait Foo {
type Assoc;
}
trait Bar {}
fn needs_bar<S: Bar>() {}
fn test<T: Foo<Assoc = <T as Foo>::Assoc>>() {
needs_bar::<T::Assoc>();
//~^ ERROR type annotations needed
}
fn main() {}

View file

@ -0,0 +1,9 @@
error[E0282]: type annotations needed
--> $DIR/recursive-self-normalization.rs:11:5
|
LL | needs_bar::<T::Assoc>();
| ^^^^^^^^^^^^^^^^^^^^^ cannot infer type of the type parameter `S` declared on the function `needs_bar`
error: aborting due to previous error
For more information about this error, try `rustc --explain E0282`.