rust/tests/ui/derives
Matthias Krüger af99946700
Rollup merge of #120507 - estebank:issue-108428, r=davidtwco
Account for non-overlapping unmet trait bounds in suggestion

When a method not found on a type parameter could have been provided by any
of multiple traits, suggest each trait individually, instead of a single
suggestion to restrict the type parameter with *all* of them.

Before:

```
error[E0599]: the method `cmp` exists for reference `&T`, but its trait bounds were not satisfied
  --> $DIR/method-on-unbounded-type-param.rs:5:10
   |
LL |     (&a).cmp(&b)
   |          ^^^ method cannot be called on `&T` due to unsatisfied trait bounds
   |
   = note: the following trait bounds were not satisfied:
           `T: Ord`
           which is required by `&T: Ord`
           `&T: Iterator`
           which is required by `&mut &T: Iterator`
           `T: Iterator`
           which is required by `&mut T: Iterator`
help: consider restricting the type parameters to satisfy the trait bounds
   |
LL | fn g<T>(a: T, b: T) -> std::cmp::Ordering where T: Iterator, T: Ord {
   |                                           +++++++++++++++++++++++++
```

After:

```
error[E0599]: the method `cmp` exists for reference `&T`, but its trait bounds were not satisfied
  --> $DIR/method-on-unbounded-type-param.rs:5:10
   |
LL |     (&a).cmp(&b)
   |          ^^^ method cannot be called on `&T` due to unsatisfied trait bounds
   |
   = note: the following trait bounds were not satisfied:
           `T: Ord`
           which is required by `&T: Ord`
           `&T: Iterator`
           which is required by `&mut &T: Iterator`
           `T: Iterator`
           which is required by `&mut T: Iterator`
   = help: items from traits can only be used if the type parameter is bounded by the trait
help: the following traits define an item `cmp`, perhaps you need to restrict type parameter `T` with one of them:
   |
LL | fn g<T: Ord>(a: T, b: T) -> std::cmp::Ordering {
   |       +++++
LL | fn g<T: Iterator>(a: T, b: T) -> std::cmp::Ordering {
   |       ++++++++++
```

Fix #108428.

