rust/tests/ui/type
bors 0b4a81a4ef Auto merge of #138492 - lcnr:rm-inline_const_pat, r=oli-obk
remove `feature(inline_const_pat)`

Summarizing https://rust-lang.zulipchat.com/#narrow/channel/144729-t-types/topic/remove.20feature.28inline_const_pat.29.20and.20shared.20borrowck.

With https://github.com/rust-lang/types-team/issues/129 we will start to borrowck items together with their typeck parent. This is necessary to correctly support opaque types, blocking the new solver and TAIT/ATPIT stabilization with the old one. This means that we cannot really support `inline_const_pat` as they are implemented right now:

- we want to typeck inline consts together with their parent body to allow inference to flow both ways and to allow the const to refer to local regions of its parent.This means we also need to borrowck the inline const together with its parent as that's necessary to properly support opaque types
- we want the inline const pattern to participate in exhaustiveness checking
- to participate in exhaustiveness checking we need to evaluate it, which requires borrowck, which now relies on borrowck of the typeck root, which ends up checking exhaustiveness again. **This is a query cycle**.

There are 4 possible ways to handle this:
- stop typechecking inline const patterns together with their parent
  - causes inline const patterns to be different than inline const exprs
  - prevents bidirectional inference, we need to either fail to compile `if let const { 1 } = 1u32` or `if let const { 1u32 } = 1`
  - region inference for inline consts will be harder, it feels non-trivial to support inline consts referencing local regions from the parent fn
- inline consts no longer participate in exhaustiveness checking. Treat them like `pat if pat == const { .. }`  instead. We then only evaluate them after borrowck
  - difference between `const { 1 }`  and `const FOO: usize = 1; match x { FOO => () }`. This is confusing
  - do they carry their weight if they are now just equivalent to using an if-guard
- delay exhaustiveness checking until after borrowck
  - should be possible in theory, but is a quite involved change and may have some unexpected challenges
- remove this feature for now

I believe we should either delay exhaustiveness checking or remove the feature entirely. As moving exhaustiveness checking to after borrow checking is quite complex I think the right course of action is to fully remove the feature for now and to add it again once/if we've got that implementation figured out.

`const { .. }`-expressions remain stable. These seem to have been the main motivation for https://github.com/rust-lang/rfcs/issues/2920.

r? types

