rust/tests/ui/inference
Matthias Krüger 5ebacd1b3c
Rollup merge of #135965 - estebank:shorten-ty-sugg, r=lcnr
In "specify type" suggestion, skip type params that are already known

When we suggest specifying a type for an expression or pattern, like in a `let` binding, we previously would print the entire type as the type system knew it. We now look at the params that have *no* inference variables, so they are fully known to the type system which means that they don't need to be specified.

This helps in suggestions for types that are really long, because we can usually skip most of the type params and make the annotation as short as possible:

```
error[E0282]: type annotations needed for `Result<_, ((..., ..., ..., ...), ..., ..., ...)>`
  --> $DIR/really-long-type-in-let-binding-without-sufficient-type-info.rs:7:9
   |
LL |     let y = Err(x);
   |         ^   ------ type must be known at this point
   |
help: consider giving `y` an explicit type, where the type for type parameter `T` is specified
   |
LL |     let y: Result<T, _> = Err(x);
   |          ++++++++++++++
```

Fix #135919.
2025-02-12 06:07:36 +01:00
..
auxiliary Arbitrary self types v2: pointers feature gate. 2024-08-27 17:32:35 +00:00
need_type_info chore: fix typos 2024-12-31 23:46:39 +08:00
ambiguous_type_parameter.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
ambiguous_type_parameter.stderr Show diff suggestion format on verbose replacement 2025-02-10 20:21:39 +00:00
array-len-mismatch.rs Suggest the correct array length on mismatch 2023-02-12 02:15:41 +00:00
array-len-mismatch.stderr Simplify array length mismatch error reporting 2024-11-24 03:32:11 +00:00
cannot-infer-async.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
cannot-infer-async.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
cannot-infer-closure-circular.rs Use fn ptr signature instead of {closure@..} in infer error 2024-04-10 00:41:27 +00:00
cannot-infer-closure-circular.stderr In "specify type" suggestion, skip type params that are already known 2025-02-03 19:51:20 +00:00
cannot-infer-closure.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
cannot-infer-closure.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
cannot-infer-partial-try-return.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
cannot-infer-partial-try-return.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
char-as-str-multi.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
char-as-str-multi.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
char-as-str-single.fixed [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
char-as-str-single.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
char-as-str-single.stderr Show diff suggestion format on verbose replacement 2025-02-10 20:21:39 +00:00
deref-suggestion.rs Suggest deref on comparison binop RHS even if type is not Copy 2023-04-19 16:47:11 +00:00
deref-suggestion.stderr Point at correct exprs for assert_eq type mismatch 2023-06-08 16:30:05 +00:00
detect-old-time-version-format_description-parse.rs Make the "detect-old-time" UI test more representative 2024-08-29 13:58:43 -07:00
detect-old-time-version-format_description-parse.stderr Make the "detect-old-time" UI test more representative 2024-08-29 13:58:43 -07:00
dont-collect-stmts-from-parent-body.rs Don't proceed into parent bodies when collecting stmts for possible return suggestion 2024-04-16 15:56:48 -04:00
dont-collect-stmts-from-parent-body.stderr Don't proceed into parent bodies when collecting stmts for possible return suggestion 2024-04-16 15:56:48 -04:00
erase-type-params-in-label.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
erase-type-params-in-label.stderr In "specify type" suggestion, skip type params that are already known 2025-02-03 19:51:20 +00:00
hint-closure-signature-119266.rs Print note with closure signature on type mismatch 2024-04-20 15:48:27 +02:00
hint-closure-signature-119266.stderr Print note with closure signature on type mismatch 2024-04-20 15:48:27 +02:00
ice-cannot-relate-region-109178.rs Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
ice-cannot-relate-region-109178.stderr add test for ice "cannot relate region: LUB(ReErased, ReError)" 2024-03-21 22:02:32 +01:00
ice-ifer-var-leaked-out-of-rollback-122098.rs add test for https://github.com/rust-lang/rust/issues/122098 ICE: index out of bounds, snapshot_vec.rs 2024-03-21 20:57:54 +01:00
ice-ifer-var-leaked-out-of-rollback-122098.stderr On implicit Sized bound on fn argument, point at type instead of pattern 2024-09-27 00:45:02 +00:00
infer-binary-operand-behind-reference.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
infer-fn-tail-expr.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
inference-variable-behind-raw-pointer.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
inference-variable-behind-raw-pointer.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
inference_unstable.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
inference_unstable.stderr Show diff suggestion format on verbose replacement 2025-02-10 20:21:39 +00:00
inference_unstable_featured.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
inference_unstable_featured.stderr Show diff suggestion format on verbose replacement 2025-02-10 20:21:39 +00:00
inference_unstable_forced.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
inference_unstable_forced.stderr use backticks instead of single quotes when reporting "use of unstable library feature" 2024-11-03 13:55:52 -08:00
issue-3743.rs Move tests 2024-03-03 16:30:48 -03:00
issue-12028.rs Move tests 2024-02-13 18:08:25 -03:00
issue-12028.stderr Show diff suggestion format on verbose replacement 2025-02-10 20:21:39 +00:00
issue-28935.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issue-36053.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issue-70082.rs diagnostics: add test case for already-solved issue 2023-04-25 13:07:09 -07:00
issue-70082.stderr Show diff suggestion format on verbose replacement 2025-02-10 20:21:39 +00:00
issue-70703.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issue-71309.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-71309.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
issue-71584.rs Enable more tests on Windows 2025-02-03 10:39:32 -05:00
issue-71584.stderr Show diff suggestion format on verbose replacement 2025-02-10 20:21:39 +00:00
issue-71732.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-71732.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
issue-72616.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issue-72616.stderr Show diff suggestion format on verbose replacement 2025-02-10 20:21:39 +00:00
issue-72690.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-72690.stderr Show diff suggestion format on verbose replacement 2025-02-10 20:21:39 +00:00
issue-80409.compat.stderr Check closure args and returns are WF 2024-04-25 10:03:17 -04:00
issue-80409.no-compat.stderr Check closure args and returns are WF 2024-04-25 10:03:17 -04:00
issue-80409.rs Check closure args and returns are WF 2024-04-25 10:03:17 -04:00
issue-80816.rs Note predicate span on ImplDerivedObligation 2023-01-11 19:46:45 +00:00
issue-80816.stderr Show diff suggestion format on verbose replacement 2025-02-10 20:21:39 +00:00
issue-81522.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issue-83606.rs Partially implement ConstArgHasType 2024-05-29 17:06:54 +01:00
issue-83606.stderr In "specify type" suggestion, skip type params that are already known 2025-02-03 19:51:20 +00:00
issue-86094-suggest-add-return-to-coerce-ret-ty.rs Suggest adding return if the type of unused semi return value can coerce to the fn return type 2023-10-15 22:57:03 +08:00
issue-86094-suggest-add-return-to-coerce-ret-ty.stderr Suggest adding return if the type of unused semi return value can coerce to the fn return type 2023-10-15 22:57:03 +08:00
issue-86162-1.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-86162-1.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
issue-86162-2.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-86162-2.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
issue-103587.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-103587.stderr Show diff suggestion format on verbose replacement 2025-02-10 20:21:39 +00:00
issue-104649.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-104649.stderr In "specify type" suggestion, skip type params that are already known 2025-02-03 19:51:20 +00:00
issue-107090.rs make type_flags(ReError) & HAS_ERROR 2024-03-20 17:29:58 +00:00
issue-107090.stderr make type_flags(ReError) & HAS_ERROR 2024-03-20 17:29:58 +00:00
issue-113354.fixed [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issue-113354.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issue-113354.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
lambda-infer-unresolved.rs Move 100 entries from tests/ui into subdirs 2024-05-20 19:55:59 -07:00
lub-glb-with-unbound-infer-var.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
multiple-impl-apply.rs Reorder fullfillment errors to keep more interesting ones first 2023-10-04 02:04:14 +00:00
multiple-impl-apply.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
newlambdas-ret-infer.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
newlambdas-ret-infer2.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
note-and-explain-ReVar-124973.rs Handle ReVar in note_and_explain_region. 2024-05-23 12:16:49 +10:00
note-and-explain-ReVar-124973.stderr Handle ReVar in note_and_explain_region. 2024-05-23 12:16:49 +10:00
order-dependent-cast-inference.rs Move 100 entries from tests/ui into subdirs 2024-05-20 19:55:59 -07:00
order-dependent-cast-inference.stderr Move 100 entries from tests/ui into subdirs 2024-05-20 19:55:59 -07:00
question-mark-type-infer.rs Reorder fullfillment errors to keep more interesting ones first 2023-10-04 02:04:14 +00:00
question-mark-type-infer.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
range-type-infer.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
really-long-type-in-let-binding-without-sufficient-type-info.rs In "specify type" suggestion, skip type params that are already known 2025-02-03 19:51:20 +00:00
really-long-type-in-let-binding-without-sufficient-type-info.stderr In "specify type" suggestion, skip type params that are already known 2025-02-03 19:51:20 +00:00
simple-infer.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
stmts-as-exp-105431.rs renaming test cases 2024-02-29 08:46:00 +08:00
stmts-as-exp-105431.stderr renaming test cases 2024-02-29 08:46:00 +08:00
str-as-char-butchered.rs Don't suggest turning non-char-literal exprs of ty char into string literals 2024-05-28 09:40:02 +02:00
str-as-char-butchered.stderr Don't suggest turning non-char-literal exprs of ty char into string literals 2024-05-28 09:40:02 +02:00
str-as-char-non-lit.rs Don't suggest turning non-char-literal exprs of ty char into string literals 2024-05-28 09:40:02 +02:00
str-as-char-non-lit.stderr Don't suggest turning non-char-literal exprs of ty char into string literals 2024-05-28 09:40:02 +02:00
str-as-char.fixed [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
str-as-char.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
str-as-char.stderr Show diff suggestion format on verbose replacement 2025-02-10 20:21:39 +00:00
tutorial-suffix-inference-test.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
tutorial-suffix-inference-test.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
type-infer-generalize-ty-var.rs Ignore tests w/ current/next revisions from compare-mode=next-solver 2024-03-10 21:18:41 -04:00
untyped-primitives.rs Remove From impls for unstable types that break inference 2024-04-11 18:04:31 -04:00