mirror of
https://github.com/rust-lang/rust.git
synced 2025-10-02 18:27:37 +00:00

When a trait bound fails due to the Self type parameter, adjust_fulfillment_errors now correctly points to the corresponding function argument instead of incorrectly pointing to other arguments. Signed-off-by: xizheyin <xizheyin@smail.nju.edu.cn>
29 lines
1.0 KiB
Plaintext
29 lines
1.0 KiB
Plaintext
error[E0283]: type annotations needed
|
|
--> $DIR/auto-trait-selection.rs:15:16
|
|
|
|
|
LL | if false { is_trait(foo()) } else { Default::default() }
|
|
| ^^^^^^^^ ----- type must be known at this point
|
|
| |
|
|
| cannot infer type of the type parameter `U` declared on the function `is_trait`
|
|
|
|
|
note: multiple `impl`s satisfying `impl Sized: Trait<_>` found
|
|
--> $DIR/auto-trait-selection.rs:12:1
|
|
|
|
|
LL | impl<T: Send> Trait<u32> for T {}
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
LL | impl<T> Trait<i32> for T {}
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
|
note: required by a bound in `is_trait`
|
|
--> $DIR/auto-trait-selection.rs:7:16
|
|
|
|
|
LL | fn is_trait<T: Trait<U>, U: Default>(_: T) -> U {
|
|
| ^^^^^^^^ required by this bound in `is_trait`
|
|
help: consider specifying the generic arguments
|
|
|
|
|
LL | if false { is_trait::<_, U>(foo()) } else { Default::default() }
|
|
| ++++++++
|
|
|
|
error: aborting due to 1 previous error
|
|
|
|
For more information about this error, try `rustc --explain E0283`.
|