rust/tests/ui/type
bors 94bc9c737e Auto merge of #114811 - estebank:impl-ambiguity, r=wesleywiser
Show more information when multiple `impl`s apply

- When there are `impl`s without type params, show only those (to avoid showing overly generic `impl`s).
```
error[E0283]: type annotations needed
  --> $DIR/multiple-impl-apply.rs:34:9
   |
LL |     let y = x.into();
   |         ^     ---- type must be known at this point
   |
note: multiple `impl`s satisfying `_: From<Baz>` found
  --> $DIR/multiple-impl-apply.rs:14:1
   |
LL | impl From<Baz> for Bar {
   | ^^^^^^^^^^^^^^^^^^^^^^
...
LL | impl From<Baz> for Foo {
   | ^^^^^^^^^^^^^^^^^^^^^^
   = note: required for `Baz` to implement `Into<_>`
help: consider giving `y` an explicit type
   |
LL |     let y: /* Type */ = x.into();
   |          ++++++++++++
```

- Lower the importance of `T: Sized`, `T: WellFormed` and coercion errors, to prioritize more relevant errors. The pre-existing deduplication logic deals with hiding redundant errors better that way, and we show errors with more metadata that is useful to the user.

- Show `<SelfTy as Trait>::assoc_fn` suggestion in more cases.
```
error[E0790]: cannot call associated function on trait without specifying the corresponding `impl` type
  --> $DIR/cross-return-site-inference.rs:38:16
   |
LL |     return Err(From::from("foo"));
   |                ^^^^^^^^^^ cannot call associated function of trait
   |
help: use a fully-qualified path to a specific available implementation
   |
LL |     return Err(</* self type */ as From>::from("foo"));
   |                +++++++++++++++++++     +
```

Fix #88284.
2023-10-06 18:44:32 +00:00
..
ascription
auxiliary
type-check
binding-assigned-block-without-tail-expression.rs
binding-assigned-block-without-tail-expression.stderr
closure-with-wrong-borrows.rs
closure-with-wrong-borrows.stderr
issue-58355.rs
issue-58355.stderr
issue-67690-type-alias-bound-diagnostic-crash.rs
issue-67690-type-alias-bound-diagnostic-crash.stderr
issue-91268.rs
issue-91268.stderr
issue-94187-verbose-type-name.rs
issue-100584.rs
issue-100584.stderr
issue-101866.rs
issue-101866.stderr
issue-102598.rs
issue-102598.stderr
issue-103271.rs
issue-103271.stderr
missing-let-in-binding-2.fixed
missing-let-in-binding-2.rs
missing-let-in-binding-2.stderr
missing-let-in-binding-3.rs
missing-let-in-binding-3.stderr
missing-let-in-binding-4.rs
missing-let-in-binding-4.stderr
missing-let-in-binding.fixed
missing-let-in-binding.rs
missing-let-in-binding.stderr
option-ref-advice.rs
option-ref-advice.stderr
subtyping-opaque-type.rs move subtyper change reveal_all 2023-10-05 18:56:30 +03:00
type-alias-bounds.rs
type-alias-bounds.stderr
type-annotation-needed.rs
type-annotation-needed.stderr
type-arg-out-of-scope.rs
type-arg-out-of-scope.stderr
type-ascription-instead-of-initializer.rs
type-ascription-instead-of-initializer.stderr
type-ascription-instead-of-statement-end.rs
type-ascription-instead-of-statement-end.stderr
type-ascription-precedence.rs
type-ascription-precedence.stderr
type-ascription-soundness.rs
type-ascription-soundness.stderr
type-ascription-with-fn-call.fixed
type-ascription-with-fn-call.rs
type-ascription-with-fn-call.stderr
type-ascription.rs
type-check-defaults.rs
type-check-defaults.stderr
type-dependent-def-issue-49241.rs
type-dependent-def-issue-49241.stderr
type-error-break-tail.rs
type-error-break-tail.stderr
type-mismatch-multiple.rs
type-mismatch-multiple.stderr
type-mismatch-same-crate-name.rs
type-mismatch-same-crate-name.stderr
type-mismatch.rs
type-mismatch.stderr
type-parameter-defaults-referencing-Self-ppaux.rs
type-parameter-defaults-referencing-Self-ppaux.stderr
type-parameter-defaults-referencing-Self.rs
type-parameter-defaults-referencing-Self.stderr
type-parameter-names.rs
type-parameter-names.stderr
type-params-in-different-spaces-1.rs
type-params-in-different-spaces-1.stderr
type-params-in-different-spaces-2.rs
type-params-in-different-spaces-2.stderr
type-params-in-different-spaces-3.rs
type-params-in-different-spaces-3.stderr
type-path-err-node-types.rs
type-path-err-node-types.stderr
type-recursive-box-shadowed.rs
type-recursive-box-shadowed.stderr
type-recursive.rs
type-recursive.stderr
type-shadow.rs
type-shadow.stderr
type-unsatisfiable.rs
type-unsatisfiable.usage.stderr
wrong-call-return-type-due-to-generic-arg.rs
wrong-call-return-type-due-to-generic-arg.stderr