55559d93e7
If a const is expected, resolve a const. If a type is expected, resolve a type. Don't try to resolve a type first falling back to consts.
39 lines
1.5 KiB
Plaintext
39 lines
1.5 KiB
Plaintext
error[E0222]: ambiguous associated constant `K` in bounds of `Trait0`
|
|
--> $DIR/assoc-const-eq-ambiguity.rs:9:25
|
|
|
|
|
LL | trait Parent0<T> { const K: (); }
|
|
| -----------
|
|
| |
|
|
| ambiguous `K` from `Parent0<u32>`
|
|
| ambiguous `K` from `Parent0<i32>`
|
|
LL |
|
|
LL | fn take0(_: impl Trait0<K = { () }>) {}
|
|
| ^^^^^^^^^^ ambiguous associated constant `K`
|
|
|
|
|
= help: consider introducing a new type parameter `T` and adding `where` constraints:
|
|
where
|
|
T: Trait0,
|
|
T: Parent0<u32>::K = { () },
|
|
T: Parent0<i32>::K = { () }
|
|
|
|
error[E0222]: ambiguous associated constant `C` in bounds of `Trait1`
|
|
--> $DIR/assoc-const-eq-ambiguity.rs:16:25
|
|
|
|
|
LL | trait Parent1 { const C: i32; }
|
|
| ------------ ambiguous `C` from `Parent1`
|
|
LL | trait Parent2 { const C: &'static str; }
|
|
| --------------------- ambiguous `C` from `Parent2`
|
|
LL |
|
|
LL | fn take1(_: impl Trait1<C = "?">) {}
|
|
| ^^^^^^^ ambiguous associated constant `C`
|
|
|
|
|
= help: consider introducing a new type parameter `T` and adding `where` constraints:
|
|
where
|
|
T: Trait1,
|
|
T: Parent2::C = "?",
|
|
T: Parent1::C = "?"
|
|
|
|
error: aborting due to 2 previous errors
|
|
|
|
For more information about this error, try `rustc --explain E0222`.
|