cc `@rust-lang/types` `@rust-lang/lang` #76001
2025-04-01 14:20:46 +00:00
..
ascription Use more accurate span for : to :: suggestion 2024-07-12 03:02:58 +00:00
auxiliary Add more info on type/trait mismatches for different crate versions 2024-12-07 18:18:08 +00:00
pattern_types Auto merge of #138492 - lcnr:rm-inline_const_pat, r=oli-obk 2025-04-01 14:20:46 +00:00
type-check Make E0614 a structured error 2025-02-25 16:56:04 +00:00
binding-assigned-block-without-tail-expression.rs
binding-assigned-block-without-tail-expression.stderr
clarify-error-for-generics-with-default-issue-120785.rs Update item order in test 2024-02-28 19:28:34 -05:00
clarify-error-for-generics-with-default-issue-120785.stderr Update item order in test 2024-02-28 19:28:34 -05:00
closure-with-wrong-borrows.rs
closure-with-wrong-borrows.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
default_type_parameter_in_fn_or_impl.rs make invalid_type_param_default lint show up in cargo future-compat reports 2024-07-15 22:05:45 +02:00
default_type_parameter_in_fn_or_impl.stderr make invalid_type_param_default lint show up in cargo future-compat reports 2024-07-15 22:05:45 +02:00
issue-7607-1.rs Move some tests 2024-04-21 15:43:43 -03:00
issue-7607-1.stderr Move some tests 2024-04-21 15:43:43 -03:00
issue-7607-2.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
issue-58355.rs
issue-58355.stderr Remove detail from label/note that is already available in other note 2024-10-29 16:26:57 +00:00
issue-67690-type-alias-bound-diagnostic-crash.rs Improve the impl and diag output of lint type_alias_bounds 2024-07-23 01:48:03 +02:00
issue-67690-type-alias-bound-diagnostic-crash.stderr Improve the impl and diag output of lint type_alias_bounds 2024-07-23 01:48:03 +02:00
issue-91268.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issue-91268.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
issue-94187-verbose-type-name.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issue-100584.rs
issue-100584.stderr Trim suggestion parts to the subset that is purely additive 2025-02-14 00:44:10 -08:00
issue-101866.rs
issue-101866.stderr Deduplicate more sized errors on call exprs 2024-01-24 02:53:15 +00:00
issue-102598.rs
issue-102598.stderr
issue-103271.rs
issue-103271.stderr Show diff suggestion format on verbose replacement 2025-02-10 20:21:39 +00:00
missing-let-in-binding-2.fixed [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
missing-let-in-binding-2.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
missing-let-in-binding-2.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
missing-let-in-binding-3.rs fix ice in suggesting 2023-05-08 11:16:17 +08:00
missing-let-in-binding-3.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
missing-let-in-binding-4.rs code refactor and fix wrong suggestion 2023-05-08 14:56:36 +08:00
missing-let-in-binding-4.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
missing-let-in-binding.fixed [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
missing-let-in-binding.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
missing-let-in-binding.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
option-ref-advice.rs Rename tests/ui/issues/issue-100605.rs to ../type/option-ref-advice.rs 2023-08-05 15:36:19 +02:00
option-ref-advice.stderr Rename tests/ui/issues/issue-100605.rs to ../type/option-ref-advice.rs 2023-08-05 15:36:19 +02:00
type-alias-bounds.rs Improve the impl and diag output of lint type_alias_bounds 2024-07-23 01:48:03 +02:00
type-alias-bounds.stderr Improve the impl and diag output of lint type_alias_bounds 2024-07-23 01:48:03 +02:00
type-annotation-needed.rs
type-annotation-needed.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
type-arg-out-of-scope.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
type-arg-out-of-scope.stderr Generalize E0401 2023-09-10 23:06:14 +02:00
type-ascription-instead-of-initializer.rs
type-ascription-instead-of-initializer.stderr Use ordinal number in argument error 2024-07-14 13:50:09 +09:00
type-ascription-instead-of-statement-end.rs Rip it out 2023-05-01 16:15:13 +08:00
type-ascription-instead-of-statement-end.stderr Show diff suggestion format on verbose replacement 2025-02-10 20:21:39 +00:00
type-ascription-precedence.rs fix test cases 2023-05-01 16:15:17 +08:00
type-ascription-precedence.stderr fix test cases 2023-05-01 16:15:17 +08:00
type-ascription-soundness.rs
type-ascription-soundness.stderr
type-ascription-with-fn-call.fixed [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
type-ascription-with-fn-call.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
type-ascription-with-fn-call.stderr Show diff suggestion format on verbose replacement 2025-02-10 20:21:39 +00:00
type-ascription.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
type-check-defaults.rs
type-check-defaults.stderr Use trait name instead of full constraint in suggestion message 2024-12-07 21:29:58 +00:00
type-dependent-def-issue-49241.rs Suppress "erroneous constant used" for constants tainted by errors 2023-05-15 00:00:00 +00:00
type-dependent-def-issue-49241.stderr Show diff suggestion format on verbose replacement 2025-02-10 20:21:39 +00:00
type-error-break-tail.rs
type-error-break-tail.stderr Tweak value suggestions in borrowck and hir_analysis 2024-04-09 23:37:13 +00:00
type-mismatch-multiple.rs
type-mismatch-multiple.stderr
type-mismatch-same-crate-name.rs Add more info on type/trait mismatches for different crate versions 2024-12-07 18:18:08 +00:00
type-mismatch-same-crate-name.stderr Add more info on type/trait mismatches for different crate versions 2024-12-07 18:18:08 +00:00
type-mismatch.rs
type-mismatch.stderr recurse into refs when comparing tys for diagnostics 2023-12-07 23:00:46 -05:00
type-parameter-defaults-referencing-Self-ppaux.rs
type-parameter-defaults-referencing-Self-ppaux.stderr Compiler: Finalize dyn compatibility renaming 2025-01-26 21:20:31 +01:00
type-parameter-defaults-referencing-Self.rs
type-parameter-defaults-referencing-Self.stderr Properly report error when object type param default references self 2025-01-24 04:07:10 +00:00
type-parameter-names.rs
type-parameter-names.stderr Note that type param is chosen by caller when suggesting return impl Trait 2024-03-16 23:20:42 +00:00
type-params-in-different-spaces-1.rs
type-params-in-different-spaces-1.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
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 Note that type param is chosen by caller when suggesting return impl Trait 2024-03-16 23:20:42 +00:00
type-path-err-node-types.rs
type-path-err-node-types.stderr refactor(resolve): clean up the early error return caused by non-call 2023-05-10 22:35:01 +08:00
type-recursive-box-shadowed.rs
type-recursive-box-shadowed.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
type-recursive.rs
type-recursive.stderr
type-shadow.rs
type-shadow.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
type-unsatisfiable.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
type-unsatisfiable.usage.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
verbose.normal.stderr don't elide shared parts of types in diagnostics when --verbose is passed 2023-12-24 16:47:18 -05:00
verbose.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
verbose.verbose.stderr don't elide shared parts of types in diagnostics when --verbose is passed 2023-12-24 16:47:18 -05:00
wrong-call-return-type-due-to-generic-arg.rs
wrong-call-return-type-due-to-generic-arg.stderr Show diff suggestion format on verbose replacement 2025-02-10 20:21:39 +00:00