LL | let mut _q = Default::default();
| ^^^^^^ consider giving `_q` a type
-error: aborting due to previous error
+error[E0283]: type annotations needed
+ --> $DIR/const_eval_resolve_canonical.rs:29:10
+ |
+LL | _q = foo::<_, 2>(_q);
+ | ^^^^^^^^^^^ cannot infer type
+ |
+note: multiple `impl`s satisfying `(): Foo<{ N + 1 }>` found
+ --> $DIR/const_eval_resolve_canonical.rs:8:1
+ |
+LL | impl Foo<0> for () {
+ | ^^^^^^^^^^^^^^^^^^
+...
+LL | impl Foo<3> for () {
+ | ^^^^^^^^^^^^^^^^^^
+note: required by a bound in `foo`
+ --> $DIR/const_eval_resolve_canonical.rs:18:9
+ |
+LL | fn foo<T, const N: usize>(_: T) -> <() as Foo<{ N + 1 }>>::Assoc
+ | --- required by a bound in this
+LL | where
+LL | (): Foo<{ N + 1 }>,
+ | ^^^^^^^^^^^^^^ required by this bound in `foo`
+
+error: aborting due to 2 previous errors
-For more information about this error, try `rustc --explain E0282`.
+Some errors have detailed explanations: E0282, E0283.
+For more information about an error, try `rustc --explain E0282`.