Follow up to #120396, only last commit is relevant.
2024-02-06 22:45:42 +01:00
..
auxiliary
clone-debug-dead-code-in-the-same-struct.rs
clone-debug-dead-code-in-the-same-struct.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
clone-debug-dead-code.rs
clone-debug-dead-code.stderr
derive-assoc-type-not-impl.rs
derive-assoc-type-not-impl.stderr Account for non-overlapping unmet trait bounds in suggestion 2024-01-30 19:26:13 +00:00
derive-deadlock.rs
derive-deadlock.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
derive-Debug-use-ufcs-struct.rs
derive-Debug-use-ufcs-tuple.rs
derive-hygiene.rs
derive-macro-const-default.rs
derive-marker-tricky.rs
derive-multiple-with-packed.rs
derive-on-trait-item-or-impl-item.rs
derive-on-trait-item-or-impl-item.stderr
derive-partial-ord.rs
derive-renamed.rs
derives-span-Clone-enum-struct-variant.rs
derives-span-Clone-enum-struct-variant.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
derives-span-Clone-enum.rs
derives-span-Clone-enum.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
derives-span-Clone-struct.rs
derives-span-Clone-struct.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
derives-span-Clone-tuple-struct.rs
derives-span-Clone-tuple-struct.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
derives-span-Debug-enum-struct-variant.rs
derives-span-Debug-enum-struct-variant.stderr Provide more context on derived obligation error primary label 2024-01-30 21:28:18 +00:00
derives-span-Debug-enum.rs
derives-span-Debug-enum.stderr Provide more context on derived obligation error primary label 2024-01-30 21:28:18 +00:00
derives-span-Debug-struct.rs
derives-span-Debug-struct.stderr Provide more context on derived obligation error primary label 2024-01-30 21:28:18 +00:00
derives-span-Debug-tuple-struct.rs
derives-span-Debug-tuple-struct.stderr Provide more context on derived obligation error primary label 2024-01-30 21:28:18 +00:00
derives-span-Default-struct.rs
derives-span-Default-struct.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
derives-span-Default-tuple-struct.rs
derives-span-Default-tuple-struct.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
derives-span-Eq-enum-struct-variant.rs
derives-span-Eq-enum-struct-variant.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
derives-span-Eq-enum.rs
derives-span-Eq-enum.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
derives-span-Eq-struct.rs
derives-span-Eq-struct.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
derives-span-Eq-tuple-struct.rs
derives-span-Eq-tuple-struct.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
derives-span-Hash-enum-struct-variant.rs
derives-span-Hash-enum-struct-variant.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
derives-span-Hash-enum.rs
derives-span-Hash-enum.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
derives-span-Hash-struct.rs
derives-span-Hash-struct.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
derives-span-Hash-tuple-struct.rs
derives-span-Hash-tuple-struct.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
derives-span-Ord-enum-struct-variant.rs
derives-span-Ord-enum-struct-variant.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
derives-span-Ord-enum.rs
derives-span-Ord-enum.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
derives-span-Ord-struct.rs
derives-span-Ord-struct.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
derives-span-Ord-tuple-struct.rs
derives-span-Ord-tuple-struct.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
derives-span-PartialEq-enum-struct-variant.rs
derives-span-PartialEq-enum-struct-variant.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
derives-span-PartialEq-enum.rs
derives-span-PartialEq-enum.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
derives-span-PartialEq-struct.rs
derives-span-PartialEq-struct.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
derives-span-PartialEq-tuple-struct.rs
derives-span-PartialEq-tuple-struct.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
derives-span-PartialOrd-enum-struct-variant.rs
derives-span-PartialOrd-enum-struct-variant.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
derives-span-PartialOrd-enum.rs
derives-span-PartialOrd-enum.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
derives-span-PartialOrd-struct.rs
derives-span-PartialOrd-struct.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
derives-span-PartialOrd-tuple-struct.rs
derives-span-PartialOrd-tuple-struct.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
deriving-bounds.rs
deriving-bounds.stderr Add a note to duplicate diagnostics 2023-10-05 01:04:41 +00:00
deriving-copyclone.rs
deriving-copyclone.stderr Point at specific field in struct literal when trait fulfillment fails 2023-01-23 13:37:58 -08:00
deriving-meta-empty-trait-list.rs
deriving-meta-unknown-trait.rs
deriving-meta-unknown-trait.stderr Add a note to duplicate diagnostics 2023-10-05 01:04:41 +00:00
deriving-no-inner-impl-error-message.rs
deriving-no-inner-impl-error-message.stderr Provide RHS type hint when reporting operator error 2023-04-27 01:34:03 +00:00
deriving-non-type.rs
deriving-non-type.stderr
deriving-primitive.rs
deriving-primitive.stderr Add a note to duplicate diagnostics 2023-10-05 01:04:41 +00:00
deriving-with-repr-packed-2.rs make unaligned_reference a hard error 2023-01-31 20:28:11 +01:00
deriving-with-repr-packed-2.stderr Use single label for method not found due to unmet bound 2024-01-26 20:47:19 +00:00
deriving-with-repr-packed-move-errors.rs Emit explanatory note for move errors in packed struct derives 2023-11-03 07:32:10 +05:30
deriving-with-repr-packed-move-errors.stderr Emit explanatory note for move errors in packed struct derives 2023-11-03 07:32:10 +05:30
deriving-with-repr-packed.rs Extend BYTE_SLICE_IN_PACKED_STRUCT_WITH_DERIVE. 2023-02-09 11:47:12 +11:00
deriving-with-repr-packed.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
issue-36617.rs Supress unhelpful diagnostics for unresolved top level attributes 2024-01-29 17:43:07 +08:00
issue-36617.stderr Supress unhelpful diagnostics for unresolved top level attributes 2024-01-29 17:43:07 +08:00
issue-43023.rs
issue-43023.stderr
issue-91492.rs
issue-91492.stderr Tweak output for 'add line' suggestion 2023-04-12 22:50:10 +00:00
issue-91550.rs
issue-91550.stderr Use only one label for multiple unsatisfied bounds on type (typeck) 2024-01-26 20:47:19 +00:00
issue-97343.rs Taint more aggressively in astconv 2024-01-11 09:03:26 +00:00
issue-97343.stderr Taint more aggressively in astconv 2024-01-11 09:03:26 +00:00