rust/tests/ui/pattern
bors 52bf0cf795 Auto merge of #140553 - BoxyUwU:defer_type_system_ctfe, r=compiler-errors
Defer evaluating type system constants when they use infers or params

Split out of #137972, the parts necessary for associated const equality and min generic const args to make progress and have correct semantics around when CTFE is invoked. According to a [previous perf run](https://perf.rust-lang.org/compare.html?start=93257e2d20809d82d1bc0fcc1942480d1a66d7cd&end=01b4cbf0f47c3f782330db88fa5ba199bba1f8a2&stat=instructions:u) of adding the new `const_arg_kind` query we should expect minor regressions here.

I think this is acceptable as we should be able to remove this query relatively soon once mgca is more complete as we'll then be able to implement GCE in terms of mgca and rip out `GCEConst` at which point it's trivial to determine what kind of anon const we're dealing with (either it has generics and is a repeat expr hack, or it doesnt and is a normal anon const).

This should only affect unstable code as we handle repeat exprs specially and those are the only kinds of type system consts that are allowed to make use of generic parameters.

Fixes #133066
Fixes #133199
Fixes #136894
Fixes #137813

r? compiler-errors
2025-05-23 05:30:45 +00:00
..
auxiliary Move some tests out of tests/ui 2025-05-03 17:22:52 +02:00
bindings-after-at Auto merge of #139949 - matthiaskrgr:rollup-pxc5tsx, r=matthiaskrgr 2025-04-17 11:21:54 +00:00
deref-patterns error early when mixing deref patterns with normal constructors 2025-05-06 18:53:55 -07:00
move-ref-patterns Better span for "make binding mutable" suggestion 2024-07-04 02:02:21 +00:00
rfc-3627-match-ergonomics-2024 compiletest: Make diagnostic kind mandatory on line annotations 2025-04-30 10:44:24 +03:00
rfc-3637-guard-patterns Rollup merge of #141267 - dianne:fix-141265, r=oli-obk 2025-05-21 15:38:08 +02:00
usefulness compiletest: Do not require annotations on empty labels and suggestions 2025-05-03 22:49:23 +03:00
at-in-struct-patterns.rs Parser: better error messages for `@` in struct patterns 2024-09-23 02:12:53 +03:00
at-in-struct-patterns.stderr Parser: better error messages for `@` in struct patterns 2024-09-23 02:12:53 +03:00
box-pattern-type-mismatch.rs Replace some `Option<Diag>` with `Result<(), Diag>` 2024-06-13 06:16:12 +00:00
box-pattern-type-mismatch.stderr Replace some `Option<Diag>` with `Result<(), Diag>` 2024-06-13 06:16:12 +00:00
by-move-pattern-binding.rs Move 100 entries from tests/ui into subdirs 2024-05-20 19:55:59 -07:00
by-move-pattern-binding.stderr Move 100 entries from tests/ui into subdirs 2024-05-20 19:55:59 -07:00
byte-string-inference.rs [AUTO-GENERATED] Migrate ui tests from `//` to `//@` directives 2024-02-16 20:02:50 +00:00
byte-string-mutability-mismatch.rs compiletest: Make diagnostic kind mandatory on line annotations 2025-04-30 10:44:24 +03:00
byte-string-mutability-mismatch.stderr compiletest: Make diagnostic kind mandatory on line annotations 2025-04-30 10:44:24 +03:00
check-struct-pat-fields-stability-issue-138319.rs Pass precise HirId when calling check_stability 2025-03-14 14:51:58 +08:00
check-struct-pat-fields-stability-issue-138319.stderr Pass precise HirId when calling check_stability 2025-03-14 14:51:58 +08:00
complexity_limit.rs Rename `pattern_complexity` attr as `pattern_complexity_limit`. 2025-02-17 09:30:40 +11:00
complexity_limit.stderr Add and update tests to use `pattern_complexity` 2024-03-03 13:10:15 +01:00
cross-crate-enum-pattern.rs Move some tests out of tests/ui 2025-05-03 17:22:52 +02:00
fn-in-pat.rs Move 100 entries from tests/ui into subdirs 2024-05-20 19:55:59 -07:00
fn-in-pat.stderr Update tests for new TRPL chapter order 2024-11-23 08:57:25 -07:00
for-loop-bad-item.rs
for-loop-bad-item.stderr
ignore-all-the-things.rs [AUTO-GENERATED] Migrate ui tests from `//` to `//@` directives 2024-02-16 20:02:50 +00:00
inc-range-pat.rs Move 100 entries from tests/ui into subdirs 2024-05-20 19:55:59 -07:00
incorrect-placement-of-pattern-modifiers.fixed [AUTO-GENERATED] Migrate ui tests from `//` to `//@` directives 2024-02-16 20:02:50 +00:00
incorrect-placement-of-pattern-modifiers.rs [AUTO-GENERATED] Migrate ui tests from `//` to `//@` directives 2024-02-16 20:02:50 +00:00
incorrect-placement-of-pattern-modifiers.stderr Show diff suggestion format on verbose replacement 2025-02-10 20:21:39 +00:00
integer-range-binding.rs [AUTO-GENERATED] Migrate ui tests from `//` to `//@` directives 2024-02-16 20:02:50 +00:00
issue-6449.rs [AUTO-GENERATED] Migrate ui tests from `//` to `//@` directives 2024-02-16 20:02:50 +00:00
issue-8351-1.rs [AUTO-GENERATED] Migrate ui tests from `//` to `//@` directives 2024-02-16 20:02:50 +00:00
issue-8351-2.rs [AUTO-GENERATED] Migrate ui tests from `//` to `//@` directives 2024-02-16 20:02:50 +00:00
issue-10392.rs [AUTO-GENERATED] Migrate ui tests from `//` to `//@` directives 2024-02-16 20:02:50 +00:00
issue-11577.rs [AUTO-GENERATED] Migrate ui tests from `//` to `//@` directives 2024-02-16 20:02:50 +00:00
issue-12582.rs [AUTO-GENERATED] Migrate ui tests from `//` to `//@` directives 2024-02-16 20:02:50 +00:00
issue-14221.rs
issue-14221.stderr Reword the "unreachable pattern" explanations 2024-08-19 21:39:57 +02:00
issue-15080.rs [AUTO-GENERATED] Migrate ui tests from `//` to `//@` directives 2024-02-16 20:02:50 +00:00
issue-17718-patterns.rs
issue-17718-patterns.stderr
issue-22546.rs Revert "Rollup merge of #126618 - mu001999-contrib:dead/enhance, r=pnkfelix" 2024-08-03 07:57:31 -04:00
issue-22546.stderr Revert "Rollup merge of #126618 - mu001999-contrib:dead/enhance, r=pnkfelix" 2024-08-03 07:57:31 -04:00
issue-27320.rs [AUTO-GENERATED] Migrate ui tests from `//` to `//@` directives 2024-02-16 20:02:50 +00:00
issue-28992-empty.rs Move some tests 2024-02-09 15:43:08 -03:00
issue-28992-empty.stderr Move some tests 2024-02-09 15:43:08 -03:00
issue-52240.rs
issue-52240.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
issue-66270-pat-struct-parser-recovery.rs
issue-66270-pat-struct-parser-recovery.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
issue-67037-pat-tup-scrut-ty-diff-less-fields.rs
issue-67037-pat-tup-scrut-ty-diff-less-fields.stderr
issue-67776-match-same-name-enum-variant-refs.rs
issue-67776-match-same-name-enum-variant-refs.stderr
issue-72565.rs
issue-72565.stderr Specify type kind of constant that can't be used in patterns 2024-12-04 20:29:36 +00:00
issue-72574-1.rs
issue-72574-1.stderr Show diff suggestion format on verbose replacement 2025-02-10 20:21:39 +00:00
issue-72574-2.rs
issue-72574-2.stderr Show diff suggestion format on verbose replacement 2025-02-10 20:21:39 +00:00
issue-74539.rs
issue-74539.stderr Show diff suggestion format on verbose replacement 2025-02-10 20:21:39 +00:00
issue-74702.rs
issue-74702.stderr Show diff suggestion format on verbose replacement 2025-02-10 20:21:39 +00:00
issue-74954.rs [AUTO-GENERATED] Migrate ui tests from `//` to `//@` directives 2024-02-16 20:02:50 +00:00
issue-80186-mut-binding-help-suggestion.rs
issue-80186-mut-binding-help-suggestion.stderr Show diff suggestion format on verbose replacement 2025-02-10 20:21:39 +00:00
issue-88074-pat-range-type-inference-err.rs
issue-88074-pat-range-type-inference-err.stderr
issue-88074-pat-range-type-inference.rs [AUTO-GENERATED] Migrate ui tests from `//` to `//@` directives 2024-02-16 20:02:50 +00:00
issue-92074-macro-ice.rs
issue-92074-macro-ice.stderr Change wording 2024-04-29 14:53:38 +02:00
issue-94866.rs
issue-94866.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
issue-95878.rs
issue-95878.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
issue-106552.rs
issue-106552.stderr Update tests for new TRPL chapter order 2024-11-23 08:57:25 -07:00
issue-106862.fixed [AUTO-GENERATED] Migrate ui tests from `//` to `//@` directives 2024-02-16 20:02:50 +00:00
issue-106862.rs [AUTO-GENERATED] Migrate ui tests from `//` to `//@` directives 2024-02-16 20:02:50 +00:00
issue-106862.stderr
issue-110508.rs Handle all `PatExpr`s in dead code analysis 2025-01-29 15:45:13 +00:00
issue-115599.rs Add additional context for non-sructural type constant used in pattern 2024-12-04 20:29:36 +00:00
issue-115599.stderr Add additional context for non-sructural type constant used in pattern 2024-12-04 20:29:36 +00:00
issue-117626.rs [AUTO-GENERATED] Migrate ui tests from `//` to `//@` directives 2024-02-16 20:02:50 +00:00
missing_lifetime.rs Avoid follow-up errors on erroneous patterns 2024-06-13 06:14:32 +00:00
missing_lifetime.stderr Avoid follow-up errors on erroneous patterns 2024-06-13 06:14:32 +00:00
mut-ref-mut-2021.rs Feature gate 2024-03-27 11:20:28 -04:00
mut-ref-mut-2021.stderr Better span for "make binding mutable" suggestion 2024-07-04 02:02:21 +00:00
mut_preserve_binding_mode_2021.rs Gate implicit mutable by-reference bindings behind `mut ref` 2024-05-15 16:55:54 -04:00
mut_preserve_binding_mode_2021.stderr Fix tests 2024-04-15 23:27:22 -04:00
mut_preserve_binding_mode_2024.rs Stabilize the 2024 edition 2024-11-22 11:12:15 -08:00
no-match-tuple-variant-self-ctor.rs Validate that we're only matching on unit struct for path pattern 2024-03-22 20:53:42 -04:00
no-match-tuple-variant-self-ctor.struct_.stderr Validate that we're only matching on unit struct for path pattern 2024-03-22 20:53:42 -04:00
no-match-tuple-variant-self-ctor.tuple.stderr Validate that we're only matching on unit struct for path pattern 2024-03-22 20:53:42 -04:00
no-patterns-in-args-2.rs Move 100 entries from tests/ui into subdirs 2024-05-20 19:55:59 -07:00
no-patterns-in-args-2.stderr Move 100 entries from tests/ui into subdirs 2024-05-20 19:55:59 -07:00
no-patterns-in-args.rs Move 100 entries from tests/ui into subdirs 2024-05-20 19:55:59 -07:00
no-patterns-in-args.stderr Move 100 entries from tests/ui into subdirs 2024-05-20 19:55:59 -07:00
non-constant-in-const-path.rs
non-constant-in-const-path.stderr Tweak output of some const pattern errors 2024-12-04 20:29:36 +00:00
non-structural-match-types-cycle-err.rs borrowck typeck children together with their parent 2025-04-08 00:34:40 +02:00
non-structural-match-types-cycle-err.stderr borrowck typeck children together with their parent 2025-04-08 00:34:40 +02:00
non-structural-match-types.rs borrowck typeck children together with their parent 2025-04-08 00:34:40 +02:00
non-structural-match-types.stderr borrowck typeck children together with their parent 2025-04-08 00:34:40 +02:00
normalize-ty-in-range.rs Structurally resolve in check_ref_cast and calc_adjust_mode 2025-05-08 15:00:17 +00:00
overflowing-literals.rs Uniformly handle HIR literals in visitors and lints 2025-02-05 11:28:24 +00:00
overflowing-literals.stderr Uniformly handle HIR literals in visitors and lints 2025-02-05 11:28:24 +00:00
pat-shadow-in-nested-binding.rs
pat-shadow-in-nested-binding.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
pat-struct-field-expr-has-type.rs
pat-struct-field-expr-has-type.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
pat-tuple-bad-type.rs
pat-tuple-bad-type.stderr
pat-tuple-field-count-cross.rs [AUTO-GENERATED] Migrate ui tests from `//` to `//@` directives 2024-02-16 20:02:50 +00:00
pat-tuple-field-count-cross.stderr Trim suggestion parts to the subset that is purely additive 2025-02-14 00:44:10 -08:00
pat-tuple-overfield.rs
pat-tuple-overfield.stderr Trim suggestion parts to the subset that is purely additive 2025-02-14 00:44:10 -08:00
pat-tuple-underfield.rs
pat-tuple-underfield.stderr Show diff suggestion format on verbose replacement 2025-02-10 20:21:39 +00:00
pat-type-err-formal-param.rs
pat-type-err-formal-param.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
pat-type-err-let-stmt.rs
pat-type-err-let-stmt.stderr
patkind-litrange-no-expr.rs Rename PatKind::Lit to Expr 2025-01-08 07:34:59 +00:00
patkind-litrange-no-expr.stderr
patkind-ref-binding-issue-114896.fixed UI tests: add missing diagnostic kinds where possible 2025-04-08 23:06:31 +03:00
patkind-ref-binding-issue-114896.rs UI tests: add missing diagnostic kinds where possible 2025-04-08 23:06:31 +03:00
patkind-ref-binding-issue-114896.stderr Trim suggestion parts to the subset that is purely additive 2025-02-14 00:44:10 -08:00
patkind-ref-binding-issue-122415.fixed Fix incorrect mutable suggestion information for binding in ref pattern. 2024-03-19 12:28:23 +08:00
patkind-ref-binding-issue-122415.rs Fix incorrect mutable suggestion information for binding in ref pattern. 2024-03-19 12:28:23 +08:00
patkind-ref-binding-issue-122415.stderr Trim suggestion parts to the subset that is purely additive 2025-02-14 00:44:10 -08:00
pattern-bad-ref-box-order.fixed [AUTO-GENERATED] Migrate ui tests from `//` to `//@` directives 2024-02-16 20:02:50 +00:00
pattern-bad-ref-box-order.rs [AUTO-GENERATED] Migrate ui tests from `//` to `//@` directives 2024-02-16 20:02:50 +00:00
pattern-bad-ref-box-order.stderr Show diff suggestion format on verbose replacement 2025-02-10 20:21:39 +00:00
pattern-binding-disambiguation.rs Continue to borrowck even if there were previous errors 2024-02-08 08:10:43 +00:00
pattern-binding-disambiguation.stderr Update tests for new TRPL chapter order 2024-11-23 08:57:25 -07:00
pattern-error-continue.rs compiletest: Make diagnostic kind mandatory on line annotations 2025-04-30 10:44:24 +03:00
pattern-error-continue.stderr compiletest: Make diagnostic kind mandatory on line annotations 2025-04-30 10:44:24 +03:00
pattern-ident-path-generics.rs
pattern-ident-path-generics.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
pattern-tyvar-2.rs
pattern-tyvar-2.stderr Change E0369 diagnostic give note information for foreign items. 2024-06-25 10:00:30 +08:00
pattern-tyvar.rs
pattern-tyvar.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
patterns-dont-match-nt-statement.rs Don't make pattern nonterminals match statement nonterminals 2024-08-26 18:30:15 -04:00
range-pattern-meant-to-be-slice-rest-pattern.rs Stabilize exclusive_range 2024-05-02 19:42:31 -04:00
range-pattern-meant-to-be-slice-rest-pattern.stderr Show diff suggestion format on verbose replacement 2025-02-10 20:21:39 +00:00
rest-pat-semantic-disallowed.rs
rest-pat-semantic-disallowed.stderr
rest-pat-syntactic.rs Use `cfg(false)` in UI tests 2025-04-03 21:41:58 +00:00
rest-pat-syntactic.stderr Bless tests 2024-01-13 12:46:58 -05:00
self-ctor-133272.rs Re-delay a resolve `bug` 2024-11-21 18:40:36 +08:00
self-ctor-133272.stderr Re-delay a resolve `bug` 2024-11-21 18:40:36 +08:00
size-and-align.rs [AUTO-GENERATED] Migrate ui tests from `//` to `//@` directives 2024-02-16 20:02:50 +00:00
skipped-ref-pats-issue-125058.rs Stabilize the 2024 edition 2024-11-22 11:12:15 -08:00
skipped-ref-pats-issue-125058.stderr Stabilize the 2024 edition 2024-11-22 11:12:15 -08:00
slice-array-infer.rs [AUTO-GENERATED] Migrate ui tests from `//` to `//@` directives 2024-02-16 20:02:50 +00:00
slice-pattern-refutable.rs
slice-pattern-refutable.stderr Show diff suggestion format on verbose replacement 2025-02-10 20:21:39 +00:00
slice-patterns-ambiguity.rs
slice-patterns-ambiguity.stderr Show diff suggestion format on verbose replacement 2025-02-10 20:21:39 +00:00
slice-patterns-irrefutable.rs
slice-patterns-irrefutable.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
slice-patterns-nested.rs [AUTO-GENERATED] Migrate ui tests from `//` to `//@` directives 2024-02-16 20:02:50 +00:00
struct-parser-recovery-issue-126344.rs report pat no field error no recoverd struct variant 2024-07-11 00:18:47 +08:00
struct-parser-recovery-issue-126344.stderr report pat no field error no recoverd struct variant 2024-07-11 00:18:47 +08:00
struct-pattern-on-non-struct-resolve-error.rs modify test to side-step platform-dependent stderr output 2025-01-08 00:13:43 +00:00
struct-pattern-on-non-struct-resolve-error.stderr modify test to side-step platform-dependent stderr output 2025-01-08 00:13:43 +00:00
struct-pattern-with-missing-fields-resolve-error.rs Add check for missing fields in enum variant pattern 2025-01-08 00:10:16 +00:00
struct-pattern-with-missing-fields-resolve-error.stderr Add check for missing fields in enum variant pattern 2025-01-08 00:10:16 +00:00
suggest-adding-appropriate-missing-pattern-excluding-comments.fixed [AUTO-GENERATED] Migrate ui tests from `//` to `//@` directives 2024-02-16 20:02:50 +00:00
suggest-adding-appropriate-missing-pattern-excluding-comments.rs [AUTO-GENERATED] Migrate ui tests from `//` to `//@` directives 2024-02-16 20:02:50 +00:00
suggest-adding-appropriate-missing-pattern-excluding-comments.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
type_mismatch.rs Avoid follow-up errors on erroneous patterns 2024-06-13 06:14:32 +00:00
type_mismatch.stderr Avoid follow-up errors on erroneous patterns 2024-06-13 06:14:32 +00:00
uninit-trivial.rs Do not optimize out SwitchInt before borrowck, or if Zmir-preserve-ub 2025-04-08 21:05:20 +00:00
uninit-trivial.stderr Do not optimize out SwitchInt before borrowck, or if Zmir-preserve-ub 2025-04-08 21:05:20 +00:00
unused-parameters-const-pattern.rs Add test/comment about const patterns with unused params 2025-05-22 12:52:46 +01